¿Limitar el uso de RAM en Chrome?

¿Limitar el uso de RAM en Chrome?

Al dejar varias pestañas abiertas en Google Chrome durante horas/días, noto que algunas páginas terminan usando grandes cantidades de RAM, hasta el punto en que todo el sistema operativo (XP) deja de responder debido a la paginación. Cuando tengo suerte, finalmente puedo marcar la lista de URL abiertas, cerrar Chrome y empezar de nuevo; Cuando no lo estoy, simplemente debo cerrar Chrome y esperar poder recuperar la lista de URL abiertas.

  • ¿Porqué es eso? ¿Pérdidas de memoria en los complementos?
  • ¿Hay alguna forma de configurar Chrome para que una sola pestaña/página no utilice más de una cantidad determinada de RAM?

Gracias.

Respuesta1

Creo que deberías optar por comprar tanta RAM como tu sistema operativo pueda soportar. No debes limitar el uso de RAM de Chrome porque arruinará tu experiencia de navegación en la Web. Suponiendo que utiliza su computadora para navegar por Internet la mayor parte del tiempo, debe dejar que Chrome obtenga todos los recursos que necesita para brindar el rendimiento que desea para "disfrutar" ejecutando esas pestañas al mismo tiempo.

No creo que haya una manera de limitar el uso de RAM de cada pestaña individual, pero puedes limitar el uso de Chrome por completo. Mira aquí:

https://stackoverflow.com/questions/192876/set-windows-process-or-user-memory-limit

Preferiría no hacer eso, si fuera usted, si quiero una navegación web fluida.

Respuesta2

  1. Escribí un programa Python 2.5 que elimina los renderizadores de Chrome cuando usan más de una cantidad determinada de memoria. Ejecuto este programa bajo watch. (tenga en cuenta que utiliza elpsutilmódulo que no está incluido con Python.)

    import sys, os, psutil
    
    if len(sys.argv) == 2:
        try:
            limit = int(sys.argv[1])
        except:
            limit = 200 # default 200MB
    else:
        limit = 200
    
    uid = os.getuid()
    for p in psutil.get_process_list():
        try:
            if (p.name == 'chrome' and any('type=renderer' in part for part in p.cmdline)
               and p.uid == uid):
                m = p.get_memory_info()
                #print p.pid,m, m.rss / 1024 / 1024, m.vms / 1024 / 1024
                if (m.rss / 1024 / 1024) > limit: # kill if rss is greater than limit
                    print 'Killed', p.pid
                    p.kill()
        except psutil.error.NoSuchProcess:
            pass
        except psutil.error.AccessDenied:
            pass
    
  2. confío enCompañero de sesiónpara recuperar las pestañas abiertas cuando Chrome no puede restaurarlas.

Respuesta3

Lo único que he visto hasta la fecha que puede hacer esto esejecutar Chrome dentro de un contenedorylimitar el ariete de los contenedores.

Sin embargo, esto tiene algunas advertencias importantes,

  • La ejecución de Chrome se complica por la secuencia de configuración e inicio de Dockerize.

  • Por un lado, Chrome ya utiliza contenedores del kernel para proteger sus subprocesos; por lo que debe ejecutar el contenedor con una especie de privilegio de root que le permita funcionar. Esto se puede evitar y el modelo de contenedor vinculado lo hace. (hace prácticamente todo lo que necesita)

  • Es casi seguro que perderás la aceleración de la GPU.

  • Hacer que el audio funcione es complicado, pero se maneja en el modelo de contenedor vinculado.

  • Independientemente de lo que espere que salga mal cuando anule su garantía, a Chrome no le gusta que le digan que no use más RAM y actuará y hará berrinches en consecuencia.

Pero al final funciona.

Estoy más interesado en aplicar estos límites de RAM a las aplicaciones de Electron Shell que no tienen imágenes de ventana acoplable prediseñadas para organizarlas por usted.


Fuera de tema, pero quiero señalar que Firefox se comporta muy bien en hardware limitado, pero no lo considero una respuesta real.

Respuesta4

No es necesariamente un complemento. Tenga en cuenta que las páginas web ya no son estáticas. Algunas páginas web simplemente tienen una cantidad no trivial de actividad asincrónica. Agregue la actividad de los complementos y obtendrá algunas incógnitas.

El mejor remedio que he encontrado es cerrar la página web y volver a cargarla. AFAIK, no hay forma de limitar la cantidad de RAM que utiliza una página web.

información relacionada