Saya telah mengatur ulimit di /etc/security/limits.conf
. Ketika saya masuk ke lingkungan desktop saya sebagai pengguna testuser
biasanya (menggunakan login
slim yang ramping manajer), semuanya berfungsi dengan baik.
Ketika saya masuk sebagai pengguna testuser
melalui Xephyr
(dari sesi saya yang lain sebagai pengguna lain), semuanya berfungsi dengan baik kecuali chromium
peramban. Ini adalah kesalahan yang saya dapatkan di dmesg
:
Chrome_ChildIOT (2472): VmData 4310827008 exceed data ulimit 4294967296. Update limits or use boot option ignore_rlimit_data.
Dan chromium tidak dapat digunakan (mulai, tetapi menunggu tanpa batas waktu untuk memuat halaman apa pun)
Semua program lain kecuali chromium
memiliki batas yang benar ditetapkan. Saya telah memverifikasi ini menggunakan:
find /proc/ -maxdepth 1 -user testuser -exec cat {}/limits ; | grep 'Max data size'
semua PIDs
memiliki Max data size
disetel ke tidak terbatas:
Max data size unlimited unlimited bytes
kecuali chromium
proses:
Max data size 4294967296 4294967296 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Saya ingin memahami:
1) mengapa chromium
memiliki batasan yang berbeda dari semua program lain ?
2) dari mana asal batas "default" (dari mana chromium mengambil batas 4294967296
dari ?
3) bagaimana saya bisa mengubah batas default ini sekali dan untuk semua, secara global, untuk semua proses terlepas dari apakah mereka menggunakan pam atau tidak?
Jawaban yang Diterima:
- Mengapa chromium memiliki batasan yang berbeda dari semua program lain?
Chromium mungkin terlihat seperti aplikasi sederhana tetapi tidak, pertama ada multi-threading yang membuat chromium menjalankan banyak proses untuk tugas yang berbeda (ekstensi, tab, mesin web inti, dll) kemudian virtualisasi, chromium menggunakan banyak kotak pasir untuk mengisolasi aktivitas penjelajahan yang membuatnya menggunakan lebih banyak sumber daya daripada aplikasi lain, juga mesin web yang digunakan tidak ringan… ditambah dengan berbagai pustaka yang dibutuhkan yang diperlukan untuk menjalankan dan fungsi sumber daya berat lainnya… beberapa dokumentasi terkait tersedia di sini, di sini dan artikel ini memiliki beberapa info berguna.
- Dari mana asal batas "default" (dari mana chromium mengambil batas 4294967296?
4294967296 byte (4096 MB, atau batas 4GB) chromium memiliki desain batas 4GB ini adalah kode keras, info lebih lanjut tentang ini tersedia di sini dan di sini
- Bagaimana cara mengubah batas default ini sekali dan untuk semua, secara global, untuk semua proses terlepas dari apakah mereka menggunakan pam atau tidak?
Bukan tugas yang mudah tetapi Anda melakukannya dengan benar untuk sebagian besar proses biasa, sekarang untuk proses yang rumit seperti chromium, Anda perlu menyesuaikan konfigurasi untuk setiap aplikasi "khusus".
Terkait:Linux – Sinkronisasi waktu NTP membutuhkan waktu lama?Untuk chromium ada beberapa parameter perintah yang dapat digunakan untuk menyesuaikan/mengaktifkan/menonaktifkan fitur, Anda dapat mencoba menggunakan beberapa di antaranya untuk membuat chromium sesuai dengan kebutuhan Anda, berikut beberapa switch yang menarik:
Switch tersebut dapat digunakan dengan baris perintah seperti ini /usr/bin/chromium --single-process
--single-process
--aggressive-tab-discard
--aggressive-cache-discard
--ui-compositor-memory-limit-when-visible-mb
--disk-cache-dir # Use a specific disk cache location, rather than one derived from the UserDatadir.
--disk-cache-size # Forces the maximum disk space to be used by the disk cache, in bytes.
--force-gpu-mem-available-mb # Sets the total amount of memory that may be allocated for GPU resources
--gpu-program-cache-size-kb # Sets the maximum size of the in-memory gpu program cache, in kb
--mem-pressure-system-reserved-kb # Some platforms typically have very little 'free' memory, but plenty is available in buffers+cached. For such platforms, configure this amount as the portion of buffers+cached memory that should be treated as unavailable. If this switch is not used, a simple pressure heuristic based purely on free memory will be used.
--renderer-process-limit # Overrides the default/calculated limit to the number of renderer processes. Very high values for this setting can lead to high memory/resource usage or instability.
Anda juga dapat menjalankan chromium dengan skrip yang memperbarui ulimit untuknya (perhatikan bahwa nilai yang lebih rendah dari 4GB dapat membuat browser crash…)
ulimit -Sv 4352000000 #4.2GB
/usr/bin/chromium
# or 0.42GB, it works but the browser may crash
#ulimit -Sv 435200000 #0.42GB
#/usr/bin/chromium