2008-10-01から1ヶ月間の記事一覧

mmap+POSIXセマフォによる高速なプロセス間通信 - mp::ipc_vector

同じホストの異なるプロセスの間で、高速な通信を行いたいときがあります:fork() したプロセスと通信したい場合や、「アプリケーションたくさん → localhostのクライアントデーモン1つ → サーバー」という形で接続したい*1 *2 場合などなど。 あるいは共有…

スレッド間通信のオーバーヘッドを比較する

pthread_系の関数は mutex か cond しか待てないが、select/poll/epoll はファイルディスクリプタしか待てないので、両方待ちたいときに困る。解決方法はいろいろあると思いますが、私の思いつく範囲では以下の4つ。 selectで待ち、シグナルで割り込む ファ…

同期プロトコルと非同期プロトコル

今のところチラシの裏的な話。 ネットワークプロトコルは、 リクエストした順番通りにレスポンスを返す(リクエストの順番とレスポンスの順番が同期している) リクエストした順番通りにレスポンスが返ってくるとは限らない(リクエストの順番とレスポンスの…

memstoredの実装詳細 1000行に収まる高速サーバーについて

1000行はテキトーなハッタリだが良くあること ;-) memstored の本体は memstored.cc ファイル1つに収まっており、その行数は600行程度しかない。memstored のポイントは、少ない行数で高速なサーバーをカンタンに書けたことであった。memstored の実装につ…

memstored 0.1 = memcached + mpio + Tokyo Cabinet

memstored は memcached のバイナリプロトコルをサポートしたハッシュストレージサーバーです。IO戦略ライブラリmpio の信頼性と性能をテストするために開発しました。IOに mp::iothreads を使用し、バックエンドには Tokyo Cabinet の抽象データベースAPIを…