Récupérer le %cpu %mem d'un processus
Bonsoir,
je dois récupérer le %cpu et %mem d'un processus pour créer mon propre ps.
Je récupére les informations du processus dans /proc/num_processus/stat.
Le problème est que je n'arrive pas à trouver le calcul avec les informations que j'ai (utime,stime,cutime,cstime,..) pour trouver le %mem et %cpu du processus.
Je ne trouve pas également le start et time d'un processus.
Comment les calculer/trouver ?
Merci, d'avance pour votre aide.
Récupérer le %cpu %mem d'un processus
Bonjour,
Je travaille actuellement sur un projet similaire (reproduction du TOP).
Pour la mémoire, en faisant un man proc, tu vas voir que tu peux récupérer la vsize et la rss (pour moi ce sont les 22èmes et 23èmes informations) via le fichier stat.
vsize correspond au champ VIRT du top.
rss au nombre de pages en mémoire réelle (non swappée). En multipliant cette valeur par la taille des pages (getpagesize()) tu peux donc connaitre la consommation de ta mémoire. Il te suffit en suite de récupérer la MemTotal indiquée dans le fichier /proc/meminfo pour connaitre le %MEM du processus, visible habituellement dans le TOP.
En ce qui concerne le cpu, je récupère, toujours dans le /proc/pid/stat les champs utime et stime. Je fais ensuite le ratio avec les 3 première valeurs indiqué dans /proc/stat (toujours man proc ;) ) pour avoir mon taux d'occupation CPU.
Néanmoins, sur ce dernier point, je n'arrive pas à obtenir les mêmes valeurs que dans le champ %CPU du TOP. Si quelqu'un a une explication ou une idée, je suis donc preneur...
J'espère avoir répondu à ta question.