Home
Packages
Forums
Wiki
GitLab
Security
AUR
Download
コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
目次
コミュニティに貢献
最近の出来事
おまかせ表示
特別ページ
交流
ヘルプ
貢献
最近の更新
最近の議論
新しいページ
統計
リクエスト
ArchWiki
検索
検索
表示
アカウント作成
ログイン
個人用ツール
アカウント作成
ログイン
Sysctlのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
Sysctl
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
{{Lowercase title}} [[Category:カーネル]] [[en:Sysctl]] [[Wikipedia:sysctl|sysctl]] は稼働中の[[カーネルパラメータ]]を確認・変更するためのツールです ([[公式リポジトリ]]の {{Pkg|procps-ng}} パッケージ)。sysctl は procfs ({{ic|/proc/}} の仮想プロセスファイルシステム) で実装されています。 == 設定 == {{Note|バージョン 207 と 21x から、[[systemd]] は {{Ic|/etc/sysctl.d/*.conf}} と {{Ic|/usr/lib/sysctl.d/*.conf}} の設定だけを適用するようになっています。{{Ic|/etc/sysctl.conf}} をカスタマイズしていた場合は、ファイルの名前を {{Ic|/etc/sysctl.d/99-sysctl.conf}} のように変更する必要があります。{{Ic|/etc/sysctl.d/foo}} などのファイルを作成していた場合、{{Ic|/etc/sysctl.d/foo.conf}} と名前を変更してください。}} '''sysctl''' のプリロード/設定ファイルは {{Ic|/etc/sysctl.d/99-sysctl.conf}} に作成することができます。[[systemd]] では、{{Ic|/etc/sysctl.d/}} と {{Ic|/usr/lib/sysctl.d/}} はカーネルの sysctl パラメータにどちらも使えるディレクトリです。名前と元のディレクトリによって処理される順番が決まります。最後のパラメータによって前の方のパラメータが置き換えられるので順番は重要です。例えば、{{ic|/usr/lib/sysctl.d/50-default.conf}} に書かれたパラメータは {{ic|/etc/sysctl.d/50-default.conf}} や両方のディレクトリよりも後に処理される設定ファイルにある同じパラメータによって置き換えられます。 全ての設定ファイルを手動でロードするには、次を実行します: # sysctl --system 適用される階層が出力されます。単一のパラメータファイルを指定してロードすることも可能です: # sysctl -p ''filename.conf'' 詳しくは [http://0pointer.de/blog/projects/the-new-configuration-files the new configuration files] や [http://0pointer.de/public/systemd-man/sysctl.d.html systemd の sysctl.d man ページ] を見て下さい。 利用可能なパラメータは {{Ic|/proc/sys/}} 以下に並んでいます。例えば、{{Ic|kernel.sysrq}} パラメータはファイルシステム上の {{Ic|/proc/sys/kernel/sysrq}} ファイルにあたります。{{Ic|sysctl -a}} コマンドを使うことで現在利用可能な値を全て表示することができます。 {{Note|カーネルドキュメントをインストールしている場合 ({{Pkg|linux-docs}})、sysctl 設定に関する詳細な情報が {{Ic|/usr/lib/modules/$(uname -r)/build/Documentation/sysctl/}} で読めます。sysctl 設定を変更する前にこれらを一読することが強く推奨されています。}} 設定の変更はファイルの操作によるか {{Ic|sysctl}} ユーティリティを使って行います。例えば、一時的に[[キーボードショートカット|マジック SysRq キー]]を有効にするには: # sysctl kernel.sysrq=1 もしくは: # echo "1" > /proc/sys/kernel/sysrq 再起動後も変更を維持させるには、{{Ic|/etc/sysctl.d/99-sysctl.conf}} や他の {{Ic|/etc/sysctl.d/}} 内の適用されるパラメータファイルに適切な行を追加・編集してください。 {{Tip|適用することができるパラメータがロードされないカーネルモジュールに依存していることもあります。例えば {{ic|/proc/sys/net/bridge/*}} のパラメータは {{ic|br_netfilter}} モジュールに依存しています。モジュールが実行時に (または再起動後) ロードされない場合、パラメータは''ひっそりと''適用されないことになります。[[カーネルモジュール#ロード]]を見て下さい。}} == セキュリティ == [[セキュリティ#カーネルの防御]]を見て下さい。 == ネットワーク == === パフォーマンスを向上させる === {{Warning|以下の設定はロードバランシングや NAT を行っている場合にフレームがドロップする可能性があります。ローカルネットワークでしか通信しないサーバーで使ってください。}} # reuse/recycle time-wait sockets net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 ==== TCP/IP スタックの防御 ==== 以下では IPv4 プロトコルでカーネルのネットワークセキュリティを厳しくするオプションのパラメータセットを示しています。同一の効果がある IPv6 パラメータも存在します。 ユースケースによって、例えば[[ルーター]]として使用するシステムで、他のパラメータが役に立ったり必要になることもあります。 {{hc|/etc/sysctl.d/51-net.conf|2= #### ipv4 networking and equivalent ipv6 parameters #### ## TCP SYN cookie protection (default) ## helps protect against SYN flood attacks ## only kicks in when net.ipv4.tcp_max_syn_backlog is reached net.ipv4.tcp_syncookies = 1 ## protect against tcp time-wait assassination hazards ## drop RST packets for sockets in the time-wait state ## (not widely supported outside of linux, but conforms to RFC) net.ipv4.tcp_rfc1337 = 1 ## sets the kernels reverse path filtering mechanism to value 1 (on) ## will do source validation of the packet's recieved from all the interfaces on the machine ## protects from attackers that are using ip spoofing methods to do harm net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.all.rp_filter = 1 ## tcp timestamps ## + protect against wrapping sequence numbers (at gigabit speeds) ## + round trip time calculation implemented in TCP ## - causes extra overhead and allows uptime detection by scanners like nmap ## enable @ gigabit speeds net.ipv4.tcp_timestamps = 0 #net.ipv4.tcp_timestamps = 1 ## log martian packets net.ipv4.conf.default.log_martians = 1 net.ipv4.conf.all.log_martians = 1 ## ignore echo broadcast requests to prevent being part of smurf attacks (default) net.ipv4.icmp_echo_ignore_broadcasts = 1 ## ignore bogus icmp errors (default) net.ipv4.icmp_ignore_bogus_error_responses = 1 ## send redirects (not a router, disable it) net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.all.send_redirects = 0 ## ICMP routing redirects (only secure) #net.ipv4.conf.default.secure_redirects = 1 (default) #net.ipv4.conf.all.secure_redirects = 1 (default) net.ipv4.conf.default.accept_redirects=0 net.ipv4.conf.all.accept_redirects=0 net.ipv6.conf.default.accept_redirects=0 net.ipv6.conf.all.accept_redirects=0 }} ==== 受信キューのサイズを増やす ==== 受信したフレームは、ネットワークカード上のリングバッファから取り出した後、このキューに格納されます。 高速カードの場合、この値を大きくすると、パケットの損失を防ぐのに役立ちます。 net.core.netdev_max_backlog=16384 {{Note|SIP ルータなどのリアルタイムアプリケーションでは、このオプションは高速な CPU を必要とします。そうしないと、キュー内のデータが古くなります。}} ==== 最大接続数を増やす ==== カーネルが受け付ける接続数の上限 (デフォルトは128) net.core.somaxconn = 8192 {{Note|1=カーネル5.4はデフォルト値を4096に上げました [https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=19f92a030ca6d772ab44b22ee6a01378a8cb32d4]}} {{Warning|この値を大きくすると、負荷の高いサーバーのパフォーマンスのみが向上し、処理速度の低下 (例:シングルスレッドのブロッキングサーバ) またはワーカー・スレッド/プロセス数の不足 [https://serverfault.com/questions/518862/will-increasing-net-core-somaxconn-make-a-difference/519152] が発生する可能性があります}} ==== ネットワークインターフェイス専用のメモリを増やす ==== {{Expansion|各オプションの単位を説明する(バイト、キロバイト、メモリページ?)}} {{Accuracy|このセクションは Cloudflare のブログ記事が動機となっていますが、 [https://github.com/redhat-performance/tuned/blob/master/profiles/network-throughput/tuned.conf#L10 RedHat の調整済みプロファイル] はさらに小さな値と主張を示唆しています ''これは 40 Gb の速度でのみ必要と思われます'' したがって、これらの設定は一般的なハードウェアでは役に立ちません。}} デフォルトでは、Linux ネットワークスタックは WAN リンクを介した高速で大規模なファイル転送用に設定されていません(つまり、より多くのネットワーク・パケットを処理)。正しい値を設定すると、メモリリソースを節約できる場合があります。 net.core.rmem_default = 1048576 net.core.rmem_max = 16777216 net.core.wmem_default = 1048576 net.core.wmem_max = 16777216 net.core.optmem_max = 65536 net.ipv4.tcp_rmem = 4096 1048576 2097152 net.ipv4.tcp_wmem = 4096 65536 16777216 デフォルトの {{ic|4096}} UDP 制限を増やすこともできます。 net.ipv4.udp_rmem_min = 8192 net.ipv4.udp_wmem_min = 8192 詳細および推奨値については、次の資料を参照してください。 * http://www.nateware.com/linux-network-tuning-for-2013.html * https://blog.cloudflare.com/the-story-of-one-latency-spike/ ==== TCP Fast Open を有効にする ==== {{Expansion|"明示的な TCP_FASTOPEN ソケットオプションなしで、すべてのリスナーがデフォルトで Fast Open をサポートできるようにします" つまり値を {{ic|1027}} (0x1+0x2+0x400) にオプションを指定します。|section=TCP Fast Open}} TCP Fast Open は、Transmission Control Protocol (TCP) の拡張機能であり、送信側の初期 TCP SYN [https://www.keycdn.com/support/tcp-fast-open/] 中にデータを交換できるようにすることで、ネットワーク遅延の低減に役立ちます。デフォルトの {{ic|1}} の代わりに値 {{ic|3}} を使用すると、着信接続と発信接続の両方で TCP Fast Open が許可されます。 net.ipv4.tcp_fastopen = 3 == 仮想メモリ == Linux カーネルの仮想メモリ (VM) サブシステムの制御やダーティデータのディスクへの書き出しを調整するパラメータがいくつか存在します。詳しくは [https://www.kernel.org/doc/Documentation/sysctl/vm.txt Linux カーネルドキュメント]を見てください。例えば以下のようなパラメータが存在します: * {{ic|1=vm.dirty_ratio = 3}} : システムの空きページや回収可能ページを含む合計メモリから見たパーセンテージとして、ダーティデータを書き出し始めるディスク書き込みを発生させるページ数。 * {{ic|1=vm.dirty_background_ratio = 2}} : システムの空きページや回収可能ページを含む合計メモリから見たパーセンテージとして、ダーティデータを書き出し始めるバックグラウンドカーネルのフラッシュスレッドのページ数。 上記の値を設定する際はメモリの合計量を考慮する必要があります。例えば、マシンに搭載されているシステムメモリとして話を簡単にすると以下のようになります: * 搭載されているメモリが 1GB の場合は {{ic|vm.dirty_ratio}} の設定をメモリの 10% に設定するというコンセンサスが合理的です (メモリの 10% はつまり {{#expr: 1000/10 round 0}} MB になります)。ただしマシンにもっと大量にメモリを搭載している、例えば 16 GB もマシンに積んでいる場合 (その場合 10% は {{#expr: 16/10 round 1 }} GB となります)、磁気ディスクにライトバックするのに数秒近くもかかってしまうため適当な数字とは言えません。この場合、3 に設定するのが適当でしょう (16 GB の 3% は約 491 MB です)。 * {{ic|vm.dirty_background_ratio}} も同じように、メモリが少ない時はデフォルトの 5 が丁度良いかもしれませんが、システムの合計メモリの量によって調整するべきです。 === VFS キャッシュ === [https://www.kernel.org/doc/html/latest/filesystems/vfs.html virtual file system] (VFS) キャッシュパラメータの値を小さくすると、システムの応答性が向上する場合があります。 * {{ic|1=vm.vfs_cache_pressure = 50}} : ディレクトリや inode オブジェクトのキャッシュ (VFS キャッシュ) に使用されるメモリをカーネルがどれくらい回収するか制御する値です。デフォルト値の 100 から低くするとカーネルは VFS キャッシュをあまり回収しなくなります (0 に設定してはいけません。メモリ不足状態になる可能性があります)。 == MDADM == カーネルがソフトウェア raid デバイスの resync を実行するときは、システムに高負担をかけないように速度を制限しています。sysctl を使って速度制限を上げたり下げたりすることが可能です。 {{bc|1= # Set maximum and minimum speed of raid resyncing operations dev.raid.speed_limit_max = 10000 dev.raid.speed_limit_min = 1000 }} mdadm が {{ic|md_mod}} モジュールとしてコンパイルされている場合、上記の設定はモジュールがロードされた後にのみ使うことができます。{{ic|/etc/sysctl.d}} を使って起動時に設定をロードする場合、{{ic|md_mod}} モジュールは {{ic|/etc/modules-load.d}} で事前にロードすることができます。 == トラブルシューティング == === 定期的にシステムがフリーズする === ダーティバイトを十分小さい値に設定 (例えば 4M): vm.dirty_background_bytes = 4194304 vm.dirty_bytes = 4194304 {{ic|kernel.io_delay_type}} を変更してみる (x86 のみ): * 0 - IO_DELAY_TYPE_0X80 * 1 - IO_DELAY_TYPE_0XED * 2 - IO_DELAY_TYPE_UDELAY * 3 - IO_DELAY_TYPE_NONE == 参照 == * {{man|8|sysctl}} と {{man|5|sysctl.conf}} * [https://www.kernel.org/doc/Documentation/sysctl/ /proc/sys/ の Linux カーネルドキュメント] * カーネルドキュメント: [https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt IP Sysctl] * [http://blog.gotux.net/code/config/sysctl/ SysCtl.conf Tweaked for Security and Cable Speed]{{Dead link|2015|12|14}} * [http://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.kernel.html sysctl のカーネルネットワークパラメータ]
このページで使用されているテンプレート:
テンプレート:Accuracy
(
ソースを閲覧
)
テンプレート:Bc
(
ソースを閲覧
)
テンプレート:Ic
(
ソースを閲覧
)
テンプレート:Lowercase title
(
ソースを閲覧
)
テンプレート:META Message
(
ソースを閲覧
)
テンプレート:Man
(
ソースを閲覧
)
テンプレート:Note
(
ソースを閲覧
)
テンプレート:Out of date
(
ソースを閲覧
)
テンプレート:Pkg
(
ソースを閲覧
)
テンプレート:Tip
(
ソースを閲覧
)
テンプレート:Warning
(
ソースを閲覧
)
Sysctl
に戻る。
検索
検索
Sysctlのソースを表示
話題を追加