Dlaczego Chrome ma tak wiele procesów na moim komputerze?

21

Mam prawie 20 procesów dla Google Chrome (mając tylko otwarte 4 karty, wszystkie z pustym kodem HTML), całą pamięć pamięci i albo mówiąc futex_wait_queue_me lub poll_schedule_timeout.

Mój fan oszalał na punkcie tego wszystkiego i jeden z procesorów pochłania cały procesor, co się dzieje?

(Zdarza się również w przypadku chromu)

Dante Ashton
źródło
Być może pamięć jest prawdopodobnie współdzielona między procesami. Spójrz/proc/$pid/smaps i sprawdź, czy Pss jest niższy niż Rss. Jeśli tak, to jest współdzielony.
karthick87
3
tutaj znajdziesz dodatkowe informacje stackoverflow.com/questions/2019500/…
NES

Odpowiedzi:

29

Chrome renderuje każdą stronę (kartę) w innym procesie. Dzięki temu jest szybszy na maszynach wieloprocesorowych.

Zachowanie, które widzisz, jest normalne.

futex_wait_queue_meodnosi się do rodzaju blokady mutex (szybkie wzajemne wykluczanie przestrzeni użytkownika), która służy do planowania pracy wielu procesów na jednym procesorze. Stan wskazuje, że proces jest w kolejce, aby otrzymać blokadę.

Czasami niezwykle wysokie oczekiwanie na blokadę może być spowodowane dławieniem procesora, ale najczęściej jest to normalne. Spójrz na rodzaj strony, którą otworzyłeś; Być może coś takiego jak Flash powoduje duże obciążenie procesora.

Aby zobaczyć, które karty lub wtyczki spowalniają system lub zapełniają pamięć, możesz użyć wbudowanego menedżera zadań Chrome:

Kliknij pasek kart prawym przyciskiem myszy i wybierz „Menedżer zadań”

alternatywny tekst

W moim przykładzie javascript omgubuntu używa dużo procesora.

Stefano Palazzo
źródło
5
Renderuje każdą kartę jako osobny proces - uruchamia ją we własnym „piaskownicy”, aby zminimalizować ryzyko, że wirus zabije całą przeglądarkę. Ma sens?
jrg
5
Każda wtyczka (flash itp.) Jest również własnym procesem. I to nie tylko zatrzymuje wirusy - jeśli flash ulegnie awarii lub nastąpi awaria jednej karty, możesz po prostu zabić kartę / wtyczkę / cokolwiek i pozostawić resztę swoich danych. Jest to uważane za przydatną funkcję, a inne przeglądarki starają się to naśladować. Wierzę, że Mozilla pracuje nad jakąś radykalną zmianą w systemie zarządzania kartami Firefoksa tylko po to, aby zaimplementować tę funkcję, ale nie śledzę ich ściśle i nie wiem, czy planowane jest wydanie FF4.
Daniel
@ jrgifford Masz absolutną rację, zbadałem ją i usunąłem niejasności. To pełny proces, a nie tylko wątek.
Stefano Palazzo
@Daniel God Mam nadzieję, że nie ... Kiedy mam mnóstwo kart otwartych i Flash zabija jedną z nich, przynajmniej połowa z nich spada. Zdarza się to tylko w Chrome, nigdy firefox ...
Nick Pascucci
1
@jrgifford You lucky jerk. Uh ... Tak, ponieważ przeglądarka jest jedyną rzeczą, która może pochłaniać zasoby systemowe, prawdopodobnie (i słusznie) czują się tak, jakby mieli licencję na piaskownicowanie każdego wystąpienia Flasha jako własnego procesu. Wydaje mi się jednak, że byłoby to nieco ekstremalne dla wersji Chrome innej niż OS.
Daniel
3

Posiadanie wielu procesów to normalne zachowanie Chrome / Chromium.
futex_wait_queue_me lub poll_schedule_timeout dla tych procesów wydaje się być w porządku.

Możesz użyć monitora systemu, aby sprawdzić, czy jeden konkretny proces zużywa za dużo procesora. Czasami błędne skrypty javascript lub programy flashowe zaczynają używać wszystkich procesorów.

Jeśli uważasz, że tak jest, upewnij się, że nie masz niezapisanych danych w niektórych aplikacjach internetowych i po prostu zakończ proces. Chrome zaproponuje wtedy ponowne załadowanie strony. Zwykle rozwiązuje problem.

Maxime R.
źródło