Wie können andere Prozesse Messungen beeinflussen, die mit "Zeit" durchgeführt wurden?


7

Wenn ich einen Prozess mit dem timeBefehl zeitlich festlege, erhalte ich eine Ausgabe für 'real', 'user' und 'sys'.

Mein Verständnis aus dieser Diskussion ist, dass "real" Wandzeit ist, während "Benutzer" und "System" Prozesszeit sind.

Bedeutet dies, dass "Benutzer" und "System" von anderen Prozessen nicht betroffen sind? Mit anderen Worten, wenn der Computer durch andere Prozesse stark oder leicht belastet wird, kann es länger dauern, bis die Wanduhr ("echt") fertig ist, um meinen Prozess abzuschließen. Aber mein Prozess hat möglicherweise nur 5 Sekunden Laufzeit benötigt, obwohl er über 20 Sekunden Echtzeit verteilt war.

Ist mir garantiert, dass mir "5 Sekunden Benutzerzeit" mitgeteilt wird, unabhängig davon, was das System sonst noch tut?

Antworten:


7

Nein. Prozess- / Kontextwechsel sind nicht kostenlos.

Wie viel andere laufende Prozesse Ihre verlangsamen, ist sehr systemabhängig, besteht jedoch aus folgenden Dingen:

  • Jedes Mal, wenn ein Prozessor in einen anderen Adressraum (einschließlich Prozess) wechselt, muss der MMU-Cache geleert werden. Und wahrscheinlich wird der Prozessor L1 zwischengespeichert. Und vielleicht die L2- und L3-Caches. Dies verlangsamt den Speicherzugriff direkt nach der Wiederaufnahme Ihres Prozesses (und dies wird gegen Ihre "Benutzer" -Zeit angerechnet).

  • Wenn auf einer SMP- (oder Multi-Core-) Box zwei Prozesse versuchen, auf dieselben Teile des (physischen) RAM zuzugreifen, müssen die Prozessoren zusammenarbeiten. Das braucht Zeit. Dies geschieht häufig auf Architekturebene, sogar unterhalb des Betriebssystems. Dies wird gegen die Zeit Ihres Benutzers oder Ihres Systems angerechnet, je nachdem, wann es getroffen wurde.

  • Das schnelle Sperren des Kernels (das keinen anderen Prozess plant) wird auf Ihre Systemzeit angerechnet. Dies ähnelt dem obigen Punkt.

  • Bei NUMA-Boxen werden Sie möglicherweise auf einen anderen Knoten verschoben. Der Speicherzugriff kann jetzt domänenübergreifend und damit langsamer sein

  • Andere Prozesse können die Energieverwaltungsentscheidungen beeinflussen. Wenn Sie beispielsweise mehr Kerne anbringen, wird die Geschwindigkeit von Intel Turbo Boost verringert, um das Prozessorpaket innerhalb seiner elektrischen und thermischen Spezifikationen zu halten. Auch ohne Turbo-Boost kann der Prozessor aufgrund übermäßiger Hitze verlangsamt werden. Es kann auch umgekehrt funktionieren - mehr Last kann dazu führen, dass der CPU-Geschwindigkeitsregler die CPU-Geschwindigkeit erhöht.

Es gibt andere gemeinsam genutzte Ressourcen in einem System. Wenn das Warten auf sie nicht dazu führt, dass Ihr Prozess schläft, wird dies auf die Zeit Ihres Benutzers oder Ihres Systems angerechnet.


Vielen Dank für die ausführliche Antwort! Ich bin jedoch enttäuscht, dass dies der Fall ist. Irgendwelche Vorschläge, wie ich, wenn ich die alleinige Kontrolle über ein System habe, andere Prozesse "abhören und leise sein" kann, während ich etwas vergleiche? Ich möchte keine zufälligen Spitzen in meinem Diagramm, weil es sich um einen nicht verwandten Cron-Job handelt. Im Moment laufe ich ein paar Mal und nehme Durchschnittswerte, aber das ist klobig.
Nathan Long

@ NathanLong Nun, der offensichtliche Weg ist, Cron zu stoppen und so viel anderes wie möglich. Sie könnten es auch sched_setschedulermit SCHED_FIFOeiner hohen Priorität versuchen . Das sollte so ziemlich alles andere aufhalten , zumindest auf einem Single-Core-System. Aber ich denke, dies sollte am besten als neue Frage gestellt werden, zusammen mit den Details.
Derobert

2

Bedeutet dies, dass "Benutzer" und "System" von anderen Prozessen nicht betroffen sind?

userDie Zeit kann von nichts anderem direkt beeinflusst werden. sysZeit kann, da es E / A enthalten kann. Wenn mehrere Prozesse gleichzeitig versuchen, auf ein Gerät zuzugreifen, ist das Gerät selbst möglicherweise ausgelastet. Wenn Ihr Prozess aktiv geplant ist, muss das System auf das Gerät warten. Es sollte nicht viel ausmachen, da das Warten meistens passiv ist - was die realZeit verlängert -, aber wenn es sich um wiederholte Abfragen handelt, ist dies aktiv.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.