Đâu là nút cổ chai của tốc độ duyệt web trên raspberry pi?


23

Trên một Model B 512 MB Pi với Raspbian Tuy khàn khàn, tôi đã thử Midori, Chromium và Iceweasel. Khi trang web lớn hơn, tải chậm, thậm chí sau khi tôi ép xung lên 1 GHz. Trên điện thoại Android có CPU 1 GHz, việc tải trang web dường như nhanh hơn nhiều.

Điều tôi muốn biết là, nút thắt ở đâu trong Pi? Đây có phải là CPU, hoặc kích thước RAM, hoặc máy chủ X không tương thích? Trình duyệt có thể sử dụng GPU trực tiếp để tăng tốc không?


Và pi đang lái một màn hình 3,5 "480 x 800 ?;) Nếu không có lẽ đó là một phần của một yếu tố ...
goldilocks

Một màn hình VGA được sử dụng để hiển thị, thông qua cáp HDMI-VGA và cấu hình là hdmi_mode=35 1280x1024 60Hz... Nhưng tôi không thể thấy bất kỳ cải thiện nào sau khi thay đổi cấu hình thànhhdmi_mode=9 800x600 60Hz
hello.wjx

Không còn nghi ngờ gì nữa. Tôi nghĩ rằng khai thác có câu trả lời chính xác cho câu hỏi này nhưng tôi đã thêm một câu hỏi khác với một ý tưởng cho bạn.
goldilocks

Câu trả lời:


15

Đây là sự kết hợp giữa CPU ARM11 khá yếu của Raspberry Pi và máy chủ X không tương thích. Vì nó không được tăng tốc bởi GPU, CPU phải thực hiện tất cả kết xuất; trên một cái gì đó giống như lõi ARM11 trong Pi, điều này gây thêm nhiều căng thẳng cho CPU vốn đã yếu.

Thông thường, trong khi xem htopMidori trên Pi tải một trang web nặng như Facebook, tôi đã thấy quá trình X chiếm tới 25% CPU.

Thật không công bằng khi so sánh chip trong điện thoại Android của bạn với chip (thậm chí được ép xung) trong Pi. Con chip 1 GHz trong điện thoại của bạn có lẽ là một cái gì đó giống như Cortex-A8 hoặc A9, sử dụng phiên bản ARMv7 của kiến ​​trúc; do đó, chúng có hiệu suất cao hơn trên mỗi chu kỳ xung nhịp so với ARM11, sử dụng ARMv6.


GPU có thể tăng tốc loại hoạt động 2D nào?
Trismegistos

@Trismegistos Điền các vùng với màu sắc. Kết hợp các lớp với nền trong suốt. Làm mịn các cạnh phông chữ.
Dmitry Grigoryev

14

Đây đã là câu trả lời chính xác IMO và những gì tôi đang đề xuất có lẽ sẽ không tạo ra nhiều khác biệt, nhưng có thể hữu ích khi biết.

Nếu tất cả những gì bạn muốn làm là chạy trình duyệt, bạn cũng không phải chạy môi trường máy tính để bàn. Tạo một tệp trông như thế này $HOME/.xinitrc:

#!/bin/sh

midori

Nếu .xinitrc đã tồn tại, di chuyển tạm thời hoặc nhận xét bất cứ điều gì khác. Bây giờ, startx(rõ ràng, bạn không nên ở trong đó - hãy làm điều này từ bảng điều khiển mà không cần GUI chạy). Voila, bạn chỉ có trình duyệt, không có máy tính để bàn.

Điều đó giúp tiết kiệm một chút bộ nhớ, mặc dù trình duyệt là con voi trong phòng và máy chủ Xorg (đang chạy) lớn hơn một lxde cơ bản (hiện không chạy). Nếu bạn đã tải quá nhiều vào RAM mà bạn đang sử dụng trao đổi, điều đó sẽ ảnh hưởng đến hiệu suất. Midori + trần X ở trên sử dụng cư dân <100 MB theo free:

             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

Đó là với 4 tab mở. Một lần nữa, nếu bạn nhìn vào những thứ này và thấy RAM của bạn đã gần đầy, đó là vấn đề về hiệu năng. Lưu ý rằng việc sử dụng một chút trao đổi là bình thường ngay cả khi ram không đầy, vì vậy đừng lo lắng về điều đó - những thứ được hoán đổi là ưu tiên thấp.

Một cái gì đó xa hơn để suy nghĩ, hiệu suất khôn ngoan, là tầm quan trọng của bộ đệm và bộ đệm . Tôi đã không bao gồm những thứ này trong tổng số, và nhận thấy nó thực sự nhiều hơn bộ nhớ đã cam kết (khoảng gấp đôi). Đó là bình thường. Nếu bạn lấp đầy bộ nhớ với những thứ đã cam kết, hệ thống sẽ chỉ sử dụng ít bộ đệm hơn và / hoặc chuyển nó để trao đổi. Dù bằng cách nào, đó sẽ là một sự suy giảm hiệu suất vì bộ đệm rất quan trọng (nó không phải là kích thước quan trọng hoặc bất biến, vì vậy không phải là một phần của chỉ số mem đã cam kết).

Nói cách khác, tối ưu bạn muốn ram cam kết của bạn không quá 75% những gì có sẵn trên pi và có lẽ ít hơn thế. Nếu bạn sử dụng LXDE và bắt đầu mở các công cụ khác, bạn có thể nhanh chóng bắt đầu tiếp cận điều đó.


5

Tuyên bố từ chối trách nhiệm : Phần sau đây mô tả việc sử dụng các tính năng thử nghiệm với các hiệu ứng đáng ngờ. Hãy chắc chắn để kiểm tra hồi quy được giới thiệu và tăng hiệu suất thực tế.

Bạn có thể thử một số cờ / Chrome của Google Chrome bên dưới chrome://flagsđể cải thiện hiệu suất duyệt (rõ ràng). Có một bài viết giải thích một số cờ liên quan đến hiệu suất . Tôi sẽ cố gắng thu thập một số ở đây:

Buộc tăng tốc GPU bằng cách bật "Danh sách kết xuất phần mềm ghi đè" sẽ sử dụng GPU để kết xuất với chi phí tạo tác có thể, ngay cả khi trình điều khiển không được đưa vào danh sách trắng. Tuy nhiên, tôi không biết điều này hoạt động tốt như thế nào với GPU của Pi.

Kết hợp GPU trên tất cả các trang sẽ sử dụng GPU để cuộn tất cả các lớp. Vì vậy, hiệu suất cuộn sẽ được cải thiện trên các trang mà không cần các lớp tăng tốc GPU.

Làm mới cửa sổ tilewise sẽ là một gợi ý khác. Nó sẽ kết xuất các ô và hiển thị từng ô ngay khi sẵn sàng thay vì chờ đợi cuối cùng kết thúc. Trong kết xuất hiệu ứng sẽ mất nhiều thời gian hơn do chi phí được giới thiệu, nhưng nội dung sẽ xuất hiện nhanh hơn.

Kết xuất trong luồng riêng biệt sẽ thực hiện kết xuất không đồng bộ và giữ cho giao diện phản hồi nhanh. Bạn có thể cuộn trong khi trang vẫn đang hiển thị.

Vô hiệu hóa GPU VSync sẽ cập nhật nội dung được hiển thị bất kể màn hình đã tải chúng chưa. Điều này cải thiện tốc độ khung hình với chi phí trình bày không nhất quán.

Sau khi bật / tắt bất kỳ công tắc nào, bạn sẽ phải khởi động lại Chrome / Chromium để cài đặt được áp dụng. Nút ở dưới cùng của trang cờ có thể làm điều đó cho bạn.

Đi xa hơn nữa, các công tắc dòng lệnh có thể được sử dụng để tối ưu hóa Chrome / Chromium. Xem Danh sách chuyển mạch dòng lệnh Chromium để biết danh sách đầy đủ.

--default-tile-width--default-tile-heightcó thể được đặt để khớp với một phần kích thước màn hình để tăng tốc độ hiển thị ban đầu của mỗi trang.


Tôi cố gắng cờ Override software rendering list, GPU compositing on all pagesThreaded compositingtrên Pi, nhưng có vẻ như không có sự cải thiện rõ ràng. Tôi đã thử những lá cờ trên PC, dường như cũng không có cải tiến.
xin chào.wjx

Đảm bảo khởi động lại Chrome sau khi chỉnh sửa cờ. Để kiểm tra Override software rendering listmở bản demo WebGL. Để kiểm tra Threaded compositingthử cuộn trong khi một trang lớn vẫn đang tải.
Bengt

Từ những gì tôi đang đọc ở đây: chromium.org/developers/design-document/, sử dụng "Kết hợp có ren" sẽ không giúp ích gì cho pi - nó chỉ có một lõi - và có thể làm cho nó tệ hơn , tùy thuộc vào mức độ quan trọng "operat [ing] trên một bản sao của trạng thái kết xuất hiện tại" là.
goldilocks

Hiệu suất tải trang sẽ giảm, vâng. Nhưng Javascript sẽ không chặn và chờ kết xuất và trang sẽ vẫn phản hồi. Bạn đang giao dịch một số hiệu suất khách quan cho một số hiệu suất nhận thức.
Bengt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.