Archives

gravatar

Chrome multi-process limitation (Windows)

Chrome 的特殊架構(Multiple processes)讓每個tab都變成獨立的執行空間(process),因此彼此不會互相干擾,即使當掉了也不會影響整個瀏覽器和其他 tab。也因如此,在多個 tab 中效能也比較好,每個 tab 各自只負責各自的工作,只需要 CPU 夠強力即可。如果是 multiple thread 設計,那麼可能在同一個 process 的 threads 中,彼此必須針對共用的 resources 像是 HTTP request, rendering 等做 lock/unlock 等 synchronization。
但是在平常的生活中,感覺卻不是那麼一回事,因為 chrome 感覺卡卡的。就算另外一個網頁正在載入中,先切換到已經完成的網頁去瀏覽,感覺上下捲或是點選連結都頓頓的。一點都不像是 Chrome 該有的表現。我用的是 Atom netbook 沒錯,但是 Opera/Firefox 除了肥腫並不會有這些問題。甚至我也有 Ubnutu 的 Chromium,都沒這樣的問題。
後來只好叫出 Task Manager 來看,發現例如下面螢幕截圖的現象。Browser 主要視窗一個 process,其他一堆 extensions 各自擁有一個 process,還有 about:memory 的 built-in page 也用掉一個 process。但是其他網頁,不管是不同 domain,都是同一個 process。這樣不就跟使用命令列參數讓 chrome 變成非 multi-process 架構的 "--single-process" 是同樣的功用。可是我並不是這樣的參數,何況這麼多 extensions processes 也說明了並非在 single process mode。