pretoceny uptime :)

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Sobota Duben 13 20:35:40 CEST 2002


On Fri, 12 Apr 2002, Jan Kasprzak wrote:

> :  Ano...jedna instrukce navic (na i386) pri kazdem preruseni, to mame
> :  nejakych 100-300 tiku za sekundu (pro HZ = 100), to muze lecktery pocitac
> :  zpomalit i o jednu miliontinu!! ;)
> :  
> 	A spinlock kolem. Urcite vic nez 1 instrukce.

Na co spinlock? Kvuli kolizi dvou zapisu je zbytecny: ty by se mely
odehravat jen v preruseni od hodin a ty by mely byt serializovane. Kvuli
kolizi zapisu a cteni je take zbytecny, protoze:

1. vetsina kodu vystaci jen s jiffies mod 2^32 (ze stejneho duvodu, proc
system nezkolabuje nyni, kdyz se to pretoci), a tudiz jen atomicky
nacte dolni pulku hodnoty,

2. kod, ktery potrebuje obe hodnoty, je muze precist nasledujicimi
prikazy (v praxi by to muselo byt v asembleru, nebo by se tam muselo
rozhodit par volatile, aby to kompilator nevyoptimalizoval do
ztracena):

         uint32_t jlo, jhi;
         do {
             jhi = jiffies_high;
             jlo = jiffies_low;
         }
         while (jhi != jiffies_high);

Donekonecna se ta smycka zacyklit nemuze: to by se muselo inkrementovani
jiffies zastavit, nebo by se ten proces musel opakovane blokovat na onech
radove 500 dni -- uvnitr jadra!!! Spatne vysledky by to mohlo davat jedine
v pripade, ze by zapisy 32-bitovych hodnot do pameti nebyly atomicke, nebo
ze by se dva zapisy provedene po sobe jednim CPU mohly na jinem CPU jevit,
ze byly provedene v opacnem poradi -- ovsem i kdyby uz navrhari procesoru
byli dost sileni, aby neco takoveho udelali, pak by to stejne melo jit
jednoduse vyresit nejakou "barierovou instrukci" (jinak nevim, jak by
nekdo mohl z takovych CPU postavit fungujici SMP pocitac).


On Fri, 12 Apr 2002, Libor Chocholaty wrote:

> > > A coz to resit 64bit citacem? Nebylo by to elegantni oddaleni problemu?
> >
> > Rozsireni citace na 64 bitu by problem oddalilo asi o 10 miliard let.
> > Myslim, ze na to lze bez problemu aplikovat pristup meho kolegy, ktery
> > prohlasil (necitovano presne), "vim, ze <program> ma problem Y10K-problem,
> > ale odmitam to resit, dokud to nebude aktualni". :)
> >
> Ale jak vidno, tendo problem _je_ aktualni. Nekterym z nas znemoznil konani
> oslavy. :-) Myslim, ze se najdou i padnejsi duvody...

Ja jsem se asi nevyjadril uplne srozumitelne: mel jsem na mysli, ze
po rozsireni citace na 64 bitu by se problem oddalil tak daleko, ze by se
z praktickeho hlediska definitivne vyresil.


--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