Dlaczego Chrome grupuje moje karty w procesy i jak mogę je zatrzymać?

8

Zauważyłem, że w Chrome grupuje wszystkie karty w jeden proces renderowania, przynajmniej dla mnie. Jest to problem, ponieważ sprawia, że ​​Chrome naprawdę wolno ma 150k pamięci RAM do sortowania.
Czy jest jakiś sposób, aby zmusić ją do uczynienia każdej karty osobnym procesem?

digitxp
źródło

Odpowiedzi:

4

Zgodnie z dokumentacją Chrome istnieje --process-per-tabprzełącznik wiersza polecenia, który robi to, co chcesz.

Whitequark
źródło
Próbowałem tego wcześniej i, co dziwne, sprawiło, że wszystkie zakładki przechodziły w jeden proces, wcześniej wszystkie były w dwóch procesach. Prawdopodobnie jest to rozszerzenie, które powoduje, że karty stają się „połączone ze skryptem”.
digitxp
@digitxp: czy próbowałeś wyłączyć wszystkie rozszerzenia lub uruchomić Chrome w trybie incognito, co działa tak samo (jeśli nie skonfigurowano inaczej)?
whitequark
3

Dla mnie jeszcze nie rozwiązali problemu.

Oto kilka linków omawiających ten problem bardziej szczegółowo:

http://code.google.com/p/chromium/issues/detail?id=81877

http://www.google.com/support/forum/p/Chrome/thread?tid=2c6c5ffd1dcd19c5&hl=pl

http://code.google.com/p/chromium/issues/detail?id=36617

Istnieje instrukcja switch, którą można uruchomić (powinna być opcją w panelu sterowania dla osób spoza interfejsu CLI), która wymusza nowy proces dla każdej karty, ale po dalszym czytaniu i wykrywaniu tak naprawdę nie wymusza oddzielnych procesów dla każdej karty jako taki.

Oto link do dokumentu dyskusji i projektowania chromu, wspierającego ich projekt i architekturę dla przeglądarki chrome i wszystkich modeli procesów związanych z chromem. Domyślam się, że Android i Chrome OS podlegają podobnej specyfikacji projektowej.

http://dev.chromium.org/developers/design-documents/process-models

Nazwa przełącznika jest nieco myląca, ponieważ mówi mi „jeden proces na zakładkę”, ale w rzeczywistości jest to jeden proces na grupę kart z podobnymi skryptami, który jest stale udoskonalany i łączony w jeden gigantyczny lewiatan procesu. Mój również uzyskać od 500 do 800 MB. Prawie gigantyczna pamięć tylko dla jednego procesu. Spowalnia mój komputer. Co więcej, prawdopodobnie dlatego, że cała ta pamięć jest stronicowana, ale tak czy inaczej, jeśli każda karta byłaby osobnym procesem, przynajmniej pamięć i operacje stronicowania byłyby różne na płycie, zasadniczo rozkładając obciążenie zarówno na procesor, jak i pamięć ( w tym stronicowanie).

Chromium obsługuje również prostszy model, który poświęca jeden proces renderujący każdej grupie kart połączonych ze skryptem

Słowa projektu „chromu” typu open source dotyczące modelu jednego procesu na kartę:

„Chromium obsługuje również prostszy model, który poświęca jeden proces renderujący każdej grupie kart połączonych ze skryptem”.

Istnieje globalny limit liczby procesów renderujących, które Chromium utworzy. Dzięki temu przeglądarka nie przytłacza komputera użytkownika zbyt dużą liczbą procesów. Limit wynosi obecnie 20 procesów renderujących na większości komputerów, a mniej na komputerach z małą ilością zainstalowanej pamięci. W rezultacie proces pojedynczego mechanizmu renderującego może być przeznaczony dla wielu witryn. Ponowne użycie jest obecnie wykonywane losowo, ale w przyszłych wersjach Chromium prawdopodobnie zastosuje heurystykę w celu bardziej inteligentnego przydzielania witryn procesom renderującym.

Jason A. Samfield
źródło