sysctl invalid argument

kongstrong

Well-Known Member
Hi,

unter FreeBSD 12.1 auf der Konsole:

Code:
sysctl -w kern.ipc.nmbufs=900000
kern.ipc.nmbufs: 888900 -> 900000
Wert vergrößern funktioniert

Code:
sysctl -w kern.ipc.nmbufs=80000
kern.ipc.nmbufs: 900000
sysctl: kern.ipc.nmbufs=80000: Invalid argument
Wert verkleinern funktioniert nicht...!!!

Warum erhalte ich "Invalid argument" ?? Kann man denn oder manche tunables Werte nicht wieder verkleinern ?
 
Moin,

geraten: Du vergrößerst einen Puffer, also benutzt FreeBSD den Puffer. Ich vergleiche das jetzt mal mit einer Festplatte: Wie möchtest du eine Partition verkleinern, wenn Daten darauf liegen? Zumal du ja versucht den Wert auf weniger als ein Zehntel zu verkleinern, nachdem du ihn zuvor nur minimal erhöht hast. Evtl. gibt es auch eine Mindestgröße, die du nicht unterschreiten darfst.

HTH
 
Manche Werte können nicht 'live' gesetzt werden, wollen entweder nach /boot/loader.conf oder /etc/sysctl.conf und danach einen reboot.
 
Code:
sysctl net.inet.tcp.recvbuf_inc
net.inet.tcp.recvbuf_inc: 16384
Ausgangs Situation (default Wert)

Code:
sysctl net.inet.tcp.recvbuf_inc=20000
net.inet.tcp.recvbuf_inc: 16384 -> 20000
Vergrößerung, funktioniert.

Code:
sysctl net.inet.tcp.recvbuf_inc=10000
net.inet.tcp.recvbuf_inc: 20000 -> 10000
Verkleinerung, funktioniert.

Komisch, vielleicht liegt es aus Post#1 daran weil es eine "kern.*" tunable Variable ist ? Die Dokumentation zu sysctl und darum lässt mich nicht schlauen werden, warum es bei der "kern.*" aus Post#1, verkleinern zu einen Ungültigen Argument führt...
 
Hi,
[...]
Code:
sysctl -w kern.ipc.nmbufs=80000
kern.ipc.nmbufs: 900000
sysctl: kern.ipc.nmbufs=80000: Invalid argument
Wert verkleinern funktioniert nicht...!!!

Dazu reicht wieder der Blick in den Quelltext (sys/kern/kern_mbuf.c) Zeilen 210 bis 215, bzw, das Kommentar zu nmbufs:
Code:
/*      
  * We need at least as many mbufs as we have clusters of      
  * the various types added together.      
  */

Du willst hier die mbufs einfach ZU weit herabsetzen.
Beachte bitte auch, dass der Wert den du setzen willst eine Größenordnung niedriger ist als er vorher war.

Rob
 
Zurück
Oben