OVH Cloud OVH Cloud

Process "Netstat" à 100% en sortie de veille ???

21 réponses
Avatar
pas.de.spam
Bonjour(soir) à tous,

Appel aux cadors de l'Unix :

j'ai remarqué que de temps en temps, en sortie de veille, j'ai le
process "netstat" qui occupe quasi 100% de temps processeur (bi pro).

A quoi sert-il ?

J'ai noté qu'il n'est pas souvent actif. Lorsque cela se produit, il
reste à ce taux, même après une fermeture et réouverture de session.

Cela s'est produit aussi bien sur le G4 que sur le G5 (Panther pour les
2 machines).

Avant je redémarrais pour le virer, là je viens de l'occire sans pitié
avec moniteur d'activité, sans qu'à priori cela ne gne le fonctionnement
de la machine.

merci.

--
PO.

Pour m'écrire : po(point)taubaty(arobase)wanadoo(point)fr

10 réponses

1 2 3
Avatar
pas.de.spam
Eric Lévénez wrote:

Le 20/11/04 19:26, dans <1gnkm0l.t3pjv518o14sqN%,

En ce qui concerne la mémoire de la bête, je lui ai mis 3,5 Go en
pensant voir disparaître une bonne fois pour toute les fichiers swap au
delà du 64 Mo initial et inamovible, ben c'est raté ... c'te satané
machine a trouvé le moyen un jour de monter jusqu'au 256 Mo ....:-)


Là, c'est dû à Mac OS X 10.3, il semble que ce système gère de manière
spécial le cache disque. Ainsi si on utilise beaucoup d'accès disque, comme
une copie de gros fichiers, la RAM se rempli de buffers (non encore
réécrit). Et si on lance à ce moment une application, il n'y a plus assez de
place RAM libre pour le programme, et ça swappe. Les buffers du cache disque
mettent en effet "un certain temps" à être réécrit sur disque. Avec 5 Go, je
swappe quand je veux :-/


okaaiiii !

j'avais pourtant pas souvenir d'avoir fait subir ce genre d'outrage à ma
machine ...

Par contre, ce qui m'amuserait assez ce serait de faire un RAM disque
permanent (possible) et d'y mettre le système pour voir ce que ça
donnerait ... Ça devrait booter raisonnablement vite :-))
--
PO.

Pour m'écrire : po(point)taubaty(arobase)wanadoo(point)fr


Avatar
Eric Lévénez
Le 20/11/04 19:16, dans , « Grrrr »
a écrit :

Par défaut, sous Unix, quand un process meurt, tous ses fils meurent avec
lui.


Cela n'est pas le cas et n'a jamais été le cas sous unix. Par défaut, les
process fils sont adoptés par init et ne meurt pas.

Dans l'exemple suivant, un shell (sh) lance un fils (sleep) et se fait tué.
Le fils (sleep) ne meurt pas et est adopté par le processus 1 (init).

MAC5:~ eric$ sh
sh-2.05b$ echo $$
1569
sh-2.05b$ sleep 1000000 &
[1] 1570
sh-2.05b$ kill -9 1569
Killed
MAC5:~ eric$ ps lp1570
UID PID PPID CPU PRI NI VSZ RSS WCHAN STAT TT TIME
COMMAND
501 1570 1 0 31 0 18056 280 - S std 0:00.02
sleep 1000000
MAC5:~ eric$


Le seul moyen d'empêcher celà est que le process fils crée une
nouvelle session de process et se retrouve alors rataché à init.


Non, le changement de group ou session de process sert en particulier à ne
pas recevoir les signaux du groupe de process du père.

Ce
n'est généralement utile que pour les daemons ou pour des processes
lancés à la main depuis un shell.


Mauvaise explication, mais bonne conclusion :-)

En passant, il n'existe qu'une seule technique sous Unix pour gérer les
processus fils, qui est d'utiliser l'appel système waitpid (ou les
"vieux" wait wait3 et wait4 de BSD mais ça revient au même...).


Oui. Et pour compléter, si le père d'un processus fils ne gère pas la mort
de ses fils ceux-ci restent des zombis tant que le père reste en vie.

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.

Avatar
Saïd
Eric Lévénez :
Le 20/11/04 19:16, dans , « Grrrr »
a écrit :

Par défaut, sous Unix, quand un process meurt, tous ses fils meurent avec
lui.


Cela n'est pas le cas et n'a jamais été le cas sous unix. Par défaut, les
process fils sont adoptés par init et ne meurt pas.



Le fils recoit un signal HUP, non?

Faut que je revise le bouquin Oreilly avec un gros lion sur la couverture.
:)

--
Saïd.
C programmers never die - they're just cast into void.


Avatar
Eric Lévénez
Le 20/11/04 20:57, dans , « Saïd »
a écrit :

Eric Lévénez :
Le 20/11/04 19:26, dans <1gnkm0l.t3pjv518o14sqN%,
« Pierre-Olivier TAUBATY » a écrit :

En ce qui concerne la mémoire de la bête, je lui ai mis 3,5 Go en
pensant voir disparaître une bonne fois pour toute les fichiers swap au
delà du 64 Mo initial et inamovible, ben c'est raté ... c'te satané
machine a trouvé le moyen un jour de monter jusqu'au 256 Mo ....:-)


Là, c'est dû à Mac OS X 10.3, il semble que ce système gère de manière
spécial le cache disque. Ainsi si on utilise beaucoup d'accès disque, comme
une copie de gros fichiers, la RAM se rempli de buffers (non encore
réécrit).


T'es sur que c'est du cache en ecriture et pas plutot un cache de lecture
(i.e. si on relit les fichiers sources qui viennent d'etre copies, la
lecture est immediate). Parce que tarder a ecrire des donnees ca me semble
dangereux comme manip.


Que ce soit en lecture ou écriture, toutes les données passent par le cache
en RAM (sauf les accès disque sur /dev/rdisk*).

Ainsi si on lit 2 fois un fichier, la deuxième fois se fait directement dans
le cache.

Si on écrit un fichier puis qu'on le relit, la relecture se fait aussi dans
le cache.

Le vidage du cache disque (écriture physique sur disque de tout ce qui ne
l'a pas encore été) se fait par l'appel système sync. "sync" est aussi une
commande unix. Au niveau utilisateur on a aussi affaire à fsync qui permet
de ne flusher que les bloc d'un fichier. Il y a aussi le programme update
qui est lancé par /etc/rc au boot et qui sert à faire ce sync de façon
cyclique.

Une astuce à savoir est avec la commande sync. Celle-ci lance l'écriture du
cache, mais elle est asynchrone. Elle rend la main aussitôt alors que les
écritures sont en cours. Mais le super-bloc de chaque partition est
verrouillé pendant ce temps. Si on lance dans la foulée un deuxième sync,
celui-ci attend sur les locks des super-blocs avant de commencer, et quand
il commence vraiment, il s'aperçoit que le travaille est fait et donc
retourne sans avoir rien fait. Bref pour flusher le cache disque (sur toutes
les partitions), la commande shell est :

sync ; sync

Quand par exemple j'ai trouvé un moyen de faire un panic, au moment de le
reproduire, je fais toujours "sync;sync" pour éviter les problèmes de disque
au reboot suivant.

Et si on lance à ce moment une application, il n'y a plus assez de
place RAM libre pour le programme, et ça swappe.


C'est ballot. Soit le cache en question est en attente d'ecriture et dans
ce cas-la autant ecrire sur le disque et liberer de la RAM, ca ne prendra
pas beaucoup plus de temps que de swaper des donnees de programmes qui se
trouvent en RAM. Soit c'est du cache en lecture et il peut etre libere
immediatement.


Ce comportement n'existait pas en 10.2, mais ce n'est sûrement pas si simple
car c'est un bug de comportement trop évident. Ou alors c'est que l'équipe
de Mac OS 9 est venu en renfort sur Mac OS X :->

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.



Avatar
Eric Lévénez
Le 20/11/04 21:18, dans , « Saïd »
a écrit :

Eric Lévénez :
Le 20/11/04 19:16, dans , « Grrrr »
a écrit :

Par défaut, sous Unix, quand un process meurt, tous ses fils meurent avec
lui.


Cela n'est pas le cas et n'a jamais été le cas sous unix. Par défaut, les
process fils sont adoptés par init et ne meurt pas.


Le fils recoit un signal HUP, non?


Normalement non. Pour qu'il reçoive ce signal, il faut que ce signal SIGHUP
soit envoyé au groupe de process dont le père est généralement le créateur.
SIGHUP est lié à une gestion de tty, par exemple quand le tty de contrôle
est fermé (un shell interactif meurt), le noyau envoie ce SIGHUP à tous les
process du groupe, donc à tous les process fils du shell (sauf à ceux qui se
sont déconnectés pour devenir des démons (utilisation de setpgid par
exemple)). Mais ce SIGHUP est un cas particulier, pas le cas général.

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.



Avatar
langmc
Pierre-Olivier TAUBATY wrote:

Par contre, ce qui m'amuserait assez ce serait de faire un RAM disque
permanent (possible) et d'y mettre le système pour voir ce que ça
donnerait ... Ça devrait booter raisonnablement vite :-))
--


Disk Velox <http://www.cutolo.tk/> gratuit
Ram Disk Creator <http://www.donelleschi.com/ramdiskcreator/ >13.17
EUR

Je crois pas que tu puisse boote OS X dessus, à voir.

--
Le sage montre la lune, l'imbécile regarde le doigt.

Avatar
pas.de.spam
michel langlois wrote:

Pierre-Olivier TAUBATY wrote:

Par contre, ce qui m'amuserait assez ce serait de faire un RAM disque
permanent (possible) et d'y mettre le système pour voir ce que ça
donnerait ... Ça devrait booter raisonnablement vite :-))
--


Disk Velox <http://www.cutolo.tk/> gratuit
Ram Disk Creator <http://www.donelleschi.com/ramdiskcreator/ >13.17
EUR

Je crois pas que tu puisse boote OS X dessus, à voir.


il est permanent ? Comment peut-il maintenir l'intégrité des données ?
--
PO.

Pour m'écrire : po(point)taubaty(arobase)wanadoo(point)fr


Avatar
pas.de.spam
Eric Lévénez wrote:

Le 19/11/04 22:22, dans <1gnizk3.1lcfymdpykkyzN%,

j'ai remarqué que de temps en temps, en sortie de veille, j'ai le
process "netstat" qui occupe quasi 100% de temps processeur (bi pro).


Pas normal.

A quoi sert-il ?


netstat est un outil pour avoir des statistiques et des status sur le réseau
IP. On le lance sous shell

netstat -i donne la liste des interfaces réseaux (loopback, Ethernet...)
netstat -s donne le nombre de paquets émis/reçus par toutes les couches
netstat -a donne la liste des sockets IP et UNIX ouverts
...

J'ai noté qu'il n'est pas souvent actif. Lorsque cela se produit, il
reste à ce taux, même après une fermeture et réouverture de session.


Personne ne devrait le lancer à part toi. Si quelqu'un le lance, c'est qu'un
programme, au lieu d'écrire le code de lecture de ses stats, se contente de
lancer netstat pour récupérer ces résultats. Pas joli si cela est. Pour voir
le père de netstat (celui qui l'a lancé) :

ps axcl

Tu recherches d'abord le PPID de "netstat", puis tu recherches le PID qui a
cette valeur et cela te donnera le parent donc le coupable. Cela peut se
traduire par (il faut que netstat tourne) :

ps lwwp `ps axlc | grep netstat | awk "{print $3}"`


donc voila cela vient de se reproduire et j'ai :

Ordinateur-de-Pierre-Olivier-TAUBATY:~ po$ ps lwwp `ps axlc | grep
netstat | awk "{print $3}"`
UID PID PPID CPU PRI NI VSZ RSS WCHAN STAT TT TIME
COMMAND
0 1607 1605 0 31 0 18644 348 - S ?? 0:00.00
sh
/System/Library/SystemConfiguration/Kicker.bundle/Contents/Resources/set
-hostname


donc netstat (PID 1608), avait comme parent sh (1607) initié par sh
(1605, initié par configd (89) initié par mach_init (2) initié par
kernel_task (0), j'ai trouvé cela grâce au moniteur d'activité et
remonté la "généalogie"

c'est biblique OS X, si l'on remonte la lignée des ancètres, on arrive à
Dieu le Père (kernel_task) ... :-)

blague à part Ô Grand Maître, une idée ? ? ? ?
--
PO.

Pour m'écrire : po(point)taubaty(arobase)wanadoo(point)fr


Avatar
Eric Lévénez
Le 22/11/04 20:27, dans <1gnoe6t.5h70bbt5upwuN%,
« Pierre-Olivier TAUBATY » a écrit :

donc voila cela vient de se reproduire et j'ai :

Ordinateur-de-Pierre-Olivier-TAUBATY:~ po$ ps lwwp `ps axlc | grep
netstat | awk "{print $3}"`
UID PID PPID CPU PRI NI VSZ RSS WCHAN STAT TT TIME
COMMAND
0 1607 1605 0 31 0 18644 348 - S ?? 0:00.00
sh
/System/Library/SystemConfiguration/Kicker.bundle/Contents/Resources/set
-hostname


Bin, à priori c'est un programme Mac OS X qui veut changer le nom de
l'ordinateur. Tu devrait donc faire un bug report à Apple sur netstat.

donc netstat (PID 1608), avait comme parent sh (1607) initié par sh
(1605, initié par configd (89) initié par mach_init (2) initié par
kernel_task (0), j'ai trouvé cela grâce au moniteur d'activité et
remonté la "généalogie"



Configd est un démon qui regarde les changement dans la configuration IP
pour les appliquer (en changeant le nom de la machine par exemple).

c'est biblique OS X, si l'on remonte la lignée des ancètres, on arrive à
Dieu le Père (kernel_task) ... :-)


Dieu le père est init (1), kernel_task est plutôt le néant dans le noyau.

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.

Avatar
pas.de.spam
Eric Lévénez wrote:

Le 22/11/04 20:27, dans <1gnoe6t.5h70bbt5upwuN%,

donc voila cela vient de se reproduire et j'ai :

Ordinateur-de-Pierre-Olivier-TAUBATY:~ po$ ps lwwp `ps axlc | grep
netstat | awk "{print $3}"`
UID PID PPID CPU PRI NI VSZ RSS WCHAN STAT TT TIME
COMMAND
0 1607 1605 0 31 0 18644 348 - S ?? 0:00.00
sh
/System/Library/SystemConfiguration/Kicker.bundle/Contents/Resources/set
-hostname


Bin, à priori c'est un programme Mac OS X qui veut changer le nom de
l'ordinateur. Tu devrait donc faire un bug report à Apple sur netstat.


il faudrait peut-être que j'arrive mieux à cerner les facteurs
déclenchants non ?

Cela s'est encore reproduit hier soir, peu après l'envoi du message. Je
n'ai vraiment pas pu voir quelle action était déclenchante.

A priori, je dirais que cela n'a rien à voir avec ma connexion ADSL,
puisque j'ai déjà eu la blague en RTC., j'ai toujours une palanquée
d'appli qui sont chargées en mémoire, dont Safari et MacSoup.


donc netstat (PID 1608), avait comme parent sh (1607) initié par sh
(1605, initié par configd (89) initié par mach_init (2) initié par
kernel_task (0), j'ai trouvé cela grâce au moniteur d'activité et
remonté la "généalogie"



Configd est un démon qui regarde les changement dans la configuration IP
pour les appliquer (en changeant le nom de la machine par exemple).

c'est biblique OS X, si l'on remonte la lignée des ancètres, on arrive à
Dieu le Père (kernel_task) ... :-)


Dieu le père est init (1), kernel_task est plutôt le néant dans le noyau.


bon .... d'accord .... :-)
--
PO.

Pour m'écrire : po(point)taubaty(arobase)wanadoo(point)fr


1 2 3