Hohe "system"-load, statt user

FreeBSDuser

Well-Known Member
Hallo,

immer wenn ich Programme starte geht die CPU-load bei "system" statt bei user hoch, ist das normal ??

Code:
CPU states:  9.0% user,  0.0% nice, 45.1% system,  0.4% interrupt, 45.5% idle
[\CODE]

Ich kann mich nicht erinnern das, dass früher auch so war.

Wollt nur wissen ob das normal ist, und wenn nicht, vielleicht auch in paar Tips.

PS: in Top mit "^S" wird der Load trotzdem bei dem jeweiligen Prozess angezeigt, und nicht bei irgendeinem Kernel ding.
 
Kommt drauf an, was für eine Art von Programm Du startest. Eines, das viel I/O Last erzeugt oder viele Systemaufrufe macht hat sicher mehr System-Time als eine Anwendung, die viel rechnet, also "nur" ein paar Werte in verschiedenen Registern verknüpft...

System-Time ist die Zeit, in der der Kernel rechnet und nicht in einem Interrupt Handler verbracht wird. Meist rechnet der Kernel weil ein User-Programm einen Systemaufruf gemacht hat. Wenn Du sicher bist, dass Dein Programm viele und teuere Systemaufrufe macht, dann ist eigentlich alles in Ordnung. System Time wird aber auch anfallen, wenn Du z.B. "teure" I/O hast wie verschlüsselte Festplatten.

Wenn Du meinst, dass dem nicht so ist, dann solltest Du was unternehmen. Als erstes musst Du schauen, dass Kernel und Userland aus den selben Quellen übersetzt wurden. Danach kommen die üblichen Tools wie top, vmstat, truss usw. zum Einsatz.
 
Ich hab nen Ktrace gemacht, ich hab (grep -c " stat(" zufolge) bei einem Aufruf von gcalctool (Taschenrechner) 528447 stat calls.

die Einträge sehen so aus:
Code:
3540 gcalctool 0.000033 CALL  stat(0x80f9c00,0xbfbfde70)

ist das normal?
Ansonsten gibt es keine Einträge die Ausgesprochen lange dauern.

PS: ich hab von disen Trace Geschichten jetz nich so die Ahnung..

EDIT:

7510 fstat calls
528447 stat calls
 
Hmm,

es scheint, dass es tatsächlich an geli liegt. Ich habe aber nur die /home partition über geli laufen, darum frage ich mich warum das den startvorgang so stark beeinflusst, grade weil in den Sekunden blinkt die HDD-LED nicht. Ohne geli sind es nur 7500 (f)stat() calls insgesamt, ich weis zwar nicht was das bedeuted, werde auch nicht schlau draus.

Das "Phänomen" tritt auf meiner Workstation und auf meinem Notebook auf.

Komisch, wer etwas weis kann sich vielleicht melden, ich würde mich echt freuen.
 
Naja, keine Ahnung was bei Dir genau vor sich geht. Aber grundsätzlich funktioniert das Starten eines Programms in mehreren Schritten. Das Finden und Lesen der Blöcke von Festplatte (der Teil, der die HDD LED blinken lässt) ist nur ein Teil des gesamten Startvorgangs. Das Entschlüsseln der Blöcke passiert im Speicher, dauert Zeit und fasst die HDD gar nicht mehr an, d.h. die HDD LED blinkt auch nicht. Vom Laden (ELF Loading, etc.) des Programms, Erzeugen eines Prozesses, etc. reden wir hier ja noch gar nicht. All das sind Aufgaben des Kernels, d.h. werden der System Time zugerechnet und lassen die HDD LED mit großer Wahrscheinlichkeit nicht aufleuchten.

Warum Du so viele stat(2) Aufrufe siehst, kann ich Dir nicht sagen. Das ist möglicherweise normal, vielleicht aber auch nicht. Wenn Du ein System hast, dessen Verhalten Du als "normal" ansiehst, dann kannst Du ja einfach mal vergleichen.
 
Zurück
Oben