在带有Raspbian“ wheezy”的B型512 MB Pi上,我尝试了Midori,Chromium和Iceweasel。当网页变大时,即使我将其超频至1 GHz之后,加载速度仍然很慢。在具有1 GHz CPU的Android手机上,网页加载似乎要快得多。

我想知道的是,Pi的瓶颈在哪里?是CPU,RAM大小还是未加速的X服务器?浏览器是否可以直接使用GPU来加快速度?

评论

而pi正在驱动3.5英寸480 x 800屏幕?;)如果不是那样,也许只是一个因素...

使用VGA监视器通过HDMI到VGA电缆进行显示,配置为hdmi_mode = 35 1280x1024 60Hz ...但是将配置更改为hdmi_mode = 9 800x600 60Hz后我看不到任何改善

毫无疑问。我认为挖掘出的答案可以正确解决此问题,但我又添加了一个想法,供您参考。

#1 楼

它是Raspberry Pi相对较弱的ARM11 CPU和未加速的X服务器的结合。由于GPU无法加速,因此CPU必须完成所有渲染。在Pi上的ARM11内核之类的东西上,这给本来就很弱的CPU带来了很多额外的负担。我们已经看到X进程占用了CPU的25%。

将Android手机中的芯片与Pi中的芯片(甚至超频)进行比较并不是很公平。手机中的1 GHz芯片可能类似于Cortex-A8或A9,它们使用该架构的ARMv7版本。因此,与使用ARMv6的ARM11相比,它们每个时钟周期的性能更高。

评论


GPU可以加速哪种2D绘制操作?

–三角龙
16年8月1日在12:45

@Trismegistos用颜色填充区域。结合透明背景的图层。平滑字体边缘。

–德米特里·格里戈里耶夫(Dmitry Grigoryev)
19-11-14在13:09



#2 楼

这已经是IMO的正确答案了,我的建议可能不会有多大区别,但了解它可能会很有用。

如果只想运行浏览器,则不要也不必运行桌面环境。创建一个看起来像$HOME/.xinitrc的文件:

#!/bin/sh

midori


如果.xinitrc已经存在,请暂时将其移动或注释掉其他内容。现在,请执行startx(显然,您不应该已经在其中-在未运行GUI的情况下从控制台执行此操作)。瞧,您只有浏览器,没有桌面。

节省了一点点的内存,尽管到目前为止,浏览器是房间里的大象,而正在运行的Xorg服务器本身却比基本的lxde(现在不运行)。如果您有太多的内存加载到RAM中,那么您将使用交换,这将影响性能。上面的midori +裸X根据free使用<100 MB驻留:

             total       used       free     shared    buffers     cached
Mem:        448708     242604     206104          0      82660     105156
-/+ buffers/cache:      54788     393920
Swap:       102396          0     102396


448708-393920 = 54788/1024 = 53.5 MB

打开了四个标签。同样,如果您查看这些内容并发现您的RAM几乎已满,那就是性能问题。请注意,即使内存未满也使用一些交换是正常的,所以不必担心-交换的内容的优先级较低。

需要进一步考虑的是性能明智的是,缓冲区和缓存的重要性。我没有将它们包括在总数中,请注意实际上它比承诺的内存还多(大约两倍)。那是正常的。如果您用承诺的东西填满内存,系统将只使用较少的缓存和/或将其转移以进行交换。无论哪种方式,这都会导致性能下降,因为缓存非常重要(它在大小上不是至关重要的或不变的,因此不属于已提交的内存状态)。

换句话说,最佳情况下,您希望已承诺的内存不超过pi上可用内存的75%,甚至可能少于此值。如果您使用LXDE并开始打开其他内容,则可能会很快开始采用该方法。

#3 楼


免责声明:以下内容描述了具有可疑效果的实验功能的使用。请确保测试引入的回归和实际性能提升。


您可以在chrome://flags下尝试使用某些Google Chrome浏览器/ Chromium标志,以提高(明显)浏览性能。有一篇文章解释了一些与性能有关的标志。我将尝试在此处收集一些信息:

通过启用“ Overrrite Software Rendering List”来强制GPU加速,即使未将驱动程序列入白名单,也会使用GPU进行渲染,但会付出可能的失真。我不知道这与Pi的GPU配合得如何。

在所有页面上进行GPU合成将使用GPU滚动所有图层。因此,在没有GPU加速图层的页面上,滚动性能应有所提高。

逐个刷新窗口将是另一个提示。它会渲染图块并在准备就绪后立即显示它们,而不用等待最后一个完成。实际上,由于引入的开销,渲染将花费更长的时间,但是内容显示的速度会更快。

在单独线程中进行渲染将异步进行渲染并保持界面响应。您可以在页面仍在渲染时滚动。

禁用GPU VSync将更新渲染的内容,而不管监视器是否已加载它们。这会提高帧速率,但会出现显示不一致的情况。

启用/禁用任何开关后,您将必须重新启动Chrome / Chromium才能应用设置。标志页面底部的按钮可以为您做到这一点。

更进一步,可以使用命令行开关来优化Chrome / Chromium。有关完整列表,请参见Chromium命令行开关列表。

--default-tile-width--default-tile-height可以设置为与屏幕尺寸的一小部分匹配,以加快每个页面的初始渲染。

评论


我尝试了标记Override软件渲染列表,所有页面上的GPU合成和Pi上的线程化合成的标记,但是似乎没有明显的改进。我还尝试了在PC上的那些标志,似乎也没有任何改进。

– hello.wjx
13年2月27日在4:44



确保在编辑标志后重新启动Chrome。要测试Override软件渲染列表,请打开一个WebGL演示。要测试线程合成,请尝试在仍加载大页面时滚动。

– Bengt
13年1月1日在15:37

从我在这里阅读的内容:chromium.org/developers/design-documents/…使用“线程合成”对pi毫无帮助-它只有一个核心-可能会变得更糟,具体取决于重要性是“对当前呈现状态的副本进行操作”。

–金锁♦
13年5月5日在13:29

页面加载性能会降低,是的。但是Javascript不会阻止并等待渲染,并且页面将保持响应状态。您正在将一些客观绩效换成一些可感知的绩效。

– Bengt
2013年5月5日18:12