Warum hat Chrome so viele Prozesse auf meinem Computer?

21

Ich habe fast 20 Prozesse für Google Chrome (während nur 4 Tabs geöffnet sind, alle mit Barebones-HTML), die alle den Speicher überfrachten und entweder futex_wait_queue_me oder poll_schedule_timeout sagen.

Mein Fan wird durch all das wahnsinnig und eine der Prozessoren frisst meine gesamte CPU auf. Was passiert?

(Passiert auch auf Chrom)

Dante Ashton
quelle
Möglicherweise wird der Speicher von Prozessen gemeinsam genutzt. Überprüfen Sie, /proc/$pid/smapsob Pss niedriger als Rss ist. Ist dies der Fall, wird er gemeinsam genutzt.
karthick87
3
Hier finden Sie einige zusätzliche Informationen zu stackoverflow.com/questions/2019500/…
NES

Antworten:

29

Chrome rendert jede Seite (Registerkarte) in einem anderen Prozess. Dies macht es auf Multiprozessor-Rechnern schneller.

Das Verhalten, das Sie sehen, ist normal.

futex_wait_queue_mebezieht sich auf eine Art von Mutex- Sperre (schneller gegenseitiger Ausschluss durch Benutzer), mit der viele Prozesse auf einem Prozessor geplant werden. Der Status zeigt an, dass sich Ihr Prozess in der Warteschlange befindet, um die Sperre zu erhalten.

Manchmal kann eine ungewöhnlich hohe Wartezeit auf eine Sperre durch CPU-Drosselung verursacht werden. Meistens ist dies jedoch normal. Schauen Sie sich die Art der Website an, die Sie geöffnet haben. Vielleicht verursacht so etwas wie Flash die hohe CPU-Auslastung.

Mit dem integrierten Task-Manager von Chrome können Sie feststellen, welche Registerkarten oder Plug-ins Ihr System verlangsamen oder Ihren Speicher füllen:

Klicken Sie mit der rechten Maustaste auf die Registerkartenleiste und wählen Sie "Task-Manager".

Alt-Text

In meinem Beispiel verwendet omgubuntus Javascript viel CPU.

Stefano Palazzo
quelle
5
Jeder Tab wird als ein anderer Prozess gerendert - er wird in einer eigenen "Sandbox" ausgeführt, um die Wahrscheinlichkeit zu minimieren, dass ein Virus den gesamten Browser tötet. Sinn ergeben?
jrg
5
Jedes Plugin (Flash, etc.) ist auch ein eigener Prozess. Und es stoppt nicht nur Viren - wenn Flash abstürzt oder ein Tab abstürzt, können Sie einfach das Tab / Plugin / was auch immer töten und den Rest Ihres Materials intakt lassen. Dies wird als praktische Funktion angesehen, und andere Browser arbeiten daran, dies nachzuahmen. Ich glaube, Mozilla arbeitet an radikalen Änderungen am Tab-Management-System von Firefox, nur um diese Funktion zu implementieren, aber ich verfolge sie nicht genau und weiß nicht, ob es für FF4 geplant ist.
Daniel
@jrgifford Du hast vollkommen recht, ich habe es untersucht und die Mehrdeutigkeit beseitigt. Es ist ein vollständiger Prozess, nicht nur ein Thread.
Stefano Palazzo
@ Daniel God Ich hoffe nicht ... Wenn ich Tonnen von Tabs offen habe und Flash einen von ihnen tötet, geht mindestens die Hälfte von ihnen unter. Es passiert immer nur in Chrome, nie Firefox ...
Nick Pascucci
1
@ jrgifford Du Glückspilz. Ähm ... Ja, da der Browser das einzige ist, das Systemressourcen verschlingen kann, haben sie wahrscheinlich (und zu Recht) das Gefühl, dass sie die Lizenz haben, jede Instanz von Flash als eigenen Prozess zu sandboxen. Aber das wäre ein bisschen extrem für die Nicht-Betriebssystem-Version von Chrome, denke ich.
Daniel
3

Mehrere Prozesse zu haben, ist ein normales Verhalten von Chrome / Chromium.
Der Status futex_wait_queue_me oder poll_schedule_timeout für diese Prozesse scheint in Ordnung zu sein.

Sie können den Systemmonitor verwenden, um festzustellen, ob ein bestimmter Prozess zu viel CPU verwendet. Manchmal verwenden fehlerhafte Javascripts oder Flash-Programme die gesamte CPU.

Wenn Sie der Meinung sind, dass dies der Fall ist, stellen Sie sicher, dass in einigen Web-Apps keine nicht gespeicherten Daten vorhanden sind, und beenden Sie den Vorgang. Chrome schlägt Ihnen dann vor, die Seite neu zu laden. Es löst normalerweise das Problem.

Maxime R.
quelle