すべての TCP/IP チューニング パラメータは /proc/sys/net/ ディレクトリにあります。たとえば、最も重要なチューニング パラメータとその意味を次に示します。
1. /proc/sys/net/core/rmem_max — 最大 TCP データ受信バッファー
2. /proc/sys/net/core/wmem_max — 最大 TCP データ送信バッファー
3. /proc/sys/net/ipv4/tcp_timestamps — タイムスタンプは TCP ヘッダーに 12 バイト追加されます (RFC 1323 を参照してください)。
4. /proc/sys/net/ipv4/tcp_sack — 選択的応答
5. /proc/sys/net/ipv4/tcp_window_scaling — 最大 TCP ウィンドウが 65535 (64K) を超える場合、この値を 1 に設定する必要があります。
6. rmem_default — デフォルトの受信ウィンドウ サイズ
7. rmem_max — 受信ウィンドウの最大サイズ
8. wmem_default — デフォルトの送信ウィンドウ サイズ
9. wmem_max — 送信ウィンドウの最大サイズ
/proc ディレクトリ内の内容はすべて一時的なものであるため、システムを再起動すると変更は失われます。
システムの起動時に TCP/IP パラメータを自動的に変更することをお勧めします。
次のコードを /etc/rc.local ファイルに追加し、ファイルを保存します。次の TCP/IP パラメータは、システムの再起動時に自動的に変更されます。
エコー 256960 > /proc/sys/net/core/rmem_default
エコー 256960 > /proc/sys/net/core/rmem_max
エコー 256960 > /proc/sys/net/core/wmem_default
エコー 256960 > /proc/sys/net/core/wmem_max
エコー 0 > /proc/sys/net/ipv4/tcp_timestamps
エコー 1 > /proc/sys/net/ipv4/tcp_sack
エコー 1 > /proc/sys/net/ipv4/tcp_window_scaling
TCP/IP パラメータは一目瞭然で、TCP ウィンドウ サイズは 256960 に設定され、TCP タイムスタンプは無効になり (各パケット ヘッダーへの 12 バイトの追加をキャンセル)、より大きな TCP ウィンドウと TCP 選択応答がサポートされます。
上記の値は、インターネット接続と最大帯域幅/遅延速度に基づいて設定されます。
注: 上記の例の値は実際に使用できますが、パラメータの一部のみが含まれています。
別の方法: /etc/sysctl.conf を使用して、システムの起動時に設定した値にパラメータを構成します。
net.core.rmem_default = 256960
net.core.rmem_max = 256960
net.core.wmem_default = 256960
net.core.wmem_max = 256960
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack =1
net.ipv4.tcp_window_scaling = 1
-------------------------------------------------- ---------------
/proc/sys/fs/スーパーマックス
このファイルは、スーパーブロック ハンドラーの最大数を指定します。マウントされたファイル システムはすべてスーパーブロックの使用を必要とするため、多数のファイル システムがマウントされている場合、スーパーブロック ハンドラーが枯渇する可能性があります。
デフォルト設定: 256
/proc/sys/fs/スーパーnr
このファイルには、割り当てられているスーパーブロックの現在数が表示されます。このファイルは読み取り専用であり、情報の表示のみに使用されます。
/proc/sys/カーネル
/proc/sys/カーネル/acct
このファイルには、ログを含むファイル システム上の空き領域の量 (パーセントで表される) に基づいてプロセス アカウンティングを開始するタイミングを制御する 3 つの構成可能な値があります。
空き容量がこのパーセンテージ値を下回った場合、プロセス アカウンティングを停止します
空き容量がこのパーセンテージ値より大きい場合、プロセス アカウンティングを開始します。
上記 2 つの値がチェックされる頻度 (秒単位)
このファイルの値を変更するには、スペースで区切られた一連の数値が返される必要があります。
デフォルト設定: 2 4 30
これらの値により、ジャーナルを含むファイル システムの空き領域が 2% 未満の場合はアカウンティングが停止し、4% 以上の空き領域がある場合はアカウンティングが再開されます。チェックは 30 秒ごとに行われます。
/proc/sys/kernel/ctrl-alt-del
このファイルには、ctrl+alt+delete キーの組み合わせを受け取ったときにシステムがどのように反応するかを制御するバイナリ値が含まれています。これら 2 つの値は次を表します。
値ゼロ (0) は、ctrl+alt+delete がキャプチャされ、init プログラムに送信されることを意味します。これにより、shutdown コマンドを入力したかのように、システムが正常にシャットダウンして再起動できるようになります。
値 1 は、ctrl+alt+delete がキャプチャされず、電源が直接オフになったかのように、クリーンではないシャットダウンが実行されることを意味します。
デフォルト設定: 0
/proc/sys/カーネル/ドメイン名
このファイルを使用すると、ネットワーク ドメイン名を構成できます。デフォルト値はありません。ドメイン名は設定されている場合もあれば、設定されていない場合もあります。
/proc/sys/カーネル/ホスト名
このファイルを使用すると、ネットワーク ホスト名を構成できます。デフォルト値はありません。ホスト名は設定されている場合もあれば、設定されていない場合もあります。
/proc/ss/カーネル/msgmax
このファイルは、あるプロセスから別のプロセスに送信されるメッセージの最大長を指定します。プロセス間のメッセージの受け渡しはカーネルのメモリ内で行われ、ディスクにスワップされないため、この値を増やすと、オペレーティング システムが使用するメモリの量が増加します。
デフォルト設定: 8192
/proc/sys/kernel/msgmnb
このファイルは、メッセージ キュー内の最大バイト数を指定します。
デフォルト設定: 16384
/proc/sys/カーネル/msgmni
このファイルは、メッセージ キュー ID の最大数を指定します。
デフォルト設定: 16
/proc/sys/カーネル/パニック
このファイルは、「カーネル パニック」が発生した場合にカーネルが再起動するまでに待機する時間を秒単位で示します。ゼロ (0) 秒に設定すると、カーネル パニックが発生した場合の再起動が無効になります。
デフォルト設定: 0
/proc/sys/kernel/printk
このファイルには、重要性に基づいてログ メッセージの送信先を定義する 4 つの数値が含まれています。さまざまなログ レベルの詳細については、syslog(2) マンページを参照してください。このファイルの 4 つの値は次のとおりです。
コンソール ログ レベル: この値より高い優先度を持つメッセージがコンソールに出力されます。
デフォルトのメッセージ ログ レベル: 優先度のないメッセージは、この優先度で印刷されます。
最小コンソール ログ レベル: コンソール ログ レベルを設定できる最小値 (最高の優先順位)
デフォルトのコンソール ログ レベル: コンソール ログ レベルのデフォルト値
デフォルト設定: 6 4 1 7
/proc/sys/カーネル/shmall
このファイルは、その時点でシステム上で利用可能な共有メモリの合計量 (バイト単位) です。
デフォルト設定: 2097152
/proc/sys/カーネル/shmax
このファイルは、カーネルによって許可される共有メモリ セグメントの最大サイズ (バイト単位) を指定します。
デフォルト設定: 33554432
/proc/sys/カーネル/shmmni
このファイルは、システム全体で使用される共有メモリ セグメントの最大数を表します。
デフォルト設定: 4096
/proc/sys/カーネル/sysrq
このファイルで指定された値がゼロ以外の場合、システム リクエスト キーがアクティブになります。
デフォルト設定: 0
/proc/sys/kernel/threads-max
このファイルは、カーネルが使用できるスレッドの最大数を指定します。
デフォルト設定: 2048
/proc/sys/net
/proc/sys/net/core/message_burst
新しい警告メッセージを書き込むのに必要な時間 (1/10 秒)、この時間中に受信した他の警告メッセージは破棄されます。これは、システムにメッセージを「あふれさせ」ようとする誰かによるサービス拒否攻撃を防ぐために使用されます。
デフォルト設定:50(5秒)
/proc/sys/net/core/message_cost
このファイルには、各警告メッセージに関連付けられたコスト値が保持されます。値が大きいほど、警告メッセージが無視される可能性が高くなります。
デフォルト設定: 5
/proc/sys/net/core/netdev_max_backlog
このファイルは、インターフェイスがカーネルの処理よりも速くパケットを受信した場合に、キューに入れることができるパケットの最大数を指定します。
デフォルト設定: 300
/proc/sys/net/core/optmem_max
このファイルは、各ソケットに許可される最大バッファ サイズを指定します。
/proc/sys/net/core/rmem_default
このファイルは、受信ソケット バッファ サイズのデフォルト値をバイト単位で指定します。
/proc/sys/net/core/rmem_max
このファイルは、最大受信ソケット バッファ サイズをバイト単位で指定します。
/proc/sys/net/core/wmem_default
このファイルは、送信ソケット バッファ サイズのデフォルト値をバイト単位で指定します。
/proc/sys/net/core/wmem_max
このファイルは、送信ソケット バッファの最大サイズをバイト単位で指定します。
/proc/sys/net/ipv4
すべての IPv4 および IPv6 パラメータは、カーネル ソース コードのドキュメントに記載されています。ファイル /usr/src/linux/Documentation/networking/ip-sysctl.txt を参照してください。
/proc/sys/net/ipv6
IPv4と同じです。
/proc/sys/vm
/proc/sys/vm/buffermem
このファイルは、バッファ メモリに使用されるシステム メモリ全体の量を制御します (パーセントで表されます)。これには 3 つの値があり、スペースで区切られた一連の数値をファイルに書き込むことで設定されます。
バッファーに使用されるメモリの最小パーセンテージ
システム メモリがあまり残っておらず、システム メモリが減少している状況が発生した場合、システムはバッファ メモリの量を維持しようとします。
バッファーに使用されるメモリの最大割合
デフォルト設定: 2 10 60
/proc/sys/vm/freepages
このファイルは、使用可能なメモリのさまざまなレベルにシステムがどのように応答するかを制御します。これには 3 つの値があり、スペースで区切られた一連の数値をファイルに書き込むことで設定されます。
カーネルは、システム内で使用可能なページ数が最小制限に達した場合にのみ、メモリの一部を割り当てることができます。
システム内の空きページ数がこの制限を下回ると、カーネルはメモリを解放してシステムのパフォーマンスを維持するために、より積極的な方法でスワップを開始します。
カーネルは、この量のシステム メモリを利用可能な状態に維持しようとします。これを下回る値では、カーネルのスワップが有効になります。
デフォルト設定: 512 768 1024
/proc/sys/vm/kswapd
このファイルは、カーネルがメモリをどのようにスワップできるかを制御します。これには 3 つの値があり、スペースで区切られた一連の数値をファイルに書き込むことで設定されます。
カーネルが一度に解放しようとするページの最大数。メモリのスワップ中に帯域幅を増やしたい場合は、この値を増やす必要があります。
カーネルがスワップごとにページの解放を試行する最小回数。
1 回のスワップでカーネルによって書き込まれるページの数。これはシステムのパフォーマンスに最も大きな影響を与えます。この値が大きいほど、より多くのデータが交換され、ディスクのシークにかかる時間が短縮されます。ただし、値が大きすぎると、要求キューが「フラッディング」され、システムのパフォーマンスに悪影響を及ぼす可能性があります。
デフォルト設定: 512 32 8
/proc/sys/vm/pagecache
このファイルは /proc/sys/vm/buffermem と同じ働きをしますが、ファイルのメモリ マップと一般的なキャッシュです。
カーネル設定を永続化する
/proc/sys ディレクトリ内のカーネル パラメータを変更するための便利なユーティリティがここに提供されています。これにより、実行中のカーネルを変更できます (上記で使用したエコーおよびリダイレクト方法と同様) が、システムの起動時に実行される構成ファイルもあります。これにより、実行中のカーネルに変更を加え、その変更を構成ファイルに追加して、システムの再起動後も保持されるようにすることができます。
このユーティリティは sysctl と呼ばれ、sysctl(8) のマンページに詳しく説明されています。 sysctl の設定ファイルは /etc/sysctl.conf で、sysctl.conf(8) で編集および記録できます。 sysctl は、/proc/sys 下のファイルを変更可能な個別の変数として扱います。したがって、/proc/sys の下にあるファイル /proc/sys/fs/file-max を例にとると、システムで許可されるファイル ハンドルの最大数は、このファイルは fs.file-max として表されます。
この例は、sysctl 表記に関するいくつかの素晴らしい点を明らかにします。 sysctl は /proc/sys ディレクトリ内の変数のみを変更でき、人々は常に変数がこのディレクトリにあると考えるため、変数名のその部分 (/proc/sys) は省略されます。注目すべきもう 1 つの変更は、ディレクトリ区切り文字 (スラッシュ /) が英語のピリオド (ドット) に置き換えられたことです。
/proc/sys 内のファイルを sysctl 内の変数に変換するには、2 つの簡単なルールがあります。
先頭部分の /proc/sys を削除します。
ファイル名のスラッシュをドットに変更します。
これら 2 つのルールにより、/proc/sys 内の任意のファイル名を sysctl 内の任意の変数名に変換できます。ファイルから変数への一般的な変換は次のとおりです。
/proc/sys/dir/file --> dir.file
dir1.dir2.file --> /proc/sys/dir1/dir2/file
コマンド sysctl -a を使用すると、変更可能なすべての変数とその現在の設定を表示できます。
変数は sysctl を使用して変更することもできます。これは、上記で使用した echo メソッドとまったく同じことを行います。その表現は次のとおりです。
sysctl -w dir.file="値"
再び file-max を例として使用し、次の 2 つの方法のいずれかを使用して値を 16384 に変更します。