[linux] uptime-critical average load

Robert Varga nite na hq.alert.sk
Čtvrtek Listopad 22 12:06:12 CET 2001


On Thu, 2001-11-22 at 11:23, Matus "fantomas" Uhlar wrote:
> -> Tak potom o com si vlastne chcel hovorit, ked si porovnal fork bombu s
> -> tym, co Ti masinu neposlalo do kolien, ked o tom bola rec?
> 
> Napisane bolo: 
> 
> "Klasicka fork() bomba je aj tak najlepsia :-)"
> 
> a ja som oponoval. viem ze to autor nemyslel uplne doslova len som pridal
> svoje argumenty.

Ale myslel. Este raz:

1. fork() je syscall, takze vyzaduje context switch, co nieje pre
procesor lacna operacia (PII/PIII cca. 6000 clockov). Pocas tohto
switchu su zakazane interrupty -=> procesor nereaguje na ZIADNE
interrupty, pretoze nema presne definovany stav (TLB flush, atd.)

2. funkcia schedule() musi vypocitat hodnotu "goodness" pre vsetky
procesy, ktore su TASK_RUNNABLE (v nasom pripade uplne vsetky z fork
bomby)

3. pocas schedule() su tiez zakazane interrupty, aby sa nemenila
taskqueue.

Podtrhnuto, secteno:

Kolko IO spravis na disk, ked sa ti nestihne dorucit IRQ, ze IO
completed ?
Kolko RX queue overflowov budes mat na sietovici, ked ti nestihne
dorucit IRQ, ze zober si ten buffer, mam ho fakt plny ? (Z toho vyplyva:
Kolko TCP retransmittov musis spravit, pretoze si si nevsimol ACK?)

Toto je krasny utok na OS. Pokial robis disk IO, tak mozes zaplnit
zbernicu, ale nezarves ju tak, aby sa ti veci prestali po nej hybat.
Asynchronne IO ta (ako utocnika) dostane.






Další informace o konferenci linux