bvuillemin
Bonjour
Kernel 2.6.25
librairie SCTP : rpm lksctp 1.08
Hardware:CPCI intel
Lorsque nous montons le niveau de charge sur les sockets SCTP, le sendmsg nous renvoie au bout d'un certain temps le code de faute "ressource temporarily unavailable". Nous constatons que ce pb est étroitement lié avec l'engorgement de la TX_QUEUE de l'association correspondante, alors que le temps CPU libre reste largement suffisant (+ de 50% idle).
Nous avons effectué les modifications suivantes dans le fichier /etc/sysctl.conf pour allouer plus de mémoire aux sockets SCTP mais la TX_QUEUE bloque toujours au même niveau de taille (constaté avec cat /proc/net/sctp/assocs)
net.core.wmem_max = 16777216
net.core.rmem_max = 16777216
net.sctp.sctp_rmem = 4096 229500 16777216
net.sctp.sctp_wmem = 4096 65536 16777216
net.sctp.sctp_mem = 4096 65536 16777216
Nous avons rajouté les paramètre suivants, toujours dans le /etc/sysctl.conf et là nous avons vu une différence de comportement puisque nous avons gagner 30% de trafic en plus
net.sctp.sndbuf_policy = 1
net.sctp.rcvbuf_policy = 1
Qqun saurait me dire pourquoi les modif d'allocation mémoire pour les files SCTP ne sont pas prises en compte.
william
Aevz vous validé les changement avec la commande sysctl ?
bvuillemin
Merci pour la réponse.🙂
Nous n'avons pas utilisé la commande sysctl mais rebooté la machine.
En fait ce que nous ne comprenons pas, c'est que les paramètres :
net.sctp.sndbuf_policy = 1
net.sctp.rcvbuf_policy = 1
sont bien pris en compte puisque le comportement a changé à ce moment là
alors que les autres:
net.sctp.sctp_rmem = 4096 229500 16777216
net.sctp.sctp_wmem = 4096 65536 16777216
net.sctp.sctp_mem = 4096 65536 16777216
ne le sont pas puisque l'engorgement de la TX_QUEUE se produit toujours au même seuil.
D'autre part pour introduire une régulation au niveau des émission de message nous aimerions bien avoir accès à l'int sndbuf_used de la structure sctp_association mais nous n'avons pas trouvé d'option pour le faire dans getsockopt. Ya t il une autre solution ?
william
De tête je vois pas, il faut installer le package kernel-doc et aller faire du grep dans la doc. Je me permet aussi de conseiller la lecture du fabuleux /proc /sys de chez oreilly.
bvuillemin
Merci encore
Je viens de me procurer le /proc et /sys à notre bibliothèque technique et effectivement il contient une mine d'informations à exploiter...
william
La bible en matière de tunning, parfois un peu indigeste mais bon. Attention il y a déjà 2 versions du bouquin ... ça bouge pas mal dans ce coin, la meilleur info en cas de doute est la doc du kernel (parfois même les sources, ces feignants de dev ne mettent pas la doc a jout ! )