主题:【原创】Chrome进程管理(1)---启动模式 -- 素里太守
CHROME有4种启动模式,分别对应4种进程管理模式。俺就从易到难挨着个地数落一遍。
Single process,单进程模式,命令行参数 --single-process。这个最简单了,传统上浏览器就是这么运行的,一个进程涵盖了浏览网页过程中的所有资源。
Process-per-site,网站进程模式,命令行参数 --process-per-site。正在浏览的每个网站对应一个Render进程。什么叫Render进程?下面的下面的下面俺还要解释。那什么叫网站?怎么定义?GOOGLE是这样解释的:西西社区 --- ccthere.com,西西河典藏 --- cchere.com,淘客熙熙 --- talkcc.com都是单独的网站。如果用Chrome网站进程模式同时打开http://www.ccthere.com/和http://www.ccthere.com/forum/boards/,Chrome只分配一个Render进程渲染这两个不同的网页文件,维护网页的DOM, 运行其中的JavaScript代码。
Process-per-tab,标签页进程模式,命令行参数 --process-per-tab。Chrome浏览器的每个标签页对应一个Render进程。这个东西倒是直观易懂,俺就不多费口舌了。
Process-per-site-instance 网站实例进程模式,命令行参数没有,这是预置进程模式。如果用Windows或者Chrome的任务管理器观察,该模式标签页进程模式似乎没有差别 --- 浏览简单网页,Chrome的进程数目不变;但是用VS或者其他工具观察,差别就体现出来了。在Chrome打开1个标签页浏览不同的网页进程数目不变,但是从一个网站切换到另一个网站, Render进程的ID发生变化 --- 原先的Render进程被释放,回收,Browser生成新的Render进程用于新的网站。
预告:Chrome进程管理(2)--- 威胁模型(Threat Model)
本帖一共被 1 帖 引用 (帖内工具实现)
花,期待下文。
per tab 很好理解,但是 per site 似乎没有什么必要吧?难道说,是缺省认为来自同一个site的内容可以相互信任?还是说,对于一些静态内容,可以相互之间缓存作用?
CHROME里面可以把慢的网站关掉而不影响其他网站浏览.
一旦出现某个网站的连接出了问题,整个FF就会被拖至假死状态数分钟~
比如,对每个tab的内容进程进行监控,一旦慢了,可以某个tab的防止死循环。
就比如西西河,有些页面会比较慢,大部分还算正常的快。
假如在浏览器中同时打开多个tabs,每个tabs的URL都相同,如果启动方式是process-per-site,那么一个process同时兼管多个tabs。
这样做的好处是什么?有点想不明白了。:)
如果很多URL相同或者近似的话,它们之间会共享很多多媒体和JAVA的东西,这样只需要下载一份就可以给很多TAB使用.
1.目前的Chrome还是0.2.x.x版。等到1.x.x.x版发布的时候这些进程模式可能还有会变化。
2.除单进程模式外,其它的模式有些例外情况,以后的帖子中还会谈及。
3.大家目前主要的注意力依然集中在PC平台。考虑到目前硬件配置水平,PORCESS PER SITE似乎没有必要性。但GOOGLE的视野绝对不限制在PC平台,手机是未来的重要战场。就目前而言,手机平台的硬件资源依然可怜 --- 网络链接数度和质量,CPU主频,RAM内存容量。比如,最新发布的HTC TOUCH HD不过也500多Mhz的主频,288 MB RAM。如果用CHROME的预置进程模式来跑的话,估计内存占用很不乐观。在安全性上做点让步,PORCESS PER SITE是个很好的折中。
是不是可以这么理解,
1. SINGLE-PROCESS 占用资源角度最省,但是运行速度最低。
2. PROCESS-PER-TAB 占用资源角度最费,但是运行速度最高。
3. PROCESS-PER-SITE-INSTANCE 是占用资源与运行速度两极之间最聪明的折中,但是实现代码最复杂。
4. PROCESS-PER-SITE 在占用资源与运行速度两极之间,类似与PROCESS-PER-SITE-INSTANCE,但是实现代码比较简化。
谈到手机浏览器,太守的意思是不是PROCESS-PER-SITE 是最佳选择?
多谢,同意你的意见,譬如同一网站的多个网页,或许会共用同一套JavaScript。
另外,不知道配额对我的关于“四种启动模式的比较”有什么指点。
1. SINGLE-PROCESS 占用资源角度最省,但是运行效率最高。
2. PROCESS-PER-SITE 在占用资源与运行速度两极之间。,但是实现代码比较简化。
3. PROCESS-PER-TAB 占用资源角度最费,但是运行效率最差 --- 所有的东西都要跨进程。
4. PROCESS-PER-SITE-INSTANCE 类似 3。有些情况下效率好于3。释放进程资源可以提交给OS?
对使用者而言,最重要的“速度”是看到网页效果的延迟时间。Chrome的Browser主进程会根据TAB的优先次序调整Render进程的优先级。
手机上网的行为模式应该与PC上网有所不同。
1.手机上网局限于经常去的网站,对这些网站有相当的“信任度”,因此可以降低安全方面的要求。
2.手机上网避免去比较复杂效果的网站。
3.手机上网基本上是“read only”。
俺没有这方面的体验。用的多的河友不妨说道说道。
有几个疑问,
1. 干嘛不统统用SINGLE-PROCESS呢?
2. PROCESS-PER-TAB的优势在哪里呢?
3. 为什么Chrome把PROCESS-PER-SITE-INSTANCE设为default?从常规上讲,PROCESS-PER-SITE-INSTANCE似乎是Chrome开发人员心目中,资源占用和运行效率的最佳组合。