SolarisのネットワークスタックってSMPに強いのん?
「SolarisのネットワークスタックはSMPに強い」という噂を聞いていたので、取り敢えずどんな感じなのか資料を斜め読みしてみた。
Solarisとか全ッ然知らないので、間違ってたらツッコミ下さい。
資料:
Oracle and Sun Microsystems | Strategic Acquisitions | Oracle
OpenSolaris 最新動向とプロジェクト Crossbow の威力
- 1990年代後半以降、サーバーは、多数の CPU を実行する SMP ベースになった
- ミッドエンドマシンからハイエンドマシンが NUMA 主体となったため、CPU の切り替え処理のコストが高くなった
- 従来のSolarisのTCP/IPスタックの問題点
ので、Solaris 10で「FireEngine」という新しいTCP/IPスタックを導入した、と。
これの特徴は、
- 全てのプロトコルレイヤを、完全にマルチスレッド化された一つのモジュールにマージ
- データ構造単位のロックでなく「垂直境界」と呼ばれるCPU単位の同期メカニズムを使用→「squeue」を使用して実装
- 一つのCPUが一つのsqueueを持ち、各接続インスタンスは特定のsqueueに割り当てられる→局所性が上がる
という感じ。
- CPUがNICより高速なモード(デフォルト)
- インバウンド:割り込みを受けたCPUのsqueueで処理
- アウトバウンド:アプリケーションを実行しているCPUのsqueueで処理
- NICがCPUより高速なモード
- 1つのCPUでNICを処理出来ないので、接続は利用可能なsqueue(=CPU)にランダムに割り当てられる
- Crossbow
- なんかすごい。ネットワーク全体を仮想化出来る。MP性能の話とも関係はあるけど、ちょっと本筋から外れてるのでスキップ
- ハードウェアレーン
- リソースを「ハードウェアレーン」としてまとめてリニアなスケーラビリティを実現→上のsqueueをCPUに貼り付ける話?
- 動的ポーリング→後述
- パケットチェイニング→詳細ドコー?
- 動的ポーリング
と、ぼんやり分かったような気がした。気がしただけかもしれない。
追記:
Solaris分かりませんって前置きに書いておいたら、藤枝先生が予想通り釣れましたからコメントを頂きました。
じゃあ、Linuxのネットワークスタックはどうなのん? - かーねる・う゛いえむにっき
Linuxの記事に書いた、最近入ったばかりのRPS,RFSと同じような改善がSolarisでもなされているようです。
じゃあ、Linuxのネットワークスタックはどうなのん? - かーねる・う゛いえむにっき