Semplice strumento per rappresentare graficamente l'utilizzo della memoria?


14

Esiste uno script che mostrerà l'utilizzo della memoria come un grafico, ad esempio come un grafico a torta, con ogni processo essendo una sezione separata?

Non sto cercando qualcosa come Munin per rappresentare graficamente l'utilizzo della memoria nel tempo, ma piuttosto mostrare l'utilizzo della memoria per processo in un singolo momento.

Per rendere la mia richiesta ancora più oscura, è per un server senza testa (quindi nessuna applicazione X). Il modo più semplice sarebbe quello di scrivere un file PNG, o possibilmente un file HTML (che potrebbe usare Javascript per consentire il filtraggio dei processi, cambiando tra tipi di grafici e così via)

Risposte:


13

La contabilità della memoria di processo è complicata per una serie di motivi che illustrerò tra un minuto. Per un semplice monitoraggio, gli script gkrellmd o nagios sono probabilmente sufficienti. Se vuoi una maggiore precisione, dovrai apparire più difficile.

smem introduce il concetto di dimensioni proporzionali del set :

Poiché ampie porzioni di memoria fisica sono in genere condivise tra più applicazioni, la misura standard dell'utilizzo della memoria nota come dimensione del set di residenti (RSS) sovrastimerà in modo significativo l'utilizzo della memoria. PSS invece misura la "quota equa" di ciascuna applicazione di ciascuna area condivisa per fornire una misura realistica.

Esempio: si avvia GNOME, provocando l'avvio di una serie di processi, uno per ogni applet e programma. Si collegano tutti a libglib. Linux carica libglib in un blocco di memoria e lo mappa in ogni processo che richiede libglib. La contabilità della memoria ingenua conta l'intera dimensione libglib rispetto a ogni processo collegato ad essa.

smem divide il costo di libglib tra i processi che lo utilizzano, per dare un quadro più ravvicinato della realtà. Ha anche una serie di opzioni per visualizzare l'utilizzo della memoria (dal sito Web):

  1. Mostra smem di informazioni di processo di base
  2. Mostra la vista del sistema smem -R 4G -K / path / to / vmlinux -w
  3. Mostra totali e percentuali smem -t -p
  4. Mostra colonne diverse smem -c "nome utente pss"
  5. Mostra i processi filtrati mappando smem -M libxml
  6. Mostra i mapping filtrati per processo smem -m -P [e] volution
  7. Leggi i dati dall'acquisizione tarball smem --source capture.tar.gz
  8. Mostra un grafico a barre etichettato da pid smem --bar pid -c "pss uss"
  9. Mostra un grafico a torta di RSS etichettato con il nome smem --pie name -s rss

Sarà tuttavia necessario un kernel molto recente (> 2.6.27).


1
Sì, il loro suggerimento che 2.6.27 sia abbastanza recente è piuttosto ridicolo. Le uniche distro che conosco fornite con un kernel più recente sono Fedora 10 e Ubuntu 9.01.
Dave Cheney,

9,04; Ubuntu 8.10 è stato distribuito con 2.6.27, ma 2.6.30 è in rc3.
jldugger,

Mi scuso, ho trascorso molto tempo in terra RHEL, dove 2.6.18 è considerato recente.
Dave Cheney,

5

Non riesco a pensare a niente dallo scaffale

tuttavia, una combinazione di uno script PHP che esegue ps -AH v | awk '{print $ 8, $ 9, $ 10}' e utilizzarlo con pChart potrebbe darti una pagina web che farebbe quello che stai cercando? (utilizzo in Kb, percentuale del totale e nome del processo)


1
+1, ho pensato a questo con l'API di google chart. :)
Nodo

buon punto. google chart api è probabilmente più veloce con cui lavorare ...
Mark Regensberg,

2

Dai un'occhiata a sarface : dipende dai dati sar e puoi monitorare l'utilizzo della memoria (e tutti gli altri dati sar / sysstat) dal vivo.



1

Fallo da solo. Crea un semplice script di shell aggiornando il database RRD. Quindi traccia un grafico usando rrdtool.


1

Se ti piacciono davvero i livelli più bassi di dettaglio, non dimenticare di collezionare. Ecco un esempio dei tipi di utilizzo della memoria per processo che può segnalare:

RECORD 1 cag-dl585-02 (1244758290.002) (gio 11 giu 18:11:30 2009)

SINTESI DEL PROCESSO (i contatori sono / sec)
# Utente 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 736K 5904K 0 0 sendmail:
 9108 radice S 6428 K 0 360 K 180 K 84 K 88 K 1944 K 0 0 gpm
 9120 radice S 74808K 0 1136K 476K 520K 48K 1920K 0 0 crond
 9173 xfs S 20904K 0 1828K 1124K 88K 104K 3084K 0 0 xfs

Se sei interessato a processi specifici, puoi specificare i filtri appropriati (incluso un interruttore per mostrare i thread).

E se sei interessato alla memoria in generale, può anche mostrare i dettagli della lastra e persino avere un output in formato vmstat. Perché vorresti mostrare i dati in formato vmstat quando lo strumento esistente lo fa già? È facile: con collettivamente puoi registrare le statistiche in un file e riprodurlo in seguito in più formati.

provalo, ti piacerà


1
  1. Grep il / i processo / i.
  2. Analizzare l'output e salvare in formato separato da virgola in un file di testo.
  3. aprire il file separato da virgole in Excel.
  4. Disegna il grafico per quei dati usando l'utilità del grafico di Excel.

Se desideri snapshot di memoria a intervalli di tempo diversi ... imposta il processo cron all'intervallo desiderato ed esegui lo script.

Spero possa aiutare....


0

Questo non è esattamente quello che stai cercando, ma forse puoi adattarlo alle tue esigenze usando questo riferimento (cerca "Uso della memoria per processo").




0

Non sono entrato nei dettagli, ma collectl ha un'opzione per generare output separati da delimitatori, quindi nel caso di gnuplot, generi semplicemente i tuoi dati con spazi al loro interno e sei pronto. Anche caricherà bene in Excel. Se vuoi le virgole puoi cambiare il delimitatore e se vuoi davvero fare la rotta rrd (stai solo attento perché i grafici non devono necessariamente corrispondere ai dati!), Puoi cambiare il delimitatore in due punti e persino i timestamp in UTC. -marchio



Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.