Comment puis-je suivre et enregistrer l'utilisation de la CPU et de la mémoire sur un Mac?

Je sais que je peux utiliser Activity Monitor (ainsi qu'une série d'applications tierces) pour surveiller l'utilisation de la RAM et de la CPU sur mon Mac. Cependant, je souhaite capturer un journal sur une quantité de temps afin que je puisse comparer l'utilisation entre les processus sans avoir à prendre des prises d'écran, etc. Quelque chose de console comme ceci:

Process A (5:22 - 5:32) 5:22:01: 2.2% CPU, 5 Threads, 111.1MB Real Mem 5:22:03: 2.1% CPU, 4 Threads, 90.4MB Real Mem ... 

Comment puis-je accomplir cela?

Cela pourrait ne pas frapper la marque, mais essayez ceci:

 sar -o ~/output.sar 10 10 

Cela rassemble 10 séries de métriques à des intervalles de 10 secondes. Vous pouvez ensuite extraire des informations utiles à partir du fichier de sortie (même s'il est toujours en cours d'exécution), par exemple, vous obtiendrez l'activité du disque pour l'intervalle que vous avez échantillonné:

 sar -d -f ~/output.sar 

Faites un man sar pour découvrir quelles autres options il existe.

Modifier:

sar ne fait pas de mémoire afin que cela vous apporte la mémoire gratuite sur votre système à dix secondes d'intervalle:

 vm_stat 10 | awk 'NR>2 {gsub("K","000");print ($1+$4)/256000}' 

Vous pouvez le rediriger vers un fichier.

Si vous avez besoin de plus d'informations, demandez s'il vous plaît.

Vous pouvez enregistrer l'utilisation de la CPU et de la mémoire des processus, mais pas du nombre de threads, avec le programme Python Syrupy .

Syrupy est un script Python qui prend régulièrement des instantanés de la mémoire et de la charge de la CPU d'un ou plusieurs processus en cours, de manière à créer dynamiquement un profil de leur utilisation des ressources système.

Syrupy fonctionne par l'un des deux modes. Dans le premier mode (par défaut), il surveille l'utilisation de la ressource d'un processus résultant de l'exécution d'une commande spécifiée par l'utilisateur (qui peut être une combinaison arbitrairement complexe de programmes et d'arguments pouvant être invoqués à partir d'un terminal shell). Dans le deuxième mode, Syrupy surveille l'utilisation de ressources de processus externes exécutant des critères répondant aux critères spécifiés par l'utilisateur: un identifiant PID (identificateur de processus) ou une chaîne de commande correspondant à un modèle d'expression régulier.

Dans les deux cas, la surveillance de l'utilisation des ressources système est basée sur des appels répétés vers la commande système ps .

Pour votre cas d'utilisation, l'enregistrement de chaque processus en cours d'exécution, je pense que cette commande fonctionnerait:

 syrupy.py --poll-command='.*' 

Vous pouvez utiliser top données top et pipe dans awk ou grep pour lire les informations spécifiques dont vous avez besoin.

Vérifiez le ici; http://ss64.com/osx/top.html

top est en fait l'outil sous-jacent sur lequel Activity Monitor est développé.