コマンドラインから実行する方法はありますか? man tcpは、tcp_nodelay = 1を設定する必要があると伝えますが、/ proc/sys/net/ipv4の下にtcp_nodelayファイルを作成することはできません。 LinuxでNagleを無効にする方法があれば教えてください。LinuxでNagleのアルゴリズムを無効にするには?
答えて
このフラグ(TCP_NODELAY
)は、ソケットごとに有効にすることができ、TCPソケットを作成するときに適用されるオプションです。これは目的のために行われます。Nagleのアルゴリズムは一般に有用であり、ネットワークの輻輳を処理するのに役立ちます。あなたのシステムはおそらくこの非活性化に苦しんでいるので、システム全体でそれを無効にしたいと思う。与えられたソケットのためにそれを無効にするには
、Cにhereとhereを説明するように、あなたがオプションTCP_NODELAY
を適用することができます。
int flag = 1;
int result = setsockopt(sock, /* socket affected */
IPPROTO_TCP, /* set option at TCP level */
TCP_NODELAY, /* name of option */
(char *) &flag, /* the cast is historical cruft */
sizeof(int)); /* length of option value */
if (result < 0)
... handle the error ...
あなたのプログラミング言語に適応する必要があるかもしれませんが、基本的にはTCP_NODELAY
フラグを設定オプションをソケットsock
に送信し、Nagleのアルゴリズムを効果的に無効にします。これは、TCP標準をサポートするソケットを持つ任意のOSで有効です。
Nagleのアルゴリズムをシステム全体で無効にする場合は、2つのオプションを使用できます。まず、旗を使ってカーネルを再コンパイルすることができます(これについては配布マニュアルを参照してください)。 2番目の方法は、this codeに似た既存の接続ごとにTCP_NODELAY
フラグを設定するソフトウェアを作成することです。後者のオプションは、新しいTCP接続がシステム上に作成されるたびに実行する必要があります。
ビットクリーナーは、TCPの低遅延モードを有効にするだろう何か:
echo 1 > /proc/sys/net/ipv4/tcp_low_latency
どのようにする決定に、これは、レイテンシを下げるためにTCPスタックにヒントを与えるだろう(IあなたがNagleのアルゴリズムを無効にして達成しようとしていることです)。デフォルトでは、帯域幅を最適化するように設定されています(「0」は/proc/sys/net/ipv4/tcp_low_latency
から読み込まれます)。
あなたの答えは正しいですが、なぜ '&flag'を' char * 'にキャストしますか? 'setsockopt'は' const void * '値ポインタを期待しているので、型へのキャストは必要ありません(すべての型は暗黙的に' void * 'にキャストできます):http://pubs.opengroup.org/onlinepubs/9699919799/functions/ setsockopt.html実際には、タイプAのポインターをタイプBのポインターにキャストしても、どちらのタイプも 'void * 'でないものは、ISO-Cによって実際には未定義の振る舞いです。あなたはintへのポインタを持っていますが、それは 'char *'へのポインタだと主張しています(ほぼすべてのシステムで動作しますが、技術的には未定義です) – Mecki
このコードは私のものではありません。この問題については、www.unixguide.netにお問い合わせください。 'setsockopt()'にはいくつかの異なるシグネチャがあることを覚えていますが、そのうちのいくつかは(私が提供した最初のリンクのように) 'flag'パラメータに' char * 'を使います。信頼できる 'setsockopt()'プロトタイプへの参照と目的の操作を実行するためのコード例がある限り、私は答えを変えても構いません。 – Soravux
- 1. Nagleのアルゴリズムについて不明確
- 2. LinuxでGUIを無効にするQt LinuxでGUIを無効にする
- 3. TCP nagleの動作を無効にするリスクはありますか?
- 4. WinsockカーネルバッファとNagleアルゴリズムに関する疑問
- 5. Linuxでポートブロックを無効にする
- 6. アーチLinuxのネットワークインターフェイスを無効にする
- 7. Linux vsyscallを無効にするvdar
- 8. Linuxカーネルでページキャッシュを無効にするには?
- 9. Linux。すべてのログを無効にする方法は?
- 10. linux dirty_writeback_centisecsカーネルパラメータは無効です
- 11. Linuxでウェブカメラのオートフォーカスを無効にする
- 12. LinuxでFirefoxの自動更新を無効にする
- 13. TCP_NODELAYは私が<em>TCP_NODELAY</em>パラメータを設定することにより、Ubuntu Linuxのボックスに私のTCPソケットで<strong>Nagleアルゴリズム</strong>を無効にしようとしていますUbuntuの
- 14. chrome/firefoxを使ってLinuxでTLS 1.2を無効にする
- 15. UnauthorizedError:無効なアルゴリズムexpress-jwt
- 16. linuxでyesコマンドを無効にする方法
- 17. Nagleのアルゴリズムは、Play framework/Nettyでオンまたはオフになっていますか?
- 18. アプリケーション内のLinuxメモリのオーバーコミットを無効にする
- 19. linuxディレクトリのグループ権限を無効にすることはできますか?
- 20. ldap以外のLinuxユーザー認証を無効にする
- 21. linuxのfactorコマンドの背後にあるアルゴリズムは何ですか?
- 22. x86_64 Linux 3.0:無効なメモリアドレス
- 23. Linuxの内部ルートを無効にしますか?
- 24. Ehcache3を無効/無効にする
- 25. Linuxのクライアント側でCIFS(samba)のキャッシュを無効にする方法
- 26. Androidの無効リストビューでスクロールを有効にするには
- 27. ポインタを無効にするポインタの配列が無効です
- 28. Linuxでバイナリのアドレス空間のランダム化を無効にするにはどうすればよいですか?
- 29. LinuxのCプログラムで割り込みを無効にする方法
- 30. Linuxの機能(setcap)がLD_LIBRARY_PATHを無効にしているようです
これをシステム全体にしたいですか? –
いや、理想的にはシステム全体が好きです –