schlittermann |
Seit etwa Kernel 2.4.18 scheint es ein Problem zu geben, wenn der
apm-Treiber geladen und der idle_threshold
kleiner
als 100% ist (CONFIG_APM_CPU_IDLE
).
Sobald das Gast-System (das System in der virtuellen Maschine) idle ist, werden alle zeitabhängigen Aktionen sehr verzögert. Eine "Gast"-Sekunde wird dann ganz schnell zu 2 ... 10 "Host"-Sekunden.
Testen kann man diese Verhalten, wenn das Gast-System ziemlich idle ist und dann ein Ping gestartet wird. Normalerweise ist das Intervall zwischen den einzelnen Pings etwa eine Sekunde. Wenn man die Gast-Systemzeit vor und nach dem Ping vergleicht, sind auch etwa nur so viele Sekunden vergangen, wie Echo-Requests versand wurden. Sobald das Gast-System beschäftigigt wird (z.B Maus-Bewegungen), nähern sich die Gast-Sekunden den realen an.
Die schnellste Lösung - die CPU-Idle-Calls zu unterbinden - ist
nicht befriedigend. Ich würde die Idle-Calls gerne haben, wenn
gerade kein VMWare läuft. Also erweiterte ich den apm-Treiber, so
daß es jetzt möglich ist, den Idle-Schwellwert zur Laufzeit zu
verändern. Es gibt nun im proc-Dateisystem einen neuen Eintrag:
/proc/sys/kernel/idle_threshold
.
Um den Proc-Eintrag zu aktivieren, muß der Treiber mit einer
Idle-Schwelle unterhalb von 100% geladen werden. Entweder, in dem
bei der Kernel-Konfiguration die "CPU Idle" Option gesetzt wird,
oder in dem an den Treiber idle_threshold=95
übergeben
wird.
Wenn das getan ist, dann kann jetzt von/nach
/proc/sys/kernel/idle_threshold
gelesen bzw.
geschrieben werden.