タグ付けされた質問 「sysctl」

sysctlは、Unixライクなオペレーティングシステムカーネルのオプションと制限を制御するためのメカニズムです。Sysctlを使用して、パフォーマンスを調整したり、多くのサブシステムの動作を変更したりできます。

4
FreeBSDのパフォーマンスチューニング:Sysctlパラメーター、loader.conf、カーネル
私は、FreeBSDのチューニングに関する知識をsysctl.conf/ loader.conf / KENCONF/などで共有したいと考えていました。最初は、アクティブな接続を最大100,000〜200,000にチューニングしたFreeBSDに関するIgor Sysoev(nginxの著者)のプレゼンテーションに基づいていました。FreeBSDの新しいバージョンは、はるかに多くを処理できます。 チューニングは、FreeBSD7-FreeBSD-CURRENT用です。7.2 amd64以降、それらの一部はデフォルトで適切に調整されています。7.0より前のバージョンでは、一部がブートのみ(経由で設定 /boot/loader.conf)であるか、まったく存在しません。 sysctl.conf: # No zero mapping feature # May break wine # (There are also reports about broken samba3) #security.bsd.map_at_zero=0 # Servers with threading software apache2 / Pound may want to rise following sysctl #kern.threads.max_threads_per_proc=4096 # Max backlog size # Note Application can …

1
vm.overcommit_memoryはどのように機能しますか?
デフォルト設定を使用する場合: vm.overcommit_memory = 0 vm.overcommit_ratio = 50 これらの値を/proc/meminfoファイルから読み取ることができます: CommitLimit: 2609604 kB Committed_AS: 1579976 kB しかし、vm.overcommit_memoryから0に2変更すると、特にamarokのように、変更前に起動できるのと同じアプリケーションセットを起動できません。に変更vm.overcommit_ratioする必要300があったため、制限を増やすことができました。これで、amarockを起動すると/proc/meminfo、次のように表示されます。 CommitLimit: 5171884 kB Committed_AS: 3929668 kB このマシンにはRAMが1GiBしかありませんがvm.overcommit_memory、0に設定する2とamarok は問題なく動作します。しかし、設定する場合、amarokは2GiB以上のメモリを割り当てる必要があります。それは正常な動作ですか?もしそうなら、例えば、Firefox(amarokの4-6倍のメモリを消費する)が変更の前後で同じように機能する理由を説明できますか?
49 memory  kernel  sysctl 

6
多数の接続と小さなパケットの高いトラフィックがあるギガビットネットワークでのTCPパフォーマンスの改善
「大量の接続と小さなパケットのトラフィックが多いギガビットネットワーク」でTCPスループットを改善しようとしています。私のサーバーOSはUbuntu 11.10サーバー64ビットです。 TCPソケット(すべて同じポート上)を介してサーバーに接続されているクライアントは約50.000(および成長中)です。 パケットの95%のサイズは1〜150バイト(TCPヘッダーとペイロード)です。残りの5%は、150バイトから4096+バイトまで異なります。 以下の設定で、サーバーは最大30 Mbps(全二重)のトラフィックを処理できます。 私のニーズに合わせてOSを調整するためのベストプラクティスをアドバイスしてください。 私/etc/sysctl.congはこのように見えます: kernel.pid_max = 1000000 net.ipv4.ip_local_port_range = 2500 65000 fs.file-max = 1000000 # net.core.netdev_max_backlog=3000 net.ipv4.tcp_sack=0 # net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.core.somaxconn = 2048 # net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 # net.ipv4.tcp_synack_retries = 2 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_mem …

3
net.netfilter.nf_conntrack_bucketsを設定する正しい場所はどこですか?
現在、起動時にnet.netfilter.nf_conntrack_bucketsを設定しようとしています。最初は、これはsysctl.confを介して実行できると想定していましたが、net.netfilter.nf_conntrack_buckets(および他のnet.netfilter構成)はまったく適用されませんでした。sysctl -pをrc.localに追加すると、net.netfilter.nf_conntrack_bucketsを除くすべてのnet.netfilter構成を適用できました。また、sysctl -wを使用して端末からこれを設定しようとすると、「エラー:キー 'net.netfilter.nf_conntrack_bucketsで許可が拒否されました」という結果になることに注意してください # This should be applied at boot net.netfilter.nf_conntrack_max=1966080 net.netfilter.nf_conntrack_buckets=245760 これを行う正しい場所はどこですか?

4
特権Dockerコンテナーを使用したカーネル調整
ロードバランサーのカーネル設定を調整するコンテナーを構築しています。単一の特権コンテナーを使用して、これらの変更をイメージ内のホストにデプロイしたいと思います。例えば: docker run --rm --privileged ubuntu:latest sysctl -w net.core.somaxconn=65535 テストでは変更が有効になりますが、そのコンテナに対してのみ有効です。完全に特権のあるコンテナーを使用すると、/ procを変更すると、実際に基盤となるOSが変更されるという印象を受けました。 $docker run --rm --privileged ubuntu:latest \ sysctl -w net.core.somaxconn=65535 net.core.somaxconn = 65535 $ docker run --rm --privileged ubuntu:latest \ /bin/bash -c "sysctl -a | grep somaxconn" net.core.somaxconn = 128 これは特権コンテナがどのように機能することになっていますか? 私はばかげたことをしているだけですか? 永続的な変更を行うための最良の方法は何ですか? バージョン情報: Client version: 1.4.1 Client API version: …
10 linux  docker  su  sysctl 

1
ulimit、launchctl、sysctlの違いは?
オペレーティングシステム(特にOSX)の制限を管理する場合、これら3つのツールの機能と履歴の違いと重複は何ですか。 ulimit launchctl、 launchd sysctl OSXでの最大プロセス数とオープンファイル数の制限を調整するのは混乱します。 いくつかのプロセスがGUIではなくターミナルを介して起動されるかどうかは重要ですか? おそらく関連しています: OS X(10.5)で指定されているデフォルトのulimitはどこにありますか? ulimit -nと/ proc / sys / fs / file-maxの違いは何ですか?

2
Linuxネットワークポートの枯渇
カーネルソースをすぐに掘り下げることなく、できる限り多くの調査を行いました。この件に関しては大量の偽情報/不正確な情報があるようですので、これが私や他の人たちの質問に答えてくれることを願っています。 厳密に言えばIPv4と言えば、ポートの枯渇は実際に可能ですか?説明させてください: 使用可能な65535のポートがあるようです。0は使用できません。 ポートの枯渇には(src ip、src port、dst ip、dst port)タプルが一意である必要があることを読みました。 明確にするために、sysctl net.ipv4.ip_local_port_range設定を介してエフェメラルポートを100%使用できると仮定します。 そしてこれが問題です:これはどのように機能するのですか? 127.0.0.1:(x)から127.0.0.1:80への65k接続が可能 127.0.0.1:(x)から127.0.0.1:555への65k接続が可能です 基本的にもう一度、質問は(srcip、srcport、dstip、dstport)は一意である必要がありますか? 私は以上の65000個の接続開くことができませんでしたから IPへのIP「A」「B」、ポート「N」を 同様に、単一のIPはxxxx:80で私のWebサーバーへの65kを超える接続を開くことができませんでしたが、異なるソースIPからのものである限り、全体で65kを超える接続をサポートできますか? 最後に、(発信)一時ポートと待機している着信ポートについて少し混乱しています。接続が確立されると、接続の両側がピアであり、同等であることに気付きますが、それが起こる前に: たとえば、実際に(srcip、srcport、dstip、dstport)タプルが一意である必要がある場合、なぜ有効にすると次のようになります。 net.ipv4.ip_local_port_range = 1024 65535 これにより、1024〜65535のエフェメラルポートを使用できるようになります。ポート3306(mySQLなど)にバインドするサービスがある場合、ポートが使用中であるため、サービスが開始できないことがあります。 これは次の事実に関連していますか?(そしてこれは私が検証されることを求めている声明です): (srcip、srcport、dstip、dstport)は、ポート範囲が1〜65535の接続ごとに一意である必要があります(OSの一時ポートの使用に注意を払っていません) ただし、バインドするソケットの場合、(srcip、srcport、*、*)と見なすことができます。または別の言い方をすると、バインドするために何らかの理由でIPがそのポートを使用してはいけませんか? 上記の動作を確認できます。つまり、上記の正確なsysctl行を使用します。そのため、OSがそのポートを使用していると想定しているため、まれに再起動に失敗するため、mySQLを1024未満のポートに移動しました(3306)一時的なポートの場合。

3
Puppetでsysctl.confパラメータを設定します
これはCFEngineで簡単にできました...しかし、今はPuppet環境にいるので、特定のsysctl.conf変数を割り当て/確認/確認できるようにする必要があります。CFEngineの世界では、構成ファイル内の特定の行を簡単にチェックできます... Puppet wikiのsysctlモジュールへの小さな参照と、githubのプロジェクトで、私がやりたいことをしているように見えます。 しかし、どちらも実際には十分に文書化されていません。私は単にのような値のカップルを編集する方法を探していますnet.core.rmem_defaultとnet.core.wmem_max。githubでホストされているプロジェクトの形式では、私のinit.ppマニフェストの構成は次のようになります。 class sysctl { sysctl::value { "net.core.rmem_default": value => "9000000"; "net.core.wmem_default": value => "9000000"; "net.core.rmem_max": value => "16777216"; "net.core.wmem_max": value => "16777216"; } } フォーラムやメーリングリストを見ると、Puppetプラグインとモジュールの違いに混乱があるようです。用語はほとんど同じ意味で使用されています...結局、毛深いエラーを乗り越えるために、クライアントでpluginsyncを有効にする必要がありました。これはモジュールだと思いました! 現在のクライアントエラー: info: Loading downloaded plugin /var/lib/puppet/lib/puppet/type/sysctl.rb info: Loading downloaded plugin /var/lib/puppet/lib/puppet/provider/sysctl/parsed.rb err: Could not retrieve catalog from remote server: Error 400 on …

2
sysctlをOSのデフォルトにリセットする方法は?
sysctlのmanページで答えを見つけることができませんでした。私のsysctl.confファイルはまだデフォルトの状態です。いくつかの値をテストし、を介して新しい設定をロードしていますsysctl -p newsettings.conf。リセットを行うにはそれで十分ですsysctl -p(つまり、から値を読み取りますsysctl.conf)。しかし、断食sysctl -a | grep domainは古い設定がまだあることを明らかにしました。 何か案は?
10 debian  sysctl  reset 

4
再起動後もsysfsパラメータを維持するための提案
sysfs仮想ファイルシステムを介して公開されるLinuxシステムランタイムパラメーターの大幅な変更を実験しています。 これらのパラメーターを維持してRHEL / CentOSスタイルのシステムで再起動しても維持される最も効率的な方法は何ですか? それは単に/etc/rc.localにコマンドをダンプする場合ですか?これに適したinitスクリプトはありますか?構成管理の観点からも標準化を考えています。同等のクリーンなsysfsはありsysctlますか?

3
リブート後のnf_conntrack_maxの永続化
で/proc、私はnf_conntrack_maxのための2つのエントリがあります。 / proc / sys / net / netfilter / nf_conntrack_max / proc / sys / net / nf_conntrack_max 一方を変更するともう一方も変更されるのと同じ値を指しているようです。これらの両方で設定/etc/sysctl.conf: net.netfilter.nf_conntrack_max = 65528 net.ipv4.netfilter.ip_conntrack_max = 65535 再起動後も値は32764のままなので、変更は機能しません。これまでに誰かに遭遇したことがありますか?私の推測では、これらの値は関連するモジュールがロードされる前に適用されますが、誰かがすでにソリューションを知っていることを望んでいました。

1
sysctl tcp_retries1が3に設定されていると、TCPパケットが7回再送信されます-なぜですか?
Ubuntu 12.04 宛先が受信した確認を受信しないときに、TCPがパケットを再送信しようとする回数をよりよく理解しようとしています。tcpのmanページを読んだ後、これがsysctl tcp_retries1によって制御されていることは明らかでした。 tcp_retries1 (integer; default: 3) The number of times TCP will attempt to retransmit a packet on an established connection normally, without the extra effort of getting the network layers involved. Once we exceed this number of retransmits, we first have the network layer update the route …

2
Postgresqlのパフォーマンス-SHMMAXとSHMALLの調整
postgresのパフォーマンスの向上についてオンライン上にあるすべてのことについて読みましたが、SHMMAXとSHMALLの「適切な」値はまだわかりません。 コンセンサスはSHMMAX = total_memory / 4であり、SHMALL = total_memory / 2が安全な開始値であるようです。 ただし、SHMALLはページまたはバイト単位で測定でき、Ubuntuで使用されているものに関する情報を見つけることができません。 Ubuntu(またはより一般的にはDebian)はSHMALLにページまたはバイトを使用しますか?

2
Lionインストールでのカーネル共有メモリ設定の変更
sysctl.confライオンのファイルの場所はどこですか?Snow Leopardではそれがありました/etc/sysctl.confが、今ではそのフォルダーにはもう含まれていません。スポットライトでファイルを検索しても結果はありません。 共有メモリ設定は別のconfファイルに移動されましたか?それの名前は何? 編集 マシンのカーネル共有メモリ設定を変更しようとしています。sysctl.conf適切な場所にファイルが見つからなかった場合、推奨設定で独自のファイルを作成し、/etcディレクトリに配置しました。ただし、実行しsysctl -aても、古いメモリ設定が適切であることがわかります。 ライオンのインストールでこれらの設定を変更するにはどうすればよいですか?

1
FreeBSDでnet.inet.tcp.tcbhashsizeを変更する理由
事実上すべてのFreeBSDネットワークチューニングドキュメントで私は見つけることができます: # /boot/loader.conf net.inet.tcp.tcbhashsize=4096 これは通常、「TCP制御ブロックハッシュテーブルのチューニング」や「これを適切な値に設定する」などの役に立たないステートメントとペアになります。man 4 tcpどちらもあまり役に立ちません: tcbhashsize Size of the TCP control-block hash table (read-only). This may be tuned using the kernel option TCBHASHSIZE or by setting net.inet.tcp.tcbhashsize in the loader(8). この不思議なことに触れた唯一のドキュメントは、FreeBSD IPとTCP Stackの最適化の Transport Layerの下にあるProtocol Control Block Lookupサブセクションですが、その説明はそれを使用する際の潜在的なボトルネックについての詳細です。新しいTCPセグメントをリスニングソケットに一致させることに関連しているようですが、方法はわかりません。 正確に何のために使用されるTCP制御ブロックですか?ハッシュサイズを4096または他の特定の数値に設定する理由は何ですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.