Comment fonctionne nettop sur macOS (et pourquoi vous voulez une interface)
Tour d'horizon convivial de nettop sur macOS : ce qu'il montre, ce qu'il ne montre pas, et là où un moniteur graphique de bande passante prend le relais.
- Developer tools
- macOS
- Network monitoring
- Tutorial
Ouvrez Terminal et tapez nettop. En une seconde vous avez un affichage en direct, de style top, de chaque processus sur votre Mac faisant de l'I/O réseau — octets entrants, octets sortants, les routes qu'ils empruntent, les protocoles qu'ils utilisent. C'est un outil que vous ne saviez pas avoir, et une fois que vous le trouvez vous vous demandez pourquoi vous avez jamais ouvert l'onglet Network d'Activity Monitor. Voici une visite de nettop sur macOS, des drapeaux qui comptent vraiment, et des endroits où nettop arrive à court de chemin.
Spoiler : nettop est génial pour un coup d'œil ponctuel. Il n'est pas génial pour « que faisait Slack hier à 15 h ? » C'est l'écart qu'une interface au-dessus de ces mêmes compteurs noyau comble.
Ce qu'est vraiment nettop sur macOS
nettop est livré avec macOS, vit à /usr/bin/nettop, et y est depuis au moins 10.7. C'est un petit frontend en ligne de commande au-dessus des mêmes API noyau qu'Activity Monitor et Instruments utilisent — principalement proc_pidinfo avec les variantes socket et stats, plus les compteurs par route. Il n'exige pas root pour la plupart des usages. Il ne capture pas les paquets. Il n'a pas besoin d'installeur.
Lancez-le sans drapeaux :
nettopVous verrez quelque chose comme :
Processes
Google Chrome.40621 tcp4 34.117.x.x.443 Established
Google Chrome.40621 tcp4 142.250.x.x.443 Established
Slack Helper.41218 tcp4 52.5.x.x.443 Established
...Appuyez sur q pour quitter, ? pour l'aide, r pour basculer débits vs totaux, d pour basculer le mode delta.
Les drapeaux qui valent la peine d'être connus
Il y a beaucoup de drapeaux nettop. La plupart sont du bruit. Voici ceux que j'utilise vraiment.
-m pour le mode
-m route montre le trafic par route — utile pour voir si vous passez par le réseau local, le tunnel VPN, ou la route par défaut.
-m tcp et -m udp filtrent à un protocole.
-m process est le défaut et celui que vous voulez la plupart du temps.
-P pour le sélecteur de processus
-P fait tourner nettop une fois et déverse un instantané statique, au lieu de rafraîchir en direct. C'est ce que vous voulez quand vous le scriptez ou pipez vers un autre outil.
nettop -P -L 1Cela lance nettop en mode non-interactif pour un échantillon et quitte. Combinez avec -J pour limiter les colonnes (plus à ce sujet ci-dessous) pour une sortie de log propre.
-L pour le mode log
-L <count> lance nettop en mode log pour un nombre donné d'échantillons et quitte. -L 0 tourne pour toujours, déversant une ligne d'échantillon à chaque intervalle. L'intervalle par défaut est 1 seconde ; changez-le avec -s.
nettop -L 60 -s 1 -P -J bytes_in,bytes_out,interface,stateCela capture un échantillon par seconde pendant 60 secondes, avec juste les colonnes qui vous importent, et quitte. Pipez vers un fichier pour analyse ultérieure.
-J pour la sélection de colonnes
-J prend une liste séparée par virgules de noms de colonnes. Colonnes utiles :
bytes_in,bytes_out— totaux depuis le démarrage du processusrx_dupe,rx_ooo— retransmissions TCP et paquets hors-ordrere-tx— retransmissionsrtt_avg— temps de round-trip, utile pour repérer les réseaux lentsrcvsize,tx_win— état du tampon socketinterface— quelle interface (en0, utun0, lo0)state— état de connexion (Established, TimeWait, Listen)
La liste complète est dans man nettop. Il y a environ 30 colonnes ; la plupart du temps bytes_in,bytes_out,interface,state suffit.
-x pour XML
-x sort en format plist XML — analysable, douloureux à lire, mais utile si vous voulez alimenter nettop dans un autre script. En pratique la sortie de colonnes en forme JSON via -J et -L est généralement plus facile à manipuler.
-k pour cacher
-k <colonne> cache une colonne qui ne vous intéresse pas. L'opposé de -J. Utilisez-le interactivement quand vous voulez garder l'affichage en direct mais réduire le bruit.
Lire la sortie
Quelques choses à savoir sur les nombres que nettop sur macOS rapporte :
Les totaux sont depuis le démarrage du processus, pas depuis que vous avez lancé nettop. Un processus longue durée comme cloudd peut montrer des centaines de Mo même sur un système calme. Utilisez le mode delta (d interactivement, ou calculez les deltas depuis la sortie log -L) pour voir les vrais débits.
Chaque ligne est un flux, pas un processus. Un seul processus Chrome avec 40 onglets peut avoir 40+ lignes. Agrégez par PID vous-même — nettop ne le fera pas.
Les processus auxiliaires apparaissent par leur nom auxiliaire. Google Chrome Helper (Renderer), Slack Helper, com.docker.backend. Pas de regroupement. Vous voyez la vue brute du noyau.
Les routes peuvent être surprenantes. Une connexion passant par un tunnel VPN montrera l'interface utun0 ou similaire, pas en0. Si vous voyez du trafic sur une interface que vous ne reconnaissez pas, ça vaut l'investigation.
Où nettop tombe
Pour un outil intégré et gratuit, nettop est franchement utile. Mais il y a de vraies limites.
Pas d'historique
Quittez nettop et les données sont parties. Pas de fichier log, pas de fenêtre roulante, pas d'état persisté. Si vous ne regardiez pas quand le pic est arrivé, vous ne l'avez pas vu. Le mode log -L aide si vous le configurez avant l'événement que vous voulez capturer, mais c'est de la planification, pas du débogage.
Pas de regroupement des auxiliaires
Comme noté, vous voyez Google Chrome Helper (GPU), (Plugin), (Renderer), etc., comme lignes séparées. Les additionner mentalement à travers 30 processus de rendu de courte durée est tédieux et propice aux erreurs.
Terminal uniquement
Une session nettop en direct prend une fenêtre Terminal. Si vous voulez jeter un œil à « est-ce que quelque chose utilise la bande passante maintenant ? » pendant que vous écrivez du code, vous devez changer de contexte. Pas de widget en barre de menu, pas de notification, pas d'icône de tray.
Noms de colonnes confus
re-tx, rtt_var, tx_dupe — les colonnes sont nommées pour les statistiques TCP du noyau, pas pour les humains. La page de manuel est votre amie, mais la courbe d'apprentissage est réelle.
Pas de filtres par application ou catégorie
Vous ne pouvez pas dire « montre-moi seulement Chrome et ses auxiliaires » ou « montre-moi tout sauf les processus système ». Vous filtrez en pipant vers grep, ce qui marche mais n'est pas plaisant.
Pas d'alerte
Si vous voulez savoir quand une application commence soudain à utiliser 50 Mo/s, nettop ne vous le dira pas. Il faudrait l'enrober dans un script de polling qui diffe les échantillons et compare à un seuil.
Voyez ova en action
Un moniteur de bande passante en barre de menu consultable d'un coup d'œil — local, signé, ~3 Mo.
Pourquoi une interface aide
La plupart du temps, vous ne voulez pas vraiment connaître les statistiques TCP par flux. Vous voulez savoir :
- Quelque chose utilise-t-il la bande passante maintenant ?
- Quelle application est-ce ?
- Combien chaque application a-t-elle utilisé dans la dernière heure, journée, semaine ?
Une application en barre de menu comme ova lit grossièrement les mêmes données noyau que nettop lit, mais fait trois choses en plus :
- Regroupe les processus auxiliaires sous leur application parente, donc « Slack » est une ligne
- Stocke l'historique localement, donc vous pouvez parcourir en arrière et demander « que s'est-il passé à 14:47 »
- Vit dans la barre de menu, donc c'est à un coup d'œil pendant que vous travaillez
Ce n'est pas mieux que nettop — c'est différent. nettop est un outil de débogage que vous attrapez ponctuellement. Un moniteur de bande passante est de la conscience ambiante.
Combiner nettop avec d'autres outils
nettop s'associe bien avec quelques autres outils intégrés.
nettop + lsof
nettop vous montre quel PID utilise la bande passante. lsof -p <PID> vous montre chaque fichier et socket que ce PID a ouvert. Ensemble ils répondent « à quel endpoint distant cette application parle-t-elle ? »
lsof -i -P -n -p 41218Cela liste chaque socket IPv4/IPv6 ouverte par le PID 41218, avec adresses distantes et ports.
nettop + log show
Si vous suspectez qu'un service système se comporte mal, le journal unifié a généralement plus de contexte que nettop. Après avoir repéré un processus fautif dans nettop, lancez :
log show --last 5m --predicate 'process == "cloudd"'… pour voir ce que cloudd faisait au même moment.
nettop + tcpdump
Quand vous avez besoin de savoir ce qu'il y a réellement sur le câble, la capture de paquets est la réponse. nettop vous dit « Chrome téléverse 12 Mo/s vers 142.250.x.x ». sudo tcpdump -i en0 host 142.250.x.x vous dit si c'est HTTP/2 ou QUIC, quel était le SNI, quels codes de réponse reviennent.
Un exemple concret
Supposez que le ventilateur de votre portable s'emballe pendant que vous êtes inactif. Chaîne d'investigation :
- Ouvrez un terminal, lancez
nettop -P -L 5 -s 2 -J bytes_in,bytes_out,interface. - Lisez la sortie. Supposez que
clouddmontre 80 Mo en upload sur 10 secondes. - Lancez
log show --last 1m --predicate 'process == "cloudd"' --info. - Le log dit qu'iCloud téléverse les photos prises sur votre téléphone plus tôt aujourd'hui.
- Décidez si attendre, limiter iCloud, ou mettre l'upload en pause.
Toute cette séquence prend environ 90 secondes. Si vous aviez installé ova la veille, l'étape 1 serait « regardez la barre de menu », et vous sauriez déjà que cloudd était le coupable avant d'ouvrir un terminal. L'étape du journal unifié s'applique encore.
Pour conclure
nettop sur macOS est un petit outil intégré et rapide que personne ne markete. Une fois que vous savez qu'il existe, c'est la bonne réponse pour « j'ai besoin de voir ce qui utilise mon réseau maintenant ». Ses limites sont réelles — pas d'historique, pas de regroupement, terminal uniquement — mais dans son périmètre c'est dur à battre pour gratuit.
Pour la conscience ambiante, l'historique parcourable, et le regroupement par application sans taper une commande, vous voulez une application en barre de menu. ova fait cette partie : environ 3 Mo, macOS 14+, Apple Silicon et Intel, échantillonne à environ 1 Hz, stocke tout localement sur disque. nettop et ova résolvent des problèmes adjacents, et la plupart des utilisateurs macOS bénéficient d'avoir les deux.