- RedHatディストリビューション(2.6.18カーネルのバージョン1.3.30-k2)のデフォルトのixgbドライバーでは、テストの実行時にネットワークインターフェイスがハングアップしました。
- そのため、インテルのWebサイト(1.3.56.11-2-NAPI)からドライバーをダウンロードして、再構築する必要がありました。 すべてが彼と一緒に機能し、受け取った最大帯域幅は同じカーネルバージョン2.6.18で232Kオペレーション/秒でした。 ただし、このバージョンのカーネルはマルチスレッドデータ転送をサポートしていません( 約Translator-元の乗算リングで)。
- カーネルバージョン2.6.29にはマルチスレッドデータ転送が含まれていますが、最新のixgbドライバーバージョン1.3.56-2-NAPIは含まれていません。 そのため、新しいバージョンのカーネルとドライバーをダウンロード、コンパイル、およびインストールしました。 これは機能し、少し調整した後、280K op./秒の最大スループットが得られました。
結果
すでに報告したように、OpenSolarisとmemcached 1.3.2を搭載したシステムでは、最大スループットが約350K op./秒でした。 RHEL5(カーネル2.6.29)と同じバージョンのmemcachedを使用する同じサーバーで、280K op./secを取得しました。 OpenSolarisはLinuxを25%バイパスしていることがわかりました!Linuxのチューニング
最大のパフォーマンスを得るために、次のシステム値が使用されました。net.ipv4.tcp_timestamps = 0 net.core.wmem_default = 67108864 net.core.wmem_max = 67108864 net.core.optmem_max = 67108864 net.ipv4.tcp_dsack = 0 net.ipv4.tcp_sack = 0 net.ipv4.tcp_window_scaling = 0 net.core.netdev_max_backlog = 300000 net.ipv4.tcp_max_syn_backlog = 200000次のixgbドライバー固有のパラメーターが設定されました(受信用に2つのキューと送信用に2つのキュー)
RSS = 2.2 InterruptThrottleRate = 1600.1600
OpenSolarisのチューニング
/ etc / systemで、MSI-Xに次のパラメーターを設定します( 翻訳者のメモは元のMSIXにありますが、パラメーターはMSI-Xに特に関連しています)。ddi_msix_alloc_limit = 4を設定 pcplusmpの設定:apic_intr_policy = 1ixgbeインターフェースの場合、4番目の送信キューと4番目の受信キューにより、パフォーマンスが向上しました。
tx_queue_number = 4、rx_queue_number = 4さらに、別のプロセッサコアをネットワークインターフェイスに割り当てました。
dladm set-linkprop -p cpus = 12,13,14,15 ixgbe0
Upd :2x2を使用した理由のシャンティの答え:基本的に、さまざまな設定を試して、どれが最高のパフォーマンスを発揮するかを確認しました。 Linuxでは、2 + 2のリングで最高の結果が得られました。 OpenSolarisでは、4 + 4でした。 複数のリングに対するLinuxの実装はおそらくまだ十分に機能していないと思われます(比較的新しい)。
短い翻訳:グラジオラスだから