#1 Le 06/05/2011, à 08:19
- nira83
Evaluation du % CPU utilisé
Bonjour,
Je dois évaluer la différence de charge CPU entre différents type de socket.
Pour ce faire j'utilisais la commande
perf stat ./server 15789
15789 le port d'ouverture de connection.
La commande me renvoit à la fin de mon test :
Performance counter stats for './server_scr 12365 50000':
4.474760 task-clock-msecs # 0.002 CPUs
24 context-switches # 0.005 M/sec
1 CPU-migrations # 0.000 M/sec
119 page-faults # 0.027 M/sec
<not counted> cycles
<not counted> instructions
<not counted> cache-references
<not counted> cache-misses
2.011848215 seconds time elapsed
Mais voila j'ai un doute sur la commande perf stat. Les resultats ne concordent pas avec le cahier des charges qui m'a été imposé.
0.002 CPUs représente quoi? LE % de charge CPU? c'est à dire 0.002% de CPU ou 0.2% de CPU?
Existe il une commande équivalente à perf stat ?
JE connais bien sur top mais ça renvoi la valeur en temps réelle. Et ce n'est pas pratique pour récupérer les données.
La commande perf stat était parfaite dans le sens ou je lance le test, il se finit , Récupération des données.
D'après vos connaissances ...Une socket raw est censé consommé moins de charge CPU qu'une socket normal?
Dans le sens ou pour la socket normal on doit avoir une connexion d'établie , alors qu'avec des sockets raw on envoi et reçoit sans vérification , en écoutant simplement sur l'interface réseau.
En espérant avoir été claire.
Merci pour vos futurs réponses!
Hors ligne
#2 Le 09/05/2011, à 08:29
- nira83
Re : Evaluation du % CPU utilisé
Bonjour ,
Je me permes de faire remonter se topic , n'ayant pas eu de réponse...
Merci pour vos futurs réponses.
Hors ligne
#3 Le 09/05/2011, à 09:35
- FRUiT
Re : Evaluation du % CPU utilisé
Bah on comprend pas tout et il manque des infos...
Exemple, tu veux quoi exactement un snapshot du cpu ? Une charge moyenne ? Sur combien de temps ? 5min ? 5h ? Quelle(s) socket(s) ? nomme les.
T'as regardé du coté de :
cat /proc/loadavg
Pas sur que ce soit ce que tu cherches mais bon. Y'a pléthore de sites qui en expliquent les valeurs.
T'as lu le "man top" ? Apparemment on peut en faire des choses assez compliquées.
Dernière modification par FRUiT (Le 09/05/2011, à 09:39)
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#4 Le 09/05/2011, à 09:45
- FRUiT
Re : Evaluation du % CPU utilisé
Sinon pour récupérer la valeur brute à un instant T on peut faire un trux du genre :
check_cpu ()
{
unset num tot
for freq in $(awk -F'[. ]' '/MHz/ {print $(NF-1)}' /proc/cpuinfo); do
num=$(($num+1))
tot=$(($tot+$freq))
done
printf "%s" "$(($tot/$num))"
return 0
}
CPU=$(check_cpu)
Après à toi de faire des relevés et des calculs...
Dernière modification par FRUiT (Le 09/05/2011, à 09:51)
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#5 Le 09/05/2011, à 10:39
- nira83
Re : Evaluation du % CPU utilisé
Bah on comprend pas tout et il manque des infos...
Faut m'en demander , je ne vais pas mordre si on me demande plus d'info =O.
Exemple, tu veux quoi exactement un snapshot du cpu ? Une charge moyenne ? Sur combien de temps ? 5min ? 5h ? Quelle(s) socket(s) ? nomme les.
Avec la commande que j'utilise actuellement ( Man perf stat ) J'obtiens après chaque exécution d'envoi/réception la valeur de la charge CPU utilisé pour chaque cas, je la stock puis je fais tout un traitement dessus.
D'ailleurs je me rappel que tu m'avais déja aidé par rapport à ça.
Je traite des données de cette forme :
Size packet , Number packet
450 10000 ==> Recuperation charge CPU
900 10000 ==> Recuperation charge CPU
...
...
...
MTU 10000 ==> Recuperation charge CPU
Le problème , c'est que la valeur correspondant à la charge n'est pas correcte ou plus éxactement , je ne comprend pas ce quelle représente.
Que renvoi exactement perf stat?
Que renvoi perf stat -a? Je viens de l'utiliser mais la valeur est toujours la même pour n'importe quelles tailles/nombres de paquet.
Ce n'est pas vraiment dans le temps que le problème est.
Pour résumer, je dois prouver que des sockets raw sont moins gourmandes en utilisation CPU que des sockets normales.
Je dois faire varier la taille des paquets, et pour chaque variation obtenir la charge CPU.
Le problème avec top, c'est qu'il ne se "rafraichit" pas obligatoirement en cadence avec la réception/envoi de paquet donc je n'obtiens pas la valeur pour chaque taille. De plus je ne sais pas non plus à quelle taille appartient tel ou tel valeur de CPU, ni quelle taille à été sauté au moment de la reception de valeur.
Dans l'idéal, il me faudrait une commande qui fonctionne comme perf stat. C'est à dire , quand l'exécution du programme d'envoi/réception finit, je récupère de suite la valeur du CPUs.
check_cpu ()
{
unset num tot
for freq in $(awk -F'[. ]' '/MHz/ {print $(NF-1)}' /proc/cpuinfo); do
num=$(($num+1))
tot=$(($tot+$freq))
done
printf "%s" "$(($tot/$num))"
return 0
}
CPU=$(check_cpu)
Merci pour cette fonction, mais peux tu détailler son principe?
Comment je peux l'utiliser? je dois la faire tourner en parallèle de mes applications server/client ?
Que me renvoitelle? quand entend tu par valeur brute?
En tous cas encore une fois, Merci
Hors ligne
#6 Le 09/05/2011, à 11:05
- FRUiT
Re : Evaluation du % CPU utilisé
En bas de la page que tu linkes, j'ai cliqué sur perf top
Ca correspondrait pas mieux à tes besoins ? Désolé moi je pose ces questions pour faire avancer ton thread mais personnellement j'y connais rien en perf stat...
Sinon la fonction elle relève le cpu de chaque processeur/core et renvoie un snapshot de la moyenne des valeurs de ces cpus.
Essaye cat /proc/cpuinfo pour commencer. Mais bon finalement je pense que c'est pas une solution qui te conviendra.
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#7 Le 09/05/2011, à 11:16
- nira83
Re : Evaluation du % CPU utilisé
J'ai aussi essayé perf top mais c'est équivalent à top.
J'aimerai vraiment la valeur précise utilisé par chaque envoi/reception.
Donc ton code permet de connaitre le loadaverage ?
Je suis assez têtu , mais j'ai l'impression que la commande perf stat est tout indiqué pour ce que je veux faire...mais je ne dois pas utiliser les bonnes options, je suis entrain d'en tester différentes combinaisons sans grand succés >_<
Qu'est ce que : CPU utilization factor ? J'imagine que c'est le facteur d'utilisation du CPU...mais à quoi ça correspond?
Sinon faute de moyen...je releverai le loadaverage juste avant l'envoi/reception et je ferai la "différence" entre avant et apres .
Hors ligne
#8 Le 09/05/2011, à 11:57
- FRUiT
Re : Evaluation du % CPU utilisé
Alors,
cat /proc/loadavg
Renvoie le load average oui, mais
cat /proc/cpuinfo
(ou la fonction) renvoie la vitesse à laquelle tourne actuellement le(s) processeur(s). En MHz.
Par exemple un des processeurs tourne à 800MHz et l'autre à 1600MHz, la fonction renverra 1466 (MHz) soit la moyenne des 2 (ou plus si plus de cores). A oublier donc je pense vraiment pas que ce soit ce que tu cherches.
Je te souhaite de tomber sur un expert en perf stat, comme je le disais moi je connais pas je saurai pas répondre à tes autres questions. Cela dit maintenant que le problème est un peu plus précis peut-être l'un d'entre eux te répondra-t-il.
Dernière modification par FRUiT (Le 09/05/2011, à 12:01)
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#9 Le 09/05/2011, à 12:19
- nira83
Re : Evaluation du % CPU utilisé
Je vais voir la solution sur le loadaverage en utilisant la commande top.
Peut on régler la fréquence de rafraichissement?
D'apres le man oui :
-d : Delay time interval as: -d ss.tt (seconds.tenths)
Specifies the delay between screen updates, and overrides the corresponding value in one's personal configuration file or the startup default. Later this can be changed with the 'd' or 's' interactive commands.
Mais :
ss => Second
Tenths => dixieme de second?
top - 12:55:26 up 4:06, 6 users, load average: 0.83, 0.93, 0.50
Tasks: 172 total, 1 running, 171 sleeping, 0 stopped, 0 zombie
Cpu(s): 3.6%us, 2.8%sy, 0.0%ni, 93.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
...
....
Sur la troisieme ligne on lit 3.6%us.
C'est donc les processus utilisés par l'utilisateur.
Comme je me logue en root sur mes deux serveurs de tests...Question bête mais...root est bien considéré comme un utilisateur?
Hors ligne