sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #53846
low latency for linux
Hej derude
Jeg har nogle spørgsmål om hvordan man får den lavest mulige (konsistente)
latency under linux,
håber der er nogle derude som kan/vil hjælpe...
Jeg har nu fået kompileret et 2.4.19 kerne med lowlatency patches til
2.4.19pre10, og det booter ihvertfald.
Men er det i orden at bruge et low latency patch til 2.4.19pre10 på en
2.4.19 final kerne ?
Eller er jeg nødt til at bruge præcist den samme kerne som patchet er
skrevet til ?
Jeg benytter for at undersøge latency et modul skrevet af folkene bag
linux device drivers second edition. Modulet registrerer sig på
parallelporten og ekkoer
alle bytes man sender til det videre til parallelporten. En lus i denne gør
så at der
genereres et interrupt, som aktiverer modulet igen. En streng med timeofday
kan nu læses
fra modulet. I mit test program har jeg nu 2 threads, 1 som med ca 125 us
mellemrum skriver
til modulet, og i den anden thread læser jeg fra modulet.
Så sammenligner jeg den aktuelle tid med den streng som er læst fra modulet
og forskellen
kalder jeg min latency.
I en standard 2.4.18 kerne får jeg typiske latencies på 4-5 us, men en gang
imellem
får jeg tider i millisekund størrelsen (lad os sige 10 - 20 ms).
Det er ikke acceptabelt til det jeg skal bruge så jeg fandt et site med low
latency patches.
Desværre kunne jeg altså ikke finde et til hverken 2.4.18 eller 2.4.19
derfor spørgsmålet ovenfor.
Hvis det er ok det jeg har gjort med patchet, kan nogen så svare mig på
hvordan jeg aktiverer
low latency ?
Da jeg compilede valgte jeg foruden low latency understøttelse, at aktivere
kontrol via syscontrol,
men vil det sige at jeg default ikke kører low latency ? og hvis det er
tilfældet hvordan slår
jeg det så til ?
Uden at gøre noget er det ikke
vildt imponerende hvad jeg har opnået (faktisk ingen forskel) idet jeg
har målt 2.5 ms som worst case i første forsøg over ca 2 minutter (1 mill.
interrupts)
På sitet med low latency patchene stod der at man kunne opnå worst case
latency på 0.5 millisekunder,
hvilket netop er hvad jeg har brug for. (det kan jeg lige akkurat leve med)
så noget har jeg gjort galt,
men hvad ?
Mvh Lars
Follow ups