wir nutzen hier den 'sar' um die Systemaktivität
während unserer Tests zu monitoren.
Dazu starten wir den 'sadc' (system activity data collector)
im Hintergrund wie folgt:
/usr/lib/sa/sadc 1 86400 /tmp/sar.bin &
[<pid>]
Nach den Tests und 'kill <pid>' werden die Daten z.B. mittels
/usr/bin/sar -u -f /tmp/sar.bin > /tmp/sar-cpu.txt
aufbereitet.
So weit so gut. Selbst bei moderater Last habe ich im TXT File
nicht für jede Sekunde einen Eintrag. Bei höherer Last und wenn
zusätzlich einige Real-Time-Prozesse aktiv sind haben wir schon
Lücken von 5 Minuten (!) gesehen.
Mittels
/usr/bin/chrt -f -p 4 <pid> # change real time prio
habe wir dann die Priorität des 'sadc' Prozesses auf eine
seeeehr hohe Real-Time-Priorität gesetzt. Das Ergebnis war
nicht besser.
Ich habe mir den Code von 'sadc' mal angeschaut. Es wird mit
alarm(1) und pause()
gearbeitet. 'sadc' verläßt sich also auf den Kernel, der ihn
im Sekundenrythmus wecken soll.
Was ist die Ursache für die Lücken?
Warum hilft eine RT-Prio nicht?
Liegt's am Scheduler von Linux?
Sind die binären Daten des 'sadc' evtl. doch komplett und
'sar' hat ein Problem bei der Aufbereitung?
Danke
Toni