Forum

Safari Aktivitätsanzeige Auslastung CPU
August 12, 2009, 19:37:24
wenn ich so mit Safari surfe und mir die Auslastung der beiden Prozessoren in der Menüleiste anschaue, fällt mir auf, dass die Auslastung der Prozessoren wechselt.
In der Aktivitätsanzeige ist zu sehen, dass die größte Auslastung durch Safari verursacht wird.

Frage a)
Kann man bei Betrieb irgendwie erkennen, wenn ich in Safari mehrere Tabs offen habe, welches Tab die meiste Auslastung verursacht ? Also kein Tab schliessen.

Frage b)
Wie ist das so mit Programmen. Werden beide Prozessoren gleichmässig oder ungleichmässig auslastet durch jeweils ein Programm ?

Jochen
_______
Wenn Du es eilig hast, gehe langsam.

mbs

Re: Safari Aktivitätsanzeige Auslastung CPU
Antwort #1: August 12, 2009, 22:49:02
Zitat
wenn ich so mit Safari surfe und mir die Auslastung der beiden Prozessoren in der Menüleiste anschaue, fällt mir auf, dass die Auslastung der Prozessoren wechselt.

Die wechselt alle paar Millisekunden, immer wenn das Betriebssystem die Prozesse neu verplant. Die Anzeige wird aber nur höchstens ein Mal pro Sekunde aktualisiert.

Wenn die Auslastung nicht bei 2 x 100% liegt, werden die Prozessoren zwischendurch übrigens immer wieder abgeschaltet.

Zitat
Kann man bei Betrieb irgendwie erkennen, wenn ich in Safari mehrere Tabs offen habe, welches Tab die meiste Auslastung verursacht ?

Nein.

Zitat
Werden beide Prozessoren gleichmässig oder ungleichmässig auslastet durch jeweils ein Programm ?

Wenn ein Programm "multi-threaded" geschrieben ist, sich also selbst in mehrere Handlungsstränge aufteilen kann, die es selbst verwalten muss, dann verteilt Mac OS X dessen Threads möglichst gleichmäßig auf alle vorhandenen Prozessoren.

Wenn ein Programm nicht multi-threaded ist, dann kann es sowieso nur einen einzigen Prozessor nutzen. Dann besteht es nur aus einem Haupt-Thread, der von Mac OS X aber ebenso "gerecht" mit den konkurrierenden Threads anderer Programme auf die CPUs verteilt wird.

In beiden Fällen darf man sich das aber nicht so vorstellen, dass ein Programm oder ein Thread auf einem Prozessor "bleibt". Da Programme fast ständig auf irgendwelche externen Ereignisse warten müssen (z.B. bis der Benutzer die Maus bewegt oder Daten von der Festplatte eingetroffen sind), werden sie zwischendurch sowieso immer wieder komplett vom Prozessor geworfen und "schlafen" gelegt. Warten gerade alle Prozesse auf externe Hardware-Signale, werden die Prozessoren wie gesagt sogar ausgeschaltet.

Trifft das erwartete Signal ein, wird der Prozess wieder geweckt und auf irgendeinen Prozessor platziert. Auf welchen ist völlig egal. Die Prozesse und Threads "hüpfen" deshalb zwischen den Prozessoren hin und her.

Es gibt Betriebssysteme, bei denen ein Thread sich wünschen kann, an einen bestimmten Prozessor gekettet zu bleiben ("Prozessoraffinität"). In Mac OS X ist das technisch nicht möglich. Damit ist gewährleistet, dass das Betriebssystem immer das letzte Wort über die Prozessverplanung hat und kein Programm Teile der Hardware an sich reißen kann.

Auch ein Thread, der Dauerläufer ist, also so viel zu tun hat, dass er 100% Auslastung auf einem Prozessor erzeugt, wird von Mac OS X spätestens nach 10 Millisekunden vom Prozessor geworfen, um zu prüfen, ob nicht andere Prozesse auch was zu tun haben. Hierdurch wird die gerechte Verteilung der Prozessorkapazität an alle Programme sichergestellt ("preemption").