タグ

ブックマーク / sdyuki.hatenadiary.org (6)

  • The S100Kps problem(ソフト割り込み毎秒10万回問題) - sdyuki-devel

    勝手に命名。 システムコールの呼び出しが多くなることでソフト割り込みの回数が毎秒10万回を越え、ソフト割り込みの処理だけでCPU資源の大半が消費されてしまう問題。 ソフト割り込みが1つのCPUコアに集中し、コアを増やしてもスケールしなくなる。 epoll/kqueue/event ports等によって1台のサーバーで大量のコネクションを捌くようになり、HDDのシーク速度の遅さがSSDで解決されると、TCP/IPのソフト処理の重さも相まってボトルネックがCPUへと移り、ソフト割り込みの重さが顕在化する。

    The S100Kps problem(ソフト割り込み毎秒10万回問題) - sdyuki-devel
  • kumofsに10MBのvalueを入れるとどうなるか実験してみた - sdyuki-devel

    kumofsは、来小さいサイズのvalueを大量に入れることを想定した分散KVSで、高解像度の画像など、サイズの大きいvalueを入れることは想定されていない。と言うかテストされていない。 でも、実は入れてみたら案外うまく動くんじゃないか?というわけで試してみた。 結論 データ総量30GB、物理ホスト1台で試した限りでは、実は問題は無さそう 物理ホスト1台というのが不十分なので微妙… ノードを追加したり復旧したりするとき、数時間の間、速度が半分くらいに劣化する データ量1TB、サーバ4台の構成で、2時間くらいかかる推定 データの再配置がタイムアウトしてしまう可能性があるが確認できていない。3台以上の構成で追試する必要あり 速度は、サーバ1台につき、Get 6.7 req/sec、Set 3.8 req/sec くらい ほぼ線形にスケールアウトすると仮定すれば、4台投入すれば Get 26

    kumofsに10MBのvalueを入れるとどうなるか実験してみた - sdyuki-devel
  • 分散KVSの使い方 - sdyuki-devel

    今流行のkey-value storageの利点と欠点など。小さいデータをたくさん扱うタイプで、単純なkey-value型のデータモデルを持つ分散KVSについて。 Webアプリをとりまく最近のKVS事情、雑感を読んで、ちゃんと整理して把握しておかないといけないな、と思ったので少し整理。 それは違うぞーという事があったらコメントくださいm(_ _)m ※2009-11-17 追記:現在、KVSという用語の意味は定義されておらず、使う人によって揺れています。ここで言うところの分散KVSは、Dynamo や kumofs や ROMA など を想定しています。 分散KVSの利点 スケールアウトできる 簡単にサーバーを追加して性能を上げられる 単体の性能が高い スキーマレス 最初は少ない台数で安く、後からサーバーを足してスケールアウト!という運用ができる。アプリケーションに影響せずに、ストレージ側

    分散KVSの使い方 - sdyuki-devel
  • 分散ストレージの収束する方向 - sdyuki-devel

    サーバーサイドの分散ストレージについて。広域P2Pとかデータセンター間で同期するとかCDN云々は知らない。 kumofsのアプリケーション-Gateway間のインタフェースは Get(key) だが、Gateway-Server間のインタフェースは実は GetByHash(key, partitioning-id)(とGetByHashIfModified(key, partitioning-id, time))だったりする。(実際の名前は違うけど意味は同じ) 現状ではpartition-idはkeyにハッシュ関数を掛けて自動生成するが、実際には任意の値を指定できる。 つまり関連するkeyには同じpartitioning-idを指定して同じノードに保存されるようにして、partitioning-idが同じkey同士ならトランザクションできるようにすることも、案外に容易にできる。 Consi

    分散ストレージの収束する方向 - sdyuki-devel
  • RDBに代わるスケーラブルなデータモデルの必要性 - sdyuki-devel

    このあたりの内容を卒業研究にする予定で、中間報告書まで書いたけど、整理と裏付けが全然追いつかなくて卒論なんて書けそうにないので、とりあえずテキトーにブログに書いておくなど。 データストアには、状態を永続化して共有する機能と、データモデル(状態を操作する意味論)を規定する機能の、2つの機能がある。この2つの機能を、より使いやすく、より高速に、よりスケーラブルに提供することが求められる。そうでないとシステム全体が成り立たない。 冗長化とか負荷分散とか、ハードの質に頼らない高性能なシステムを構築したいときは、「状態を持たないようにする」のが定石になる。同じ状態を2台のホストで同期し続けたり、状態を分割しながら整合性を保ち続けるのは、非常に難しい。このため、状態は共有データストアに保存しておくのがもっとも簡単で、現実的な解になる。 MVCアーキテクチャにおけるViewとControllerはMod

    RDBに代わるスケーラブルなデータモデルの必要性 - sdyuki-devel
  • 非同期プロトコルのクライアント - sdyuki-devel

    非同期プロトコルとは、サーバーから返ってくる応答が、必ずしも要求した順番通りに返ってこないプロトコル(ソース無し。オレオレ定義)。 順不同で返ってくる応答と要求を対応づけるのはクライアントの仕事で、典型的には要求の中にシーケンス番号を入れておき、サーバーは要求と同じシーケンス番号を応答の中にも含める。 例:MessagePack-RPC 非同期プロトコルの特徴: イベント駆動型のサーバーの場合、サーバーの実装が簡単になる 同期プロトコルだと順番を揃えてから返さないといけない。サーバーの実装が(要求1つに対してスレッドを割り当てて処理するのではなく)ソケット1つに対してスレッドを割り当てて処理する方式だとあまり関係なくて、特に実装は簡単にならない。 処理が重い要求と軽い要求を続けて送っても、重い要求に詰まって後の応答が返ってこなくなることが無い 同期プロトコルだと、応答を送り返すにはその前の

    非同期プロトコルのクライアント - sdyuki-devel
  • 1