濃縮還元オレンジニュース

マルチコア時代のサーバ設計

この記事を読むのに必要な時間:およそ 0.5 分

書籍Googleを支える技術(技術評論社)の著者で知られる西田圭介氏によるブログ記事です。1つのサーバでより多くのクライアント数をさばくために起きる「C10K問題」を取り上げ,マルチコアのサーバをどのように設計すればよいかを考察しています。

西田氏はエントリ中で,いくつかある手法のうち,イベント駆動を基本とし,並列処理が可能なところではイベントハンドラをマルチスレッドで走らせる「マルチスレッド化されたイベント駆動」に着目しています。そしてJeff Darcyによる高性能サーバ設計に関する忘備録に書かれているコンテキストスイッチとロック競合についてまとめています。

Jeff Darcy氏の記事には,大まかに次のようなことが載っています。

  • コンテキストスイッチが増えると性能に影響が出る
  • イベント駆動で実装する際,同じスレッドがワーカやリスナになれるようにし,無駄なコンテキストスイッチを発生させない
  • 大きなロックから始めて徐々に分割していく,という設計は間違っている
  • プログラムを,縦軸をコード,横軸はデータという軸で垂直水平に分割してロック空間を定義し,均等に分散させる

西田氏は実際に自身が構築したサーバ設計に当てはめ,現在の問題点と改善ポイントを明らかにしています。この記事以降でもマルチスレッドやイベント駆動に関する話題を取り上げています。

URLhttp://d.hatena.ne.jp/nishidakeisuke/20080502/p1

著者プロフィール

角田直行(かくだなおゆき)

普段はお仕事でPHPやJavaを使ってWeb開発をしています。一部でセレブエンジニアとか言われてますが,全然セレブじゃありません。

コメント

コメントの記入