net.core.rmem_max
withの値を修正したので、sysctl
これをデフォルト値にリセットしたいと思います。
再起動するとnet.core.rmem_max
デフォルトに戻ります(上書きされていないため/etc/sysctl.conf
)、再起動せずにこの値がわかりますか?
理想的には、値を変更する前に実行して値を読み取る必要がありますsysctl net.core.rmem_max
。
答え1
これは通常不可能です。カーネルは元の値を保持しません(少なくともLinuxではそうではなく、おそらく他のUNIXバリアントでも同じです)。設定値は変数に保存されます。設定を変更すると、その変数を含むメモリが元に戻せないように更新されます。
ほとんどの設定では、変数の初期値はコンパイル時に決定され、カーネルバイナリに格納される定数です。したがって、原則としてカーネルバイナリをチェックしてデフォルト値を見つけることができます。興味のある設定に対応するシンボルを見つけ、カーネルバイナリでそのシンボルのアドレスを追跡する必要があります。仮想マシンでカーネルを起動すると、作業負荷が軽減されます。
ほとんどの設定ではカーネルソースコードを見ることができます。kernel/sysctl.c
その他の文書。次の定義が表示されます。
{
.procname = "rmem_max",
.data = &sysctl_rmem_max,
…
},
(存在するnet/core/sysctl_net_core.c
)、ここで初期化を追跡できます。sysctl_rmem_max
変える。これは定数で初期化されますが、拡張するにはCコードをたくさん読む必要があります。
答え2
私のOpenBSDシステムでは、/etc/sysctl.confにいくつかのデフォルトのsysctl値がリストされていますが、このリストはすべてではありません。
おそらく最良の方法は、sysctlコードを読むか、同じOSを実行している友人に彼の値を尋ねることです:)