OVH Cloud OVH Cloud

buffer system des sockets

7 réponses
Avatar
fabrizio
Bonjour,

J'aimerais savoir s'il existe un moyen de connaitre le taux de
remplissage des buffers system liés aux sockets et, mieux encore,
s'il existe un moyen de savoir si des « overflow » ont eu lieu.

J'essaye de comprendre ce qui pourrait bien me faire perdre mes paquets.

J'utilise l'API socket « standard » sur un linux (slackware 10.0),
Noyau 2.6.10, avec des Socket DGRAM.

Merci pour toute indication qui pourrait m'aider.

Fabrice

7 réponses

Avatar
DINH Viêt Hoà

J'aimerais savoir s'il existe un moyen de connaitre le taux de
remplissage des buffers system liés aux sockets et, mieux encore,
s'il existe un moyen de savoir si des « overflow » ont eu lieu.

J'essaye de comprendre ce qui pourrait bien me faire perdre mes paquets.

J'utilise l'API socket « standard » sur un linux (slackware 10.0),
Noyau 2.6.10, avec des Socket DGRAM.

Merci pour toute indication qui pourrait m'aider.


un sujet très d'actualité :

"use the source, luke"

--
DINH V. Hoa,

"Il y a anguille sous roche"

Avatar
Nicolas George
fabrizio wrote in message <d872oh$ptm$:
J'aimerais savoir s'il existe un moyen de connaitre le taux de
remplissage des buffers system liés aux sockets et, mieux encore,
s'il existe un moyen de savoir si des « overflow » ont eu lieu.


Cf. man socket(7) : SO_RCVBUF devrait permettre de connaître et changer la
capacité totale, mais il n'y a rien pour connaître l'occupation actuelle. La
valeur par défaut a l'air d'être 109 ko (cf. sysctl net.core.rmem_max) ;
peut-être que la varier jusqu'à voir un changement peut aider.

J'essaye de comprendre ce qui pourrait bien me faire perdre mes paquets.


L'usage de tcpdump peut être une solution.

Avatar
Laurent Wacrenier
fabrizio écrit:
J'aimerais savoir s'il existe un moyen de connaitre le taux de
remplissage des buffers system liés aux sockets et, mieux encore,
s'il existe un moyen de savoir si des « overflow » ont eu lieu.


Pour des sockets TCP, utiliser "netstat".
Pour les autres, il n'y a pas de buffer.

Avatar
fabrizio
Cf. man socket(7) : SO_RCVBUF devrait permettre de connaître et changer la
capacité totale, mais il n'y a rien pour connaître l'occupation actuelle. La
valeur par défaut a l'air d'être 109 ko (cf. sysctl net.core.rmem_max) ;
peut-être que la varier jusqu'à voir un changement peut aider.


OK. tant pis pour moi alors.

J'essaye de comprendre ce qui pourrait bien me faire perdre mes paquets.
L'usage de tcpdump peut être une solution.



A moins qu'il sache faire l'analyse RTP temps-réel.
J'utilise Ethereal qui me sort des résultats plus que délirant
(il me semble que ce dernier est basé sur tcpdump mais j'suis pas sûr)

Merci pour vos réponses.


Avatar
Laurent Wacrenier
Nicolas George <nicolas$ écrit:
Cf. man socket(7) : SO_RCVBUF devrait permettre de connaître et changer la
capacité totale, mais il n'y a rien pour connaître l'occupation actuelle. La


eventuelement
int count;
ioctl(fd, FIONREAD, (char *) &count);
pour savoir combien il y a d'octets dans le buffer d'entrée
d'un descrtipteur.

Avatar
fabrizio
Pour des sockets TCP, utiliser "netstat".
Pour les autres, il n'y a pas de buffer.


Très étrange ce que tu me wacontes là.
Parce que si je modifie la taille dudit buffer
(sysctl), cela fait varier le temps au bout duquel
le phénomène arrive.

Quelqu'un pour confirmer ou infirmer l'absence de buffer
system en UDP ?

Fabrice

Avatar
talon
fabrizio wrote:
Bonjour,

J'aimerais savoir s'il existe un moyen de connaitre le taux de
remplissage des buffers system liés aux sockets et, mieux encore,
s'il existe un moyen de savoir si des « overflow » ont eu lieu.

J'essaye de comprendre ce qui pourrait bien me faire perdre mes paquets.

J'utilise l'API socket « standard » sur un linux (slackware 10.0),
Noyau 2.6.10, avec des Socket DGRAM.

Merci pour toute indication qui pourrait m'aider.

Fabrice


J'ai entendu dire que Linux avait une propension à perdre des paquets
sous forte charge, et que FreeBSD se comportait beaucoup mieux, peut
être est-ce de la propagande. Toujours est-il que netstat -m te donne
cette info sous FreeBSD.

--

Michel TALON