linux-l: Messung kurzer Zeiten

thomsen at cs.tu-berlin.de thomsen at cs.tu-berlin.de
So Jul 20 14:48:09 CEST 1997


In message <19970720134559.55409 at jane.biologie.fu-berlin.de>, Christoph Lange w
rites:
> 
> Hallo, Linuxer!
> 
> Wie kann ich kurze Zeiten mit dem Computer möglichst genau messen? Ist
> es da genauer, eine Differenz mit gettimeofday() zu messen oder kann
> ich mich eher auf meine Soundkarte verlassen.
> 
> Frage also: Wenn ich bei einer Samplingrate von 20050 Hz 20050 Samples
> eingelesen habe, ist dann auch 1 sec vorbei? - Oder läßt sich das
> alles wirklich genau nur mit RT-Linux machen?
Also 1 s ist _mindestens_ vergangen (wenn die Quartz mitspielen ;)
Nachdem die Samples eingelesen wurden, wird der lesende Prozess wieder
als lauffaehig markiert (synchronous i/o assumed). Wann er dann tatsaechlich
die CPU wieder bekommt ist eine andere Frage. Wenn es ein gewoehnlicher
Prozess ist, konkurriert er mit anderen 'runnable' Procs. Es vergehen also
wenige ms bis viele s (oder minuten, wenn das System dem Tode nahe ist). In
einem nicht allzu ausgelasteten System (vor allem kein 'trashing') werden
wohl weniger als ein paar 1/10 s vergehen.

Wenn Du genauer an die 1.0 s heran willst, kannst Du den lesenden prozess
in die POSIX RT Warteschlange schieben. Dann konkurriert er nur noch mit
anderen POSIX RT procs (normalerweise kein anderer). Dann stehlen aber
immer noch Interrupts Dir die Rechenzeit (wenn auch normalerweise recht
wenig - schwammig ausgedrueckt aber wie sollte man dazu konkretere Aus-
sagen machen ?).

Wenn Du den Zeitverlust durch Interrupts minimieren willst, dann musst Du
tatsaechlich Linux RT verwenden (dort gibt es wohl auch Bsp. mit Sound-
karten).

Guenther




Mehr Informationen über die Mailingliste linux-l