Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 18/05/2007, à 15: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, à 15:02

dark_vidor

Re : La commande Top, demande d'explications

non rien sad

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, à 15:03)

Hors ligne

#28 Le 18/05/2007, à 15: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, à 15:09

dark_vidor

Re : La commande Top, demande d'explications

heu

time stats.php
bash: stats.php : commande introuvable

hmm

Hors ligne

#30 Le 18/05/2007, à 15: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, à 15:13

dark_vidor

Re : La commande Top, demande d'explications

j'ai rien compris big_smile

merci de ton aide wink

Hors ligne

#32 Le 18/05/2007, à 21: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, à 21:34)


Ubuntu - Precise Pangolin 64bits
ATI Radeon HD5670

Hors ligne

#33 Le 18/05/2007, à 21: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
0

real    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 wink

Hors ligne

#34 Le 18/05/2007, à 22: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, à 22: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 tongue)

Dernière modification par dark_vidor (Le 18/05/2007, à 22:44)

Hors ligne