GNU/Linux >> Linux の 問題 >  >> Linux

Linux はどのようにプロセス間で帯域幅を割り当てますか?

ほとんどのパフォーマンスの問題と同様に、これは複雑です。各タスクがどれだけの帯域幅を取得するかは、ネットワーク スタックのさまざまなレイヤーにある多くのものの間の複雑な相互作用です。整形しなくても。不完全なリスト:

  • タスク (およびドライバーの割り込みハンドラー) が CPU を使用できるタイミングの CPU スケジューラー
  • タスクがデータを取得する速度。ボトルネックや競合によって制限される可能性があります
  • 使用されているキューイング規則はどれですか。基本的にはパケット スケジューラです
  • ハードウェア TX キューの数やフローの選択方法など、ドライバの詳細
  • TCP プロトコルの動作。1 つのフローが輻輳制御にヒットした場合、帯域幅が制限されている間は低速のままになる可能性があります
  • フローを受信するリモート システムに関する上記のすべての考慮事項
    • すべての接続が同じ受信者に送信されない場合、他の 最後はおそらくあなたよりも影響力があります 終了

これらの多くは、等しい帯域幅の「公平性」を最適化するのではなく、他の基準を最適化しています。 TCP 輻輳制御は、輻輳による崩壊に苦しむよりもむしろ少しのグッドプットを持っています.

また、忘れないでください。あなたはおそらく 任意の時点でネットワークの 1 つだけではありません。そのため、「ここ」と「あちら」の間のルーター、スイッチなども考慮に入れる必要があります。

これが好奇心以上のものである場合、可能な限り速くするための解決策は、より多くの帯域幅を取得することです.

または、QoS、シェーピング、またはアプリケーション スロットリングを実行することで、クォータを設定して全体的な動作を向上させることができます。しかし、これはもはや最速ではありません。ポリシーによって勝者と敗者を選択します。


Linux
  1. Linuxで実行中のプロセスを強制終了する方法

  2. IP (Linux) からホスト名を取得するには?

  3. Linux でデバッガーはどのように機能しますか?

  1. bashからネットマスクを取得するには?

  2. Linux はスレッドを子プロセスと区別する方法を教えてください。

  3. Scientific Linux で ldapsearch を取得するには?

  1. Linux – Cgroup間で公平な帯域幅共有を構成するにはどうすればよいですか?

  2. Linuxでディレクトリサイズを取得する方法

  3. Linuxで共有メモリセグメントに接続されているプロセスを一覧表示する方法は?