#26 Le 18/05/2007, à 14:00
- phlinux
Re : La commande Top, demande d'explications
C'est bizarre, on dirait que [[:digit:]] n'est pas reconnu alors qu'il s'agit d'une expression réguliere (avancée soit !)
La premiere ligne d'un vmstat ou autre donne toujours un résultat dont il ne faut pas tenir compte, la mesure démarrant à n'importe quel moment.
Nota: Le prefiltre indique de ne realiser le calcul 100 - Idle (print 100 -$15) que sur les lignes dont le premier champ ($1) commence par un chiffre ou plusieurs a l'exclusion de tout autre caractere. Dans $1 on ne doit donc trouver que le contenu de la colonne r.
A tout hasard, essaie peut etre :
(la syntaxe précédente doit convenir très bien.... c'est juste pour le fun !)
vmstat -n 1 11 | awk '$0 ~ /^ *[[:digit:]]+/ {print 100 - $15}'
Ubuntu - Precise Pangolin 64bits
ATI Radeon HD5670
Hors ligne
#27 Le 18/05/2007, à 14:02
- dark_vidor
Re : La commande Top, demande d'explications
non rien
et qu'es ce qui va etre le plus gourmand en ressource ? le vmstat avec awk ou
exec('vmstat 1 11', $result);
unset($result[0]);
unset($result[1]);
unset($result[2]);
$idle = array();
foreach($result as $r)
{
$line = explode(" ", $r);
$a_line = array();
foreach($line as $l)
{
if( $l != NULL )
{
array_push( $a_line, $l);
}
}
array_push( $idle, $a_line[14]);
}
/**/
$moy = 0;
$nb_v = 0;
$max = $idle[0];
$min = $idle[0];
foreach($idle as $v)
{
if( !empty( $v ) )
{
if( $v > $max) $max = $v;
if( $v < $min) $min = $v;
$moy+= $v;
$nb_v ++;
}
}
$time = date("l d F H:i:s");
echo $time.'<br>';
$cpu_min = round( 100-$max, 2 );
$cpu_moy = round( 100-($moy/$nb_v), 2 );
$cpu_max = round( 100-$min, 2 );
$duree = temps_execution();
edit : c'est du php ^^
Dernière modification par dark_vidor (Le 18/05/2007, à 14:03)
Hors ligne
#28 Le 18/05/2007, à 14:07
- phlinux
Re : La commande Top, demande d'explications
Là, je sais pas. Je ne peux pas essayer je n'ai pas installé de PHP.
Néanmoins, Il suffit de lancer les deux execution au travers d'un time et tu seras fixé :
time vmstat -n .....
time ton prog.php args
Ubuntu - Precise Pangolin 64bits
ATI Radeon HD5670
Hors ligne
#29 Le 18/05/2007, à 14:09
- dark_vidor
Re : La commande Top, demande d'explications
heu
time stats.php
bash: stats.php : commande introuvable
Hors ligne
#30 Le 18/05/2007, à 14:12
- phlinux
Re : La commande Top, demande d'explications
oops... je dois partir
le pb vient de la façon dont est lancé le php. tu dois passer après time la même commande que sans time...
Je jetterai un oeil sur le fil en rentrant...
Ubuntu - Precise Pangolin 64bits
ATI Radeon HD5670
Hors ligne
#31 Le 18/05/2007, à 14:13
- dark_vidor
Re : La commande Top, demande d'explications
j'ai rien compris
merci de ton aide
Hors ligne
#32 Le 18/05/2007, à 20:32
- phlinux
Re : La commande Top, demande d'explications
Désolé....
Je ne suis pas familier avec php et je ne sais pas comment executer cela directement à partir d'une cde en ligne.
mais les mesures a faire sont par exemple :
time top -b -d 1 -n 11 | awk '$1 ~ /^Cpu/ {printf("%d %\n"),100-$10;}'
ou
time vmstat -n 1 11 | awk '$1 ~ /^[0-9]+/ {print 100 - $15}'
pour un script php , il faut l'appeler comme pour la commande standard mais en le faisant précéder de la commande time
Par ex, si le php s'execute en en lancant
php -f ton_script.php
il suffit de faire
time php -f ton_script.php
Voilà, j'espère que c'est clair cette fois.
Dernière modification par phlinux (Le 18/05/2007, à 20:34)
Ubuntu - Precise Pangolin 64bits
ATI Radeon HD5670
Hors ligne
#33 Le 18/05/2007, à 20:37
- dark_vidor
Re : La commande Top, demande d'explications
alexandre@CAD2000:/var/www/stats$ time php -f stats_serveur.php
Friday 18 May 21:35:52<br><p>Stats CPU<br>% min = 0<br>% moy = 0.2<br>% max = 1<br>duree = 10.10</p><p>Stats RAM<br>Mémoire utilisateur = 270152
sur 514964 mem_idlee = 52.46</p><p> Stats /proc/loadavg<br>Nombre moyen de processus en attente durant :<br>la dernière minute : 0.57<br>les 5 dernières minutes : 0.58<br>les 15 dernières minutes: 0.76</p>du: `/var/lib/mysql/stats_serveur': Permission non accordée
du: `/var/lib/mysql/volvo': Permission non accordée
<p>Taille de la Base de Données : 21292</p>
real 0m10.759s
user 0m0.060s
sys 0m0.064s
alexandre@CAD2000:/var/www/stats$ time vmstat -n 1 11 | awk '$1 ~ /^[0-9]+/ {print 100 - $15}'
22
3
0
0
0
0
1
0
0
0
0real 0m10.076s
user 0m0.000s
sys 0m0.004s
autrement dit vu que mon script php à des trucs en plus c'est a peut pres pareil je vais en refaire une nouvelle version avec la nouvelle commande vmstat et tester les deux
Hors ligne
#34 Le 18/05/2007, à 21:06
- phlinux
Re : La commande Top, demande d'explications
Oui, il vaut meiux comparer des contextes equivalents...
Mais le principe est là...
Ubuntu - Precise Pangolin 64bits
ATI Radeon HD5670
Hors ligne
#35 Le 18/05/2007, à 21:25
- dark_vidor
Re : La commande Top, demande d'explications
get_stats_cpu1.php
<?
exec("vmstat -n 1 11 | awk '$1 ~ /^[0-9]+/ {print 100 - $15}'", $stats_cpu);
array_shift($stats_cpu);
$cpu_moy = 0;
$cpu_max = $stats_cpu[0];
$cpu_min = $stats_cpu[0];
$cpu_nb_val = 0;
foreach($stats_cpu as $v)
{
if( !empty( $v ) )
{
if( $v > $cpu_max) $cpu_max = $v;
if( $v < $cpu_min) $cpu_min = $v;
$cpu_moy+= $v;
$cpu_nb_val ++;
}
}
$cpu_moy = round( ($cpu_moy/$cpu_nb_val), 2 );
echo '<p>Stats CPU<br>';
echo '% min = '.$cpu_min.'<br>';
echo '% moy = '.$cpu_moy.'<br>';
echo '% max = '.$cpu_max.'<br>';
?>
get_stats_cpu2.php
<?
exec('vmstat 1 11', $result);
unset($result[0]);
unset($result[1]);
unset($result[2]);
$idle = array();
foreach($result as $r)
{
$line = explode(" ", $r);
$a_line = array();
foreach($line as $l)
{
if( $l != NULL )
{
array_push( $a_line, $l);
}
}
array_push( $idle, $a_line[14]);
}
$moy = 0;
$nb_v = 0;
$max = $idle[0];
$min = $idle[0];
foreach($idle as $v)
{
if( !empty( $v ) )
{
if( $v > $max) $max = $v;
if( $v < $min) $min = $v;
$moy+= $v;
$nb_v ++;
}
}
$cpu_min = round( 100-$max, 2 );
$cpu_moy = round( 100-($moy/$nb_v), 2 );
$cpu_max = round( 100-$min, 2 );
echo '<p>Stats CPU<br>';
echo '% min = '.$cpu_min.'<br>';
echo '% moy = '.$cpu_moy.'<br>';
echo '% max = '.$cpu_max.'<br>';
echo 'duree = '.$duree.'</p>';
?>
serveur@derniere:/var/www/game/projet$ time php -f get_stat_cpu1.php
<p>Stats CPU<br>% min = 29<br>% moy = 40.7<br>% max = 58<br>
real 0m10.182s
user 0m0.052s
sys 0m0.020s
serveur@derniere:/var/www/game/projet$ time php -f get_stat_cpu2.php
<p>Stats CPU<br>% min = 1<br>% moy = 9<br>% max = 35<br>duree = </p>
real 0m10.155s
user 0m0.036s
sys 0m0.020s
J'en conclus que c'est pareil non ?
(c'est bien ça me fait un truc de plus a mettre dans le rapport )
Dernière modification par dark_vidor (Le 18/05/2007, à 21:44)
Hors ligne