Di mana hambatan kecepatan penelusuran web pada raspberry pi?

23

Pada Model B 512 MB Pi dengan Raspbian "wheezy", saya telah mencoba Midori, Chromium dan Iceweasel. Ketika halaman web bertambah besar, memuatnya lambat, bahkan setelah saya overclock ke 1 GHz. Pada ponsel Android dengan CPU 1 GHz, memuat halaman web tampaknya jauh lebih cepat.

Yang ingin saya ketahui adalah, di mana bottleneck di Pi? Apakah itu CPU, atau ukuran RAM, atau X server yang tidak terkecuali? Mungkinkah browser menggunakan GPU secara langsung untuk mempercepatnya?

hello.wjx
sumber
Dan pi mengendarai layar 3,5 "480 x 800?;) Jika tidak mungkin itu saja adalah sedikit faktor ...
goldilocks
Monitor VGA digunakan untuk tampilan, melalui kabel HDMI-to-VGA, dan konfigurasi hdmi_mode=35 1280x1024 60Hz... Tapi saya tidak bisa melihat peningkatan setelah mengubah konfigurasi kehdmi_mode=9 800x600 60Hz
hello.wjx
Tanpa keraguan. Saya pikir tapped-out memiliki jawaban yang benar untuk pertanyaan ini, tetapi saya menambahkan satu lagi dengan ide untuk Anda.
goldilocks

Jawaban:

15

Ini adalah kombinasi dari CPU ARM11 Raspberry Pi yang cukup lemah dan server X yang tidak terkecuali. Karena tidak dipercepat oleh GPU, CPU harus melakukan semua rendering; pada sesuatu seperti inti ARM11 di Pi, ini menempatkan banyak tekanan tambahan pada CPU yang sudah lemah.

Secara anekdot, saat menonton htopsementara Midori di Pi memuat situs web berat seperti Facebook, saya telah melihat proses X memakan hingga 25% dari CPU.

Tidaklah adil untuk membandingkan chip di ponsel Android Anda dengan chip (bahkan di-overclock) di Pi. Chip 1 GHz di ponsel Anda mungkin mirip dengan Cortex-A8 atau A9, yang menggunakan versi arsitektur ARMv7; dengan demikian, mereka adalah kinerja yang lebih tinggi per siklus clock daripada ARM11, yang menggunakan ARMv6.

nc4pk
sumber
Operasi draw 2D seperti apa yang dapat dipercepat GPU?
Trismegistos
@Trismegistos Mengisi wilayah dengan warna. Menggabungkan lapisan dengan latar belakang transparan. Menghaluskan tepi font.
Dmitry Grigoryev
14

Ini sudah jawaban IMO yang benar, dan apa yang saya sarankan mungkin tidak akan membuat banyak perbedaan, tetapi mungkin berguna untuk mengetahui.

Jika semua yang ingin Anda lakukan adalah menjalankan browser, Anda tidak harus menjalankan lingkungan desktop juga. Buat file yang terlihat seperti ini sebagai $HOME/.xinitrc:

#!/bin/sh

midori

Jika .xinitrc sudah ada, pindahkan sementara atau beri komentar apa pun. Sekarang, startx(jelas, Anda seharusnya tidak berada di dalamnya - lakukan ini dari konsol tanpa GUI berjalan). Voila, Anda hanya punya browser, tanpa desktop.

Itu menghemat sedikit memori, meskipun browser adalah gajah di dalam ruangan dan server Xorg sendiri (yang berjalan) lebih besar dari lxde dasar (yang sekarang tidak berjalan). Jika Anda memiliki begitu banyak dimuat ke dalam RAM yang Anda gunakan swap, itu akan mempengaruhi kinerja. Midori + bare X di atas menggunakan penduduk <100 MB sesuai dengan 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

Itu dengan 4 tab terbuka. Sekali lagi, jika Anda melihat ini dan melihat RAM Anda hampir penuh, itu masalah kinerja. Perhatikan bahwa normal untuk menggunakan sedikit swap bahkan jika ram tidak penuh, jadi jangan khawatir tentang hal itu - bahwa barang yang ditukar adalah prioritas rendah.

Sesuatu yang lebih jauh untuk dipikirkan, kinerja bijaksana, adalah pentingnya buffer dan cache . Saya tidak memasukkan ini dalam total, dan perhatikan itu sebenarnya lebih dari memori yang dilakukan (sekitar dua kali lebih banyak). Itu normal. Jika Anda mengisi memori dengan hal-hal yang dilakukan, sistem hanya akan menggunakan lebih sedikit cache dan / atau mentransfernya untuk bertukar. Either way, itu akan menjadi penurunan kinerja karena cache itu penting (hanya saja tidak penting atau ukuran tidak dapat diubah, jadi bukan bagian dari stat mem berkomitmen).

Dengan kata lain, secara optimal Anda ingin ram yang berkomitmen tidak lebih dari 75% dari apa yang tersedia pada pi dan mungkin kurang dari itu. Jika Anda menggunakan LXDE dan mulai membuka hal-hal lain, Anda dapat dengan cepat mulai mendekati itu.

goldilocks
sumber
5

Penafian : Berikut ini penjelasan penggunaan fitur eksperimental dengan efek yang meragukan. Pastikan untuk menguji regresi diperkenalkan dan keuntungan kinerja aktual.

Anda dapat mencoba beberapa bendera Google Chrome / Chromium di bawah chrome://flagsuntuk meningkatkan kinerja penelusuran (jelas). Ada artikel yang menjelaskan beberapa bendera yang relevan dengan kinerja . Saya akan mencoba mengumpulkan beberapa di sini:

Memaksa akselerasi GPU dengan mengaktifkan "Overrrite Software Rendering List" akan menggunakan GPU untuk rendering dengan biaya kemungkinan artefak, bahkan jika driver tidak masuk daftar putih. Saya tidak tahu seberapa baik ini bekerja dengan GPU Pi.

Pengomposisian GPU pada semua halaman akan menggunakan GPU untuk menggulir semua layer. Jadi kinerja bergulir harus ditingkatkan pada halaman tanpa lapisan dipercepat GPU.

Segarkan jendela tilewise akan menjadi petunjuk lain. Ini akan membuat ubin dan menampilkan masing-masing begitu siap alih-alih menunggu yang terakhir selesai. Akibatnya rendering akan lebih lama karena overhead yang diperkenalkan, tetapi konten akan muncul lebih cepat.

Rendering di utas terpisah akan melakukan rendering secara tidak sinkron dan membuat antarmuka responsif. Anda dapat menggulir saat halaman masih dirender.

Nonaktifkan GPU VSync akan memperbarui konten yang diberikan terlepas dari apakah monitor telah memuatnya. Ini meningkatkan frame rate dengan biaya presentasi yang tidak konsisten.

Setelah mengaktifkan / menonaktifkan sakelar apa pun, Anda harus memulai ulang Chrome / Chromium agar pengaturan dapat diterapkan. Tombol di bagian bawah halaman bendera dapat melakukannya untuk Anda.

Lebih jauh lagi, saklar baris perintah dapat digunakan untuk mengoptimalkan Chrome / Chromium. Lihat Daftar Sakelar Baris Perintah Chromium untuk daftar lengkap.

--default-tile-widthdan --default-tile-heightdapat diatur agar sesuai dengan sebagian kecil dari ukuran layar untuk mempercepat rendering awal setiap halaman.

Bengt
sumber
Saya mencoba bendera Override software rendering list, GPU compositing on all pagesdan Threaded compositingpada Pi, tetapi tampaknya tidak ada perbaikan yang jelas. Saya juga pernah mencoba flag-flag itu di PC, sepertinya tidak ada perbaikan juga.
hello.wjx
Pastikan untuk memulai ulang Chrome setelah mengedit bendera. Untuk menguji, Override software rendering listbuka demo WebGL. Untuk menguji Threaded compositingcoba gulir ketika halaman besar masih memuat.
Bengt
Dari apa yang saya baca di sini: chromium.org/developers/design-documents/… menggunakan "Threaded compositing" tidak akan membantu pada pi - ini hanya memiliki satu inti - dan dapat memperburuknya , tergantung pada seberapa signifikan "operat [ing] pada salinan dari kondisi rendering saat ini" adalah.
goldilocks
Performa memuat halaman akan menurun, ya. Tetapi Javascript tidak akan memblokir dan menunggu rendering dan halaman akan tetap responsif. Anda memperdagangkan beberapa kinerja objektif untuk beberapa kinerja yang dirasakan.
Bengt