Dado que google chrome / chromium genera múltiples procesos, es más difícil ver cuánta memoria total usan estos procesos en total.
¿Hay una manera fácil de ver cuánta memoria total está usando una serie de procesos conectados?
Dado que google chrome / chromium genera múltiples procesos, es más difícil ver cuánta memoria total usan estos procesos en total.
¿Hay una manera fácil de ver cuánta memoria total está usando una serie de procesos conectados?
Respuestas:
Dado que google mató a chrome: // memory en marzo de 2016, ahora estoy usando smem :
# detailed output, in kB apparently
smem -t -P chrom
# just the total PSS, with automatic unit:
smem -t -k -c pss -P chrom | tail -n 1
chrom
por ruta completa, por ejemplo, /opt/google/chrome
o/usr/lib64/chromium-browser
-P firefox
sudo smem
para eso.338.0M
. Esto es muy bajo. Cuando ejecuto System Monitor, puedo ver que hay 11 procesos de Chrome y cada uno toma entre 70 MB y 400 MB de RAM. No estoy seguro si System Monitor está informando incorrectamente o no.
chrome
lugar de solo chorm
porque si está ejecutando tanto cromo como cromo, estaría viendo el total para ambos.
smem
de su propia salida usando algo como [c]hrome
, por ejemplo smem -tkP '[c]hrome'
. Esto funciona haciendo coincidir el c
interior de los corchetes y no los corchetes en sí.
Estoy seguro de que no es la mejor solución, aún así funciona para mí:
#!/bin/sh
ps aux | grep "[/]opt/google/chrome/chrome" | awk '{print $5}' | awk '{sum += $1 } END { print sum }'
ps aux | grep "[/]opt/google/chrome/chrome" | awk '{print $6}' | awk '{sum += $1 } END { print sum }'
Nota: cambie [/]opt/google/chrome/chrome
a algo apropiado para su sistema, por ejemplo, si está en Mac OS X (simplemente grep "chrome"
funcionará).
awk
comandos? Es decir, ¿por qué no solo ... | awk '{sum += $6} END {print sum}'
?
ps aux | grep "/opt/google/chrome/chrome" | awk '{vsz += $5; rss += $6} END { print "vsz="vsz, "rss="rss }'
smem
según la respuesta superior. Aunque FWIW, lo implementaría como un script o función, ya que es demasiado complejo para un alias.
Ejecutando esto:
perl -e '$a="x"x1000000000;sleep(10);print"done\n"'
ocupa 1.8GB de RAM. Entonces esperarías ejecutar esto:
perl -e '$a="x"x1000000000;fork;fork;fork;fork;sleep(10);print"done\n"'
ocuparía 16 veces más. Pero no lo hace.
Esto se debe a la copia inteligente en escritura del kernel de Linux: dado que el contenido de '$ a' no cambia, entonces la memoria de '$ a' se puede compartir. Pero solo permanecerá compartido hasta que se cambie '$ a'. Cuando eso sucede, la sección modificada se copiará y comenzará a ocupar RAM.
No sé si puede medir la cantidad de memoria que se copia-en-escritura sobre-comprometida. Pero al menos esto explica su exceso de conteo.
Simplemente calcule rápidamente la suma de los procesos.
En Mac :
chrome://system/
y seleccione todos los reportados en mem_usagepython
, CMD + V, EntrarEt voila! "Fácil" ... 🤓😅
PD: los ninjas de acceso directo y los jugadores de los juegos de lucha de los 80 y 90 no deberían tener problemas con esta solución
Encontré una solución con vim y awk. Abra chrome: // system, expanda mem_usage, copie a vim y ejecute regexp:
:%s/\D*\(\d*\).MB.*/\1
Esto deja solo los números antes de MB. Guarda el archivo y ejecuta
cat file | awk '{sum += $1} END {print sum}'
No pude convertir el código vim regexp a sed.
Hay USS que está disponible en plataformas cruzadas
El USS (Tamaño de conjunto único) es la memoria que es exclusiva de un proceso y que se liberaría si el proceso se terminara en este momento.
psutil> 4.0 La biblioteca de Python puede acceder a ella
Aquí lo usaría
sudo python3 -c "import psutil;print(sum(p.memory_full_info().uss for p in psutil.Process(pid=292).children())/1024/1024);"
donde pid = 292 es el PID del proceso más externo del Monitor de actividad
Sabía que Chrome / Chrome tenía un administrador de tareas, pero no proporciona la memoria total utilizada. Resulta que el enlace "Estadísticas para nerds" en el administrador de tareas conduce a chrome: // memory-redirect / que enumera la memoria total utilizada. Sería bueno tener una validación externa de estos números, así como una forma de obtener la información en la línea de comando para poder hacer más, pero esta parece ser la mejor manera disponible.