Re: monitorare utilizzo di RAM

2016-05-02 Per discussione Piviul
Piviul ha scritto il 02/05/2016 alle 08:46:
> [...]
> cmd="ps aux -p $pid | tail -n1 | sed 's/^"
  ^^^

è un refuso: ps u -p... ovviamente

Piviul



Re: monitorare utilizzo di RAM

2016-05-02 Per discussione Piviul
Mille grazie a tutti quanti; se qualcuno fosse interessato posto lo script:

#!/bin/bash

pname=dar
logger=$(which logger)
[ -z $logger ] && echo "E: logger not found" && exit 1
logger="$logger -t $(basename $0 .sh)"
while [ 1 = 1 ]; do
pid=$(pidof $pname | cut -f1 -d\ )
maxram=0
if [ -n "$pid" ]; then
$logger "I find a process with name $pname (pid $pid): I begin
to monitor the max RAM used by the process"
while [ "$(pidof $pname)" = "$pid" ]; do
str="[[:space:]]*[^[:space:]]*"

cmd="ps aux -p $pid | tail -n1 | sed 's/^"
for i in {1..4}; do cmd=$cmd$str; done # I skip first 4
(USER,PID,%CPU,%MEM,VSZ)
cmd="$cmd[[:space:]]*\([^[:space:]]*\).*$/\1/'"
curram=$(eval $cmd)
# echo "$(date --rfc-3339=seconds) ($pid): $curram"

if [ -z "$(echo $curram | grep ^[0-9]*$)" ]; then
$logger "E: error finding the RAM amount used by $pname:
$curram doesn't seems to be numeric"
elif [ $curram -gt $maxram ]; then
   maxram=$curram
fi
sleep 1
done
$logger "the process $pname ($pid) has used $maxram Kib"
fi
sleep 10
done




Re: monitorare utilizzo di RAM

2016-04-30 Per discussione Marco Romano

Il 28/04/2016 12:43, Piviul ha scritto:

sed
's/^[[:space:]]*'$pid'[[:space:]]*[^[:space:]]*[[:space:]]*[^[:space:]]*[[:space:]]*[^[:space:]]*[[:space:]]*[^[:space:]]*[[:space:]]*\([^[:space:]]*\).*$/\1/')


Se ti serve il valore nella sesta colonna più che sed forse è più adatto 
awk:


awk '{print $6}'

la riga di dichiarazione della variabile curram diverrebbe quindi:

curram=$(top -p $pid -b -n1 |\
awk -v pid=$pid '$1 == pid {print $6}')

grazie alla verifica $1 ~ pid ci siamo tolti di mezzo anche tail ;)

--
Kind regards,

Marco Romano



Re: monitorare utilizzo di RAM

2016-04-30 Per discussione Davide Prina

On 29/04/2016 23:33, gerlos wrote:


Volendo usare roba più "elementare" [...]  (1234 è
il pid del processo):

$ cat /proc/1234/status | grep Vm
VmPeak:43904 kB
VmSize:42880 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 13716 kB
VmRSS: 13700 kB
VmData:34344 kB
VmStk:   136 kB
VmExe:   384 kB
VmLib:  6740 kB
VmPTE:32 kB
VmPMD: 0 kB
VmSwap:0 kB


$ man ps
[...]
NOTES
   This ps works by reading the virtual files in /proc.  This ps 
does not need to be setuid kmem or have any privileges to run.  Do not 
give this ps any special permissions.


   CPU usage is currently expressed as the percentage of time spent 
running during the entire lifetime of a process.  This is not ideal, and 
it does not conform to the standards that ps otherwise

   conforms to.  CPU usage is unlikely to add up to exactly 100%.

   The SIZE and RSS fields don't count some parts of a process 
including the page tables, kernel stack, struct thread_info, and struct 
task_struct.  This is usually at least 20 KiB of memory that is
   always resident.  SIZE is the virtual size of the process 
(code+data+stack).

[...]

interessante, questa cosa del non tener conto di page tables, ... non la 
sapevo.


Secondo me è meglio usare ps...

Ciao
Davide

--
Dizionari: http://linguistico.sourceforge.net/wiki
Strumenti per l'ufficio: https://www.libreoffice.org
GNU/Linux User: 302090: http://counter.li.org
Non autorizzo la memorizzazione del mio indirizzo su outlook



Re: monitorare utilizzo di RAM

2016-04-29 Per discussione gerlos
Ciao,
Volendo usare roba più "elementare", per ottenere la quantità di memoria
usata da un processo (comunque la si definisca) si può usare anche (1234 è
il pid del processo):

$ cat /proc/1234/status | grep Vm
VmPeak:43904 kB
VmSize:42880 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 13716 kB
VmRSS: 13700 kB
VmData:34344 kB
VmStk:   136 kB
VmExe:   384 kB
VmLib:  6740 kB
VmPTE:32 kB
VmPMD: 0 kB
VmSwap:0 kB

Poi se si vuole si può usare grep per filtrare solo il valore che interessa
(ad es. VmRSS se i dati devono "somigliare" a quellidi top).

Se poi si vogliono ulteriori dettagli, c'è /proc/1234/smaps, ma non è
altrettanto semplice da leggere! :-O

Saluti,
Gerlos


Re: monitorare utilizzo di RAM

2016-04-29 Per discussione Davide Prina

On 29/04/2016 10:04, Piviul wrote:


io vorrei sapere quanta RAM viene allocata per un processo in totale,
indipendentemente dal fatto che l'allocazione avvenga per i dati, per
l'eseguibile, in swap o meno...


ma allora non vuoi sapere quanta RAM usa il processo, ma quanta memoria 
totale (tra reale = RAM e virtuale = SWAP) viene utilizzata



quale valore devo prendere?


quello che vuoi quindi è la somma di DRS+RSS+TRS
questo valore, se non erro, è espresso in KByte

c'è anche VSZ che, se non erro, è espresso in Kbit

lo puoi ricavare con l'opzione -o, ad esempio:
$ ps -o %z


perché il campo che restituisce ps che più si avvicina a RES di top (che
credo sia la quantità usata dal processo) è RSS... ma non è mai uguale!


$ man top
[...]
18. RES  --  Resident Memory Size (KiB)
 The non-swapped physical memory a task is using
[...]

che, come giustamente dici, equivale a RSS, però RES è in Kbit, mentre 
RSS è in KByte


Per saperne di più è sufficiente usare questi due comandi:
$ man top
$ man ps

Ciao
Davide

--
Dizionari: http://linguistico.sourceforge.net/wiki
Petizione contro il formato ms-ooxml:
http://www.noooxml.org/petition
Non autorizzo la memorizzazione del mio indirizzo su outlook



Re: monitorare utilizzo di RAM

2016-04-29 Per discussione Piviul
Davide Prina ha scritto il 28/04/2016 alle 20:22:
> se vuoi sapere l'uso della RAM ti consiglio di usare ps
> 
> Puoi così sapere quanta RAM, RAM per dati, RAM per eseguibile, quanto
> swap sta usando un processo
io vorrei sapere quanta RAM viene allocata per un processo in totale,
indipendentemente dal fatto che l'allocazione avvenga per i dati, per
l'eseguibile, in swap o meno... quale valore devo prendere? Lo chiedo
perché il campo che restituisce ps che più si avvicina a RES di top (che
credo sia la quantità usata dal processo) è RSS... ma non è mai uguale!

grazie mille

Piviul



Re: monitorare utilizzo di RAM

2016-04-28 Per discussione Davide Prina

On 28/04/2016 08:39, Piviul wrote:

dovrei monitorare l'utilizzo di RAM di un processo.


se vuoi sapere l'uso della RAM ti consiglio di usare ps

Puoi così sapere quanta RAM, RAM per dati, RAM per eseguibile, quanto 
swap sta usando un processo


es:
$ ps -v  | head

$ man ps
[...]
%mem%MEM  ratio of the process's resident set size  to the 
physical memory on the machine, expressed as a percentage.  (alias pmem).

[...]
drs DRS   data resident set size, the amount of physical 
memory devoted to other than executable code

[...]
rss RSS   resident set size, the non-swapped physical memory 
that a task has used (in kiloBytes).  (alias rssize, rsz).

[...]
trs TRS   text resident set size, the amount of physical 
memory devoted to executable code.

[...]
vsz VSZ   virtual memory size of the process in KiB 
(1024-byte units).  Device mappings are currently excluded; this is 
subject to change.  (alias vsize).


Ciao
Davide

--
Dizionari: http://linguistico.sourceforge.net/wiki
Client di posta: http://www.mozilla.org/products/thunderbird
GNU/Linux User: 302090: http://counter.li.org
Non autorizzo la memorizzazione del mio indirizzo su outlook



Re: monitorare utilizzo di RAM

2016-04-28 Per discussione Piviul
Gianluca Mangiarotti ha scritto il 28/04/2016 alle 11:53:
vi > Se non erro il valore è espresso in KB, almeno così risulta dal man
purtroppo no come dicevo... top aggiunge una m mentre htop aggiunge M
per esprimere il consumo in MiB. Ora ero interessato a sapere come
esprime il consumo in GiB.

Se a qualcuno interessa questo è lo script:

#!/bin/bash
pname=dar
logger=$(which logger)
[ -z $logger ] && echo "E: logger no found" && exit 1
logger="$logger -t $(basename $0 .sh): "
while [ 1 = 1 ]; do
pid=$(pidof $pname)
maxram=0
if [ -n "$pid" ]; then
$logger "Inizio monitoraggio utilizzo RAM per il processo $pname
($pid)"
while [ "$(pidof $pname)" = "$pid" ]; do
curram=$(top -p $pid -b -n1 |\
   tail -n1 |\
   sed
's/^[[:space:]]*'$pid'[[:space:]]*[^[:space:]]*[[:space:]]*[^[:space:]]*[[:space:]]*[^[:space:]]*[[:space:]]*[^[:space:]]*[[:space:]]*\([^[:space:]]*\).*$/\1/')
[ -n "$(echo $curram | grep [0-9]*m$)" ] && curram=$(echo
$curram | grep -o "[0-9]*") && curram=$(($curram*1024))
[ -n "$(echo $curram | grep [0-9]*g$)" ] && curram=$(echo
$curram | grep -o "[0-9]*") && curram=$(($curram*1024*1024))
if [ -z "$(echo $curram | grep ^[0-9]*$)" ]; then
$logger "E: errore nella ricerca della ram utilizzata:
$curram non contiene un valore interpretabile come consumo di ram"
else
[ $curram -gt $maxram ] && maxram=$curram
fi
sleep 1
done
$logger "il processo $pname ($pid) ha consumato al massimo
"$maxram"K di RAM"
fi
sleep 10
done

Lo script non fa altro che loggare in sysylog il consumo di RAM del
processo chiamato $pname (nello script ad esempio si monitorizza il
consumo di dar).

Un saluto

Piviul



Re: monitorare utilizzo di RAM

2016-04-28 Per discussione Gianluca Mangiarotti
Se non erro il valore è espresso in KB, almeno così risulta dal man


Gianluca


Inviato da Motorola Moto X
Il 28 apr 2016 11:42, "Piviul"  ha scritto:

> Gianluca Mangiarotti ha scritto il 28/04/2016 alle 11:02:
> > Il comando top -p "pid-del-processo" può aiutarti
> in effetti ero arrivato alla stessa conclusione...
>
> per vedere l'utilizzo di RAM devo guardare la colonna RES?
>
> nella colonna RES ho visto anche che alcune volte c'è un numero e
> immagino siano KiB, talvolta c'è un numero seguito da una m e immagino
> siano i MiB e nel caso in cui il risultato venga mostrato in GiB che
> lettera c'è, la g?
>
> Mille grazie
>
> Piviul
>
>
>


Re: monitorare utilizzo di RAM

2016-04-28 Per discussione Piviul
Gianluca Mangiarotti ha scritto il 28/04/2016 alle 11:02:
> Il comando top -p "pid-del-processo" può aiutarti
in effetti ero arrivato alla stessa conclusione...

per vedere l'utilizzo di RAM devo guardare la colonna RES?

nella colonna RES ho visto anche che alcune volte c'è un numero e
immagino siano KiB, talvolta c'è un numero seguito da una m e immagino
siano i MiB e nel caso in cui il risultato venga mostrato in GiB che
lettera c'è, la g?

Mille grazie

Piviul




Re: monitorare utilizzo di RAM

2016-04-28 Per discussione Gianluca Mangiarotti
Il comando top -p "pid-del-processo" può aiutarti

Grazie per l'attenzione
Buona giornata


Gianluca Mangiarotti
mail: giemm...@gmail.com

Inviato da Motorola Moto X
Il 28 apr 2016 08:39, "Piviul"  ha scritto:

> Ciao a tutti, dovrei monitorare l'utilizzo di RAM di un processo. Avete
> qualche consiglio?
>
> Piviul
>
>