GNU/Linux >> Linux Esercitazione >  >> Linux

Browser Chromium:supera il limite di dati?

Ho impostato ulimit in /etc/security/limits.conf . Quando accedo al mio ambiente desktop come utente testuser normalmente (usando slim login manager), tutto funziona bene.

Quando accedo come utente testuser tramite Xephyr (dall'altra mia sessione come un altro utente), tutto funziona bene tranne chromium browser. Questo è l'errore che ricevo in dmesg :

Chrome_ChildIOT (2472): VmData 4310827008 exceed data ulimit 4294967296. Update limits or use boot option ignore_rlimit_data.

E il cromo è inutilizzabile (si avvia, ma aspetta indefinitamente di caricare qualsiasi pagina)

Tutti gli altri programmi tranne chromium avere i limiti corretti impostati. L'ho verificato usando:

find /proc/ -maxdepth 1 -user testuser -exec cat {}/limits ; | grep 'Max data size'

tutti i PIDs avere Max data size impostato su illimitato:

Max data size             unlimited            unlimited            bytes

tranne chromium processi:

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  

Vorrei capire:

1) perché chromium hanno limiti diversi rispetto a tutti gli altri programmi?

2) da dove provengono i limiti "predefiniti" (dove il cromo prende il limite 4294967296 da ?

3) come posso modificare questi limiti predefiniti una volta per tutte, a livello globale, per tutti i processi indipendentemente dal fatto che utilizzino pam o meno?

Risposta accettata:

  1. Perché il cromo ha limiti diversi rispetto a tutti gli altri programmi?

Chromium può sembrare una semplice applicazione ma non lo è, prima c'è il multi-threading che fa eseguire più processi a chromium per attività diverse (estensioni, schede, motore web di base, ecc.), quindi la virtualizzazione, chromium usa molti sandbox per isolare le attività di navigazione che fanno utilizzare più risorse rispetto ad altre applicazioni, inoltre il motore web utilizzato non è leggero... aggiungi a ciò le diverse librerie necessarie per l'esecuzione e altre funzioni di risorse pesanti... alcune documentazioni correlate sono disponibili qui, qui e questo articolo hanno alcune informazioni utili.

  1. Da dove provengono i limiti "predefiniti" (da dove il cromo prende il limite 4294967296?

4294967296 byte (4096 MB o limite di 4 GB) il cromo ha un limite di 4 GB in base alla progettazione, questo è hardcoded, maggiori informazioni al riguardo sono disponibili qui e qui

  1. Come posso modificare questi limiti predefiniti una volta per tutte, a livello globale, per tutti i processi indipendentemente dal fatto che utilizzino pam o meno?

Non è un compito facile ma lo stai facendo bene per la maggior parte dei processi usuali, ora per processi complicati come chromium devi personalizzare la tua configurazione per ogni app "speciale".

Correlati:Linux – La sincronizzazione dell'ora NTP richiede molto tempo?

Per chromium ci sono alcuni parametri di comando che possono essere usati per personalizzare/abilitare/disabilitare funzioni, puoi provare a usarne alcuni per rendere chromium adatto alle tue esigenze, ecco alcuni switch interessanti:

Queste opzioni possono essere utilizzate con una riga di comando come questa /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.

Puoi anche eseguire chromium con uno script che aggiorni ulimit (nota che valori inferiori a 4 GB potrebbero mandare in crash il browser...)

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

Linux
  1. Come installare Chromium Web Browser su RHEL7 Linux

  2. Installazione del browser Chromium di Ubuntu 20.04

  3. Come installare il browser Chromium tramite PPA in Ubuntu 20.04, 20.10

  4. Installa Chromium su CentOS 8 - Una guida passo passo?

  5. Come installare il browser Chromium su Fedora 23

Installa il browser Chromium su Linux mint 20.1 Ulyssa

Come installare Chromium Browser su AlmaLinux 8

Come installare Chromium Browser su AlmaLinux 8

Come installare il browser Web Chromium su Debian 10

Come installare il browser Chromium su Debian 11

Come installare il browser Chromium su Debian 11 “Bullseye”