OpenSolarisでのMemcachedはLinuxよりも高速です

OpenSolarisを使用してSunFire X2270(Intel Xeon(Nehalem)プロセッサベースのサーバー)でmemcachedパフォーマンステストした以前の経験を使用して、同じテストをRHEL5を使用して同じサーバーで実行することにしました。 最初のテスト結果の投稿で、可能な限り最高のパフォーマンスを達成するために、Intel Oplin 10GbEネットワークカードを使用したことを既に指摘しました。 結局のところ、このカードをLinuxで使用するには、ドライバーで少し作業してカーネルを再構築する必要がありました。

結果

すでに報告したように、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 = 1 
ixgbeインターフェースの場合、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の実装はおそらくまだ十分に機能していないと思われます(比較的新しい)。

短い翻訳:グラジオラスだから




All Articles