GNU/Linux >> Tutoriales Linux >  >> Linux

Navegador Chromium:¿Supera el límite de datos?

Configuré ulimit en /etc/security/limits.conf . Cuando inicio sesión en mi entorno de escritorio como usuario testuser normalmente (usando slim login gerente), todo funciona bien.

Cuando inicio sesión como usuario testuser a través de Xephyr (de mi otra sesión como otro usuario), todo funciona bien excepto chromium navegador. Este es el error que me sale en dmesg :

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

Y el cromo no se puede usar (se inicia, pero espera indefinidamente para cargar cualquier página)

Todos los demás programas excepto chromium establecer los límites correctos. He verificado esto usando:

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

todos los PIDs tener Max data size establecido en ilimitado:

Max data size             unlimited            unlimited            bytes

excepto chromium procesos:

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  

Me gustaría entender:

1) ¿Por qué chromium tienen límites diferentes a los demás programas?

2) ¿De dónde vienen los límites "predeterminados" (de dónde toma el cromo el límite 4294967296) de ?

3) ¿Cómo puedo cambiar estos límites predeterminados de una vez por todas, globalmente, para todos los procesos, independientemente de si usan pam o no?

Respuesta aceptada:

  1. ¿Por qué Chrome tiene límites diferentes a los demás programas?

Chromium puede parecer una aplicación simple, pero no lo es, primero está el subprocesamiento múltiple que hace que Chrome ejecute múltiples procesos para diferentes tareas (extensiones, pestañas, motor web central, etc.), luego la virtualización, Chromium usa muchos sandbox para aislar las actividades de navegación que hacen que utilice más recursos que otras aplicaciones, además el motor web utilizado no es ligero... agregue a eso las diferentes bibliotecas necesarias que se requieren para ejecutar y otras funciones de recursos pesados... algunas documentaciones relacionadas están disponibles aquí, aquí y este artículo tienen información útil.

  1. ¿De dónde vienen los límites "predeterminados" (¿de dónde toma el cromo el límite 4294967296?

4294967296 bytes (4096 MB o límite de 4 GB) chromium tiene por diseño un límite de 4 GB, esto está codificado, más información sobre esto está disponible aquí y aquí

  1. ¿Cómo puedo cambiar estos límites predeterminados de una vez por todas, globalmente, para todos los procesos, independientemente de si usan pam o no?

No es una tarea fácil, pero lo está haciendo bien para la mayoría de los procesos habituales. Ahora, para procesos complicados como Chrome, necesita personalizar su configuración para cada aplicación "especial".

Relacionado:Linux:¿la sincronización de tiempo NTP lleva mucho tiempo?

Para chromium, hay algunos parámetros de comando que se pueden usar para personalizar/habilitar/deshabilitar funciones, puede intentar usar algunos de ellos para hacer que chromium se adapte a sus necesidades, aquí hay algunos cambios interesantes:

Esos interruptores se pueden usar con una línea de comando como esta /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.

También puede ejecutar Chrome con un script que actualice el ulimit (tenga en cuenta que los valores inferiores a 4 GB pueden bloquear el navegador...)

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. Cómo instalar el navegador web Chromium en RHEL7 Linux

  2. Instalación del navegador Ubuntu 20.04 Chromium

  3. Cómo instalar el navegador Chromium a través de PPA en Ubuntu 20.04, 20.10

  4. Instalar Chromium en CentOS 8:¿una guía paso a paso?

  5. Cómo instalar el navegador Chromium en Fedora 23

Instale el navegador Chromium en Linux mint 20.1 Ulyssa

Cómo instalar el navegador Chromium en AlmaLinux 8

Cómo instalar el navegador Chromium en AlmaLinux 8

Cómo instalar el navegador web Chromium en Debian 10

Cómo instalar el navegador Chromium en Debian 11

Cómo instalar el navegador Chromium en Debian 11 “Bullseye”