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