タグ

c10kに関するkengonのブックマーク (8)

  • 非同期I/O Linux

    非同期I/O 概説 Introduction to Asynchronous I/O AIO, I/O Multiplexing… 2007年8月6日 KLab 株式会社 Kラボラトリー 廣瀬 正明 Copyright © KLab Inc. All rights reserved. 今日の目的 非同期I/Oとは何かを知る 非同期I/Oを使うと何がうれしいのかを知る 非同期I/Oを実現する手段(複数)を知る Copyright © KLab Inc. All rights reserved. アジェンダ 非同期I/Oを使う理由 非同期I/Oとは? AIOの実装を紹介 AIOの使い方 落穂ひろい Copyright © KLab Inc. All rights reserved. アジェンダ 非同期I/Oを使う理由 非同期I/Oとは? AIOの実装を紹介 AIOの使い方 落穂ひろ

  • Kazuho@Cybozu Labs: 「サーバ書くなら epoll 使うべき」は、今でも正しいのか

    多数のTCP接続をハンドリングするサーバを書くなら、1コネクション1スレッドのモデルではなく、epollやkqueueのようなイベント駆動型のI/O多重化を行うべきだ、と言われます。だが、そのような主張は、「C10K問題」が書かれた2002年から7年経過した今でも有効なのでしょうか? echoサーバを書いて、ベンチマークを取ってみることにしました。 ふたつのグラフは、いずれも接続数とスループットの関係を表しています。最初のグラフは、全接続がアクティブに通信した場合、あとのグラフは、全接続のうち小数のコネクションが順次アクティブになっていく、というモデルです。これらのグラフから、以下ようなことが読み取れます。 epoll も per-thread モデルも、良くスケールする epoll は、ワークセットが小さい場合に (最大50%) per-thread モデルよりも高速 少なくとも、1コネ

  • epollのなかみ - moriyoshiの日記

    よく C10K 問題とかいって epoll(7) の話が出てきて select(2) 遅いね poll(2) 遅いねってなるんだけど、正直なところ、これらのシステムコールを実際に使ってコードを書いてみたひとはどのくらいいるのだろう。ましてや eventpoll が何やってるか知っている人はそんなに多くないんじゃないだろうか。もう O(n) だの O(1) だのって煙に巻かれるのもうんざりだ。 というわけで、2.6.26 の fs/eventpoll.c のコードを読んでみた。正直 Linux カーネルにすごく詳しいわけでもないので、誤りがあったら適宜突っ込んでもらえると幸いです。 前提知識として VFS モジュールがどうなってるかとかは LinuxのFSモジュールを書いてみる LinuxのFSモジュールを書いてみる (その2) のソース中のコメントを追ってもらえればと。 登場する構造体 e

    epollのなかみ - moriyoshiの日記
  • エッジトリガ (epoll) の話 - id:kazuhookuのメモ置き場

    エッジトリガのメリットとしては、「データが貯まった状態で処理を後回ししても起こされない」というのもあるみたいだけど、これはEPOLLONESHOTというオプションを使うとレベルトリガでも実現可能。 epollであえてエッジトリガを使うとすれば、「ノンブロッキングI/Oでいつも最後までデータを読んでるから、レベルトリガはただの無駄だよねー」とかいうときの気持ちの問題ではなかろうか。 http://d.hatena.ne.jp/nishidakeisuke/20080703/p1 エッジトリガとレベルトリガで、コーディングの差が大きくなるのは、むしろデータを書く場合なんじゃないのかなぁ。レベルトリガだと、 send(2) が EAGAIN を返したら epoll に fd を登録 アプリケーション側のバッファが空になったら、epoll から fd を削除 というコードを書かないといけない (と

    エッジトリガ (epoll) の話 - id:kazuhookuのメモ置き場
    kengon
    kengon 2008/07/19
  • High-Performance Server Architecture

    Introduction The purpose of this document is to share some ideas that I've developed over the years about how to develop a certain kind of application for which the term "server" is only a weak approximation. More accurately, I'll be writing about a broad class of programs that are designed to handle very large numbers of discrete messages or requests per second. Network servers most commonly fit

    kengon
    kengon 2007/05/01
  • TheC10kProblem - 「C10K問題」(クライアント1万台問題)とは、ハードウェアの性能上は問題がなくても、あまりにもクライアントの数が多くなるとサーバがパンクする問題のこと

    TheC10kProblem - 「C10K問題」(クライアント1万台問題)とは、ハードウェアの性能上は問題がなくても、あまりにもクライアントの数が多くなるとサーバがパンクする問題のこと 目次 この文書について C10K 問題 関連サイト まず読むべき I/O フレームワーク I/O 戦略 1. 各スレッドが複数のクライアントを受け付ける. そしてノンブロッキング I/O と レベル・トリガ型の完了通知を利用する. 伝統的な select() 伝統的な poll() /dev/poll kqueue() 2. 各スレッドが複数のクライアントを受け付ける. そしてノンブロッキング I/O と 変更型の完了通知(readiness change notification)を利用する. kqueue() epoll リアルタイム・シグナル fd 単位のシグナル (Signal-per-fd)

  • The C10K problem

    [Help save the best Linux news source on the web -- subscribe to Linux Weekly News!] It's time for web servers to handle ten thousand clients simultaneously, don't you think? After all, the web is a big place now. And computers are big, too. You can buy a 1000MHz machine with 2 gigabytes of RAM and an 1000Mbit/sec Ethernet card for $1200 or so. Let's see - at 20000 clients, that's 50KHz, 100Kbytes

  • Web2.0の先にあるC10K問題 ― @IT

    個々のクライアントがサーバに要求する処理量は小さなものでハードウェアの性能上は問題がなくても、あまりにもクライアントの数が多くなるとサーバがパンクする――。これが最近Web開発者の間で話題となっている「C10K問題」(クライアント1万台問題)だ。 プロセス番号が足りなくなる パンクするのは例えばプロセス番号だ。 Ajaxの実装として最近注目されている技術に“Comet”(コメット)と呼ばれるものがある。HTTPのセッションをあえて切断せずに、サーバとクライアント間でつなぎっぱなしにするテクニックだ。Cometを使えばクライアントからのリクエストに応えるだけでなく、サーバ側からも不定期に情報を送り出すことができる。例えば、Web上でチャットサービスを実装するには、通常はクライアント側からサーバに一定間隔でポーリングすることで、ほかのユーザーの発言分をサーバから取得して表示するが、Cometの

  • 1