it-swarm-es.com

¿Herramienta sencilla para graficar el uso de la memoria?

¿Existe un script que muestre el uso de la memoria como un gráfico, por ejemplo, como un gráfico circular, siendo cada proceso un segmento separado?

No estoy buscando algo como Munin para graficar el uso de la memoria a lo largo del tiempo, sino mostrar el uso de la memoria por proceso en un solo punto en el tiempo.

Para hacer mi solicitud aún más oscura, es para un servidor sin cabeza (por lo que no hay aplicaciones X). La forma más sencilla sería escribir un archivo PNG, o posiblemente un archivo HTML (que podría usar Javascript para permitir el filtrado de procesos, cambiar entre tipos de gráficos, etc.)

14
dbr

La contabilidad de la memoria por proceso es complicada por varias razones que abordaré en un minuto. Para una monitorización simple, los scripts gkrellmd o nagios probablemente sean suficientes. Si desea una mayor precisión, tendrá que buscar más.

smem introduce el concepto de ¡Tamaño de conjunto proporcional:

Debido a que grandes porciones de memoria física generalmente se comparten entre múltiples aplicaciones, la medida estándar de uso de memoria conocida como tamaño de conjunto residente (RSS) sobrestimará significativamente el uso de memoria. En cambio, PSS mide la "participación justa" de cada aplicación en cada área compartida para dar una medida realista.

Ejemplo: inicia GNOME, lo que hace que se inicien varios procesos, uno para cada subprograma y programa. Todos se vinculan a libglib. Linux carga libglib en un bloque de memoria y lo asigna a cada proceso que quiere libglib. La contabilidad de memoria ingenua cuenta el tamaño completo de libglib en cada proceso que se vincula a él.

smem divide el costo de libglib entre los procesos que lo utilizan, para dar una imagen más cercana de la realidad. También tiene una serie de opciones para mostrar el uso de la memoria (del sitio web):

  1. Mostrar información básica del proceso SMEM
  2. Mostrar vista del sistema smem -R 4G -K/ruta/a/vmlinux -w
  3. Mostrar totales y porcentajes smem -t -p
  4. Mostrar diferentes columnas smem -c "nombre de usuario pss"
  5. Mostrar procesos filtrados por mapeo de smem -M libxml
  6. Mostrar asignaciones filtradas por proceso smem -m -P [e] volution
  7. Leer datos de capture tarball smem --source capture.tar.gz
  8. Muestra un gráfico de barras etiquetado por pid smem --bar pid -c "pss uss"
  9. Muestra un gráfico circular de RSS etiquetado por el nombre smem --pie name -s rss

Sin embargo, necesitará un kernel muy reciente (> 2.6.27).

13
jldugger

No puedo pensar en nada del estante

sin embargo, una combinación de un PHP script ejecutando ps -AH v | awk '{print $ 8, $ 9, $ 10}' y usar eso con pChart podría darle una página web que haría lo que está buscando? (uso en Kb, porcentaje del total y nombre del proceso)

5
Mark Regensberg

Eche un vistazo a sarface - depende de los datos sar, y puede monitorear el uso de su memoria (y todos los demás datos sar/sysstat) en vivo.

2
Xerxes

y ¿qué pasa con collectd ?

1
jnrg

Hazlo tu mismo. Haga un script de Shell simple que actualice la base de datos RRD. Luego dibuja una gráfica usando rrdtool.

1
ahes

Si realmente te gustan los niveles más bajos de detalle, no olvides Collectl. A continuación, se muestra un ejemplo de los tipos de utilización de memoria por proceso que puede informar:

 REGISTRO 1 cag-dl585-02 (1244758290.002) (jueves 11 de junio 18:11:30 2009) 
 
 RESUMEN DEL PROCESO (los contadores son /sec)
# Usuario PID S VmSize VmLck VmRSS VmData VmStk VmExe VmLib MajF MinF Comando 
 9089 root S 66856K 0 2328K 1440K 212K 736K 6812K 0 0 sendmail: 
 9097 smmsp S 57600K 0 1772K 1304K 204K 736Kmail enviar 5 : 
 9108 raíz S 6428K 0 360K 180K 84K 88K 1944K 0 0 gpm 
 9120 raíz S 74808K 0 1136K 476K 520K 48K 1920K 0 0 crond 
 9173 xfs S 20904K 0 1828K 1124K 88K 104K 3084K 0 0 xfs 

Si está interesado en procesos específicos, puede especificar filtros apropiados (incluido un interruptor para mostrar hilos).

Y si está interesado en la memoria en general, también puede mostrar detalles de losa e incluso tiene una salida en formato vmstat. ¿Por qué querría mostrar datos en formato vmstat cuando la herramienta existente ya lo hace? Eso es fácil: con colectivamente puede registrar estadísticas en un archivo y reproducirlo más tarde en múltiples formatos.

pruébalo te gustará

1
Mark Seger
  1. Grep el (los) proceso (s).
  2. Analice la salida y guárdela en formato separado por comas en un archivo de texto.
  3. abra el archivo separado por comas en Excel.
  4. Dibuje el gráfico para esos datos usando la utilidad de gráficos de Excel.

Si desea instantáneas de la memoria en diferentes intervalos de tiempo ... configure el trabajo cron en el intervalo deseado y ejecute el script.

espero que ayude....

1
Manu

Hmm, el gnuplot FAQ lo dice no admite gráficos circulares , pero sugieren el gráfico circular de Bernhard Reiter .

0
Philip Durbin

Puede usar #top o #sysstat

0
Rajat

Esto no es exactamente lo que está buscando, pero quizás pueda adaptarlo a sus necesidades usando esta referencia (busque "Uso de memoria por proceso").

0
Ivan

kSar, basado en datos sar, pero es Java basado, por lo que es más o menos independiente de la plataforma y le permitirá enviar ssh a un Host remoto para obtener los datos.

http://ksar.atomique.net/

0
Greeblesnort

No entré en más detalles, pero collectl tiene una opción para generar una salida separada por delimitadores, por lo que en el caso de gnuplot, solo genera tus datos con espacios y ya está todo listo. Incluso se cargará muy bien en Excel. Si quieres comas, puedes cambiar el delimitador y si realmente quieres hacer la ruta rrd (¡solo ten cuidado porque las gráficas no necesariamente coinciden con los datos!), Puedes cambiar el delimitador a dos puntos e incluso cambiar las marcas de tiempo a UTC. -marca

0
Mark Seger

¿No phpsysinfo le da la capacidad de ver la información del proceso de alguna manera?

0
djangofan