fork a thready

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Středa Červen 30 10:52:34 CEST 1999


On Mon, 28 Jun 1999, Petr Novotny wrote:

> Ted se nezlobte, budu-li rikat nesmysly, ale takhle jsem to slysel: 
> Kdyz Intel procesor prepina kontext mezi procesy, musi toho 
> reloadovat vyrazne vice, nez kdyz prepina kontext mezi thready - v 
> druhem pripade jen reloaduje obsahy registru a nedela vubec nic s 
> pameti. Switch je tedy rychlejsi. Neumim odhadnout, o kolik 
> procent se tu jedna. Navic nevim, zda pri context switchi mezi 
> procesy neni cast pametove cache invalidovana (meni ci nemeni se 
> selektory?).

Asi nejvyznamnejsimi naklady pri task switchi na intelskych CPU je opravdu
zmena segmentovych registru (musi se znova nacist z tabulky deskriptor)
to, ze se pri vymene strankovacich tabulek (zmena registru CR3) kompletne
vysype TLB (coz je takova mala kes, kam se uklada mapovani linearnich
adres na fyzicke).

Nicmene Linux pouziva za normalniho pocasi pouze nekolik malo selektoru,
ktere by si mely najit misto nekde v kesi, takze prvni naklad by nemel byt
moc velky (v pripade, ze se na to casto saha), a druha vec se projevuje
hlavne pri velkem mnozstvi prepnuti mezi malymi programky (predevsim u
mikrojader . . . ted nemyslim NT, ale treba Mach nebo L4), vzhledem k
tomu, jak je TLB na intelech mrnava, tak v Linuxu se projevi asi jen to,
ze se pri vysypani vysypou i polozky patrici jadru, ktere by tam jinak
mohly zustat (poznamka: pro L4 bylo navrzeno, aby male tasky sdilely jeden
linearni prostor a prepinaly se jen zmenou segmentovych registru, lepsi
reseni by ovsem bylo, kdyby se jisty nejmenovany vyrobce cipu poucil u
konkurence a vylepsil TLB tak, aby takove triky nebyly potreba).

Pokud nekoho zajima microbenchmarking a ma patricne vybaveni, aby zmeril,
jestli task switch trva 183 nebo 189 mikrosekund, tak ma moznost si
pohrat.

--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."



Další informace o konferenci Linux