レイジー向けのLinuxネットワークスタックのチューニング

Linuxネットワークスタックは、デフォルトではデスクトップでうまく機能します。 負荷が平均よりわずかに高いサーバーでは、すべてを正しく構成する方法をすでに把握する必要があります。 私の現在の仕事では、これをほぼ産業規模で処理する必要があるため、どこにも自動化せずに-同僚に長時間どのようにどのように機能するかを説明し、Cコードと混合した約300ページの英語テキストを人々に強制的に読ませる必要があります...結果は1時間でも1日でもありません。 したがって、ネットワークスタックをチューニングするためのユーティリティセットとその使用のためのガイドをスローしようとしましたが、特定のタスクの特定の詳細には入りませんが、同時に1時間未満で読むことができ、少なくとも一部は削除されます好意。







何を達成する必要がありますか?



ネットワークスタックを調整するときの主なタスク(サーバー、ルーター、トラフィックアナライザー、大量のトラフィックを受信するWebサーバーの役割は関係ありません)-プロセッサコア間のパケット処理の負荷を均等に分散します。 CPUとネットワークカードが同じNUMAノードに属していることを考慮し、コア間で不要なパケットドロップを作成しないことをお勧めします。







メインタスクの前に、プライマリタスクが実行されます-サーバー上にあるタスク、トラフィックの出入りの量などを考慮したハードウェアの選択。







鉄の選択に関する推奨事項





したがって、2 Gbit / sを超えるトラフィック量のソースが2つ以上与えられている場合、プロセッサとNUMAノードの数、およびこれらのソースの数に等しいネットワークカード(ポートではない)の数を備えたサーバーについて考える必要があります。







「主よ、私はこれを理解したくありません!」



必要ありません。 私はすでにそれを理解しており、これを同僚に説明しようとして時間を無駄にしないために、ユーティリティセットnetutils-linuxを作成しました 。 Pythonで作成され、バージョン2.6、2.7、3.4、3.6でテストされています。







ネットワークトップ



ネットワークトップ







このユーティリティは、適用された設定を評価し、サーバーリソースの負荷分散(割り込み、softirqs、プロセッサコアごとの1秒あたりのパケット数)の均一性、あらゆる種類のパケット処理エラーを表示するために必要です。 しきい値を超える値は強調表示されます。







rss-ladder



# rss-ladder eth1 0
- distributing interrupts of eth1 (-TxRx) on socket 0:"
  - eth1: irq 67 eth1-TxRx-0 -> 0
  - eth1: irq 68 eth1-TxRx-1 -> 1
  - eth1: irq 69 eth1-TxRx-2 -> 2
  - eth1: irq 70 eth1-TxRx-3 -> 3
  - eth1: irq 71 eth1-TxRx-4 -> 8
  - eth1: irq 72 eth1-TxRx-5 -> 9
  - eth1: irq 73 eth1-TxRx-6 -> 10
  - eth1: irq 74 eth1-TxRx-7 -> 11
      
      





( ).







autorps



# autorps eth0
Using mask 'fc0' for eth0-rx-0.
      
      





( ). RSS, . — .







server-info



# server-info rate
cpu:
  BogoMIPS: 7
  CPU MHz: 7
  CPU(s): 1
  Core(s) per socket: 1
  L3 cache: 1
  Socket(s): 10
  Thread(s) per core: 10
  Vendor ID: 10
 disk:
   vda:
     size: 1
     type: 1
 memory:
   MemTotal: 1
   SwapTotal: 10
 net:
   eth1:
     buffers:
       cur: 5
       max: 10
     driver: 1
     queues: 1
 system:
   Hypervisor vendor: 1
   Virtualization type: 1
      
      





:







  1. server-info show



    : , . , lshw



    , .
  2. server-info rate



    : . Windows, . 1 10.






, !



:









.







2 .









, . .







1. .



:









:









2. .



:









:







1 10 / PCI-, NUMA node1.







2 combined 10 :







for dev in eth0 eth1 eth2 eth3; do
  ethtool -L $dev combined 8
done
      
      





3 eth0, eth1 , NUMA node0, eth2, eth3 , NUMA node1:







rss-ladder eth0 0
rss-ladder eth1 0
rss-ladder eth2 1
rss-ladder eth3 1
      
      





4 eth0, eth1, eth2, eth3 RX-:







for dev in eth0 eth1 eth2 eth3; do
  rx-buffers-increase $dev
done
      
      







:












Update: , RHEL-based , debian , RHEL-based , . , - Ubuntu/Debian/Altlinux! 2.0.10







Update2. , RPS . , 2.2.0 autorps.







Update3: 2.5.0








All Articles