Content-Length: 262461 | pFad | http://b.hatena.ne.jp/hirose31/epoll/

[B! epoll] hirose31のブックマーク

タグ

epollに関するhirose31のブックマーク (11)

  • epoll, エッジトリガー, EPOLLRDHUP - 誰かの役に立てばいいブログ

    このエントリーは社内勉強会用の解説記事です。 普通の人は便利な libev や libuv を使っておきましょう。 epoll はいわゆる C10K 問題に対応するための Linux カーネルが提供する仕組みです。といってもこの問題、32bit 時代のメモリが潤沢ではなかった時代のものなので、いまどき並大抵のプログラムであれば、普通に1コネクション1スレッドで問題ないでしょう。@kazuho 先生がそうおっしゃっていました。 まあ御託はさておいて、epoll のマニュアル読んでもちょいわからないところを補足しておきます。 レベルトリガーとエッジトリガー マニュアルに書いてありますが、簡単に言うとレベルトリガーは指定した状態が満たされるかチェックする方式です。つまりソケットの受信バッファにデータがあれば、epoll_wait を何度呼び出しても必ず read ready が返ってきます。 エ

    epoll, エッジトリガー, EPOLLRDHUP - 誰かの役に立てばいいブログ
  • カーネル/VM Advent Calendar 一日目: eventfd, timerfd, signalfd - Emacs ひきこもり生活

    ひ、日付? な、なんのことです…!? 最初はfutex()とかカーネルの変更でpostgresqlが遅くなったとかの話をからめようかと思ってたんですがfutex()調べてたらどんどん大きくなってしまったので今回はスキップして(そのうちあるであろう)2回目にまわしとくことに。 ということで、今回はfutex()から似たところ?で、 epoll, kqueue, *fdあたりを簡単にまとめてみようと思います。 select まずはselect()のおさらいを。 こんなふうにサーバにクライアントが5つぶらさがっています。クライアントは常時接続はしていますが、ずっとサーバと通信しているわけではありません。時々サーバにリクエストを投げ、サーバは適宜リクエストに応答します。サーバはsocketを作ってクライアントと通信をしています。 言うまでもないことですが、こんなコードではうまく動きません。 for

    カーネル/VM Advent Calendar 一日目: eventfd, timerfd, signalfd - Emacs ひきこもり生活
    hirose31
    hirose31 2012/12/05
    signalfd, eventfd, timerfd
  • Kazuho@Cybozu Labs: 「サーバ書くなら epoll 使うべき」は、今でも正しいのか

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

  • Kazuho@Cybozu Labs: Picoev: a tiny event loop for network applications, faster than libevent or libev

    I am sure many programmers writing network applications have their own abstracting layers hiding the differences between various I/O multiplex APIs, like select(2), poll(2), epoll(2), ... And of course, I am one among them.  While writing mycached (see Mycached: memcached protocol support for MySQL for more information), I was at first considering of using libev for multiplexing socket I/Os.  Libe

  • ネットワークプログラムのI/O戦略 - sdyuki-devel

    図解求む。 以下「プロトコル処理」と「メッセージ処理」を分けて扱っているが、この差が顕著に出るのは全文検索エンジンや非同期ジョブサーバーなど、小さなメッセージで重い処理をするタイプ。ストリーム指向のプロトコルの場合は「プロトコル処理」を「ストリーム処理」に置き換えるといいかもしれない。 シングルスレッド・イベント駆動 コネクションN:スレッド1。epoll/kqueue/select を1つ使ってイベントループを作る。 マルチコアCPUでスケールしないので、サーバーでは今時このモデルは流行らない。 クライアントで非同期なメッセージングをやりたい場合はこのモデルを使える: サーバーにメッセージを送信 イベントハンドラを登録;このときイベントハンドラのポインタを取っておく イベントハンドラ->フラグ がONになるまでイベントループを回す イベントハンドラ->結果 を返す 1コネクション1スレッ

    ネットワークプログラムのI/O戦略 - sdyuki-devel
  • はてなブログ | 無料ブログを作成しよう

    2024年下半期のフィルム写真たち ふと気がつくと2024年も残り僅か。 そしてふと振り返るとこのブログに掲載する写真がGRIIIで撮ったものばかりになっていたのだけど、決してフィルムに飽きたということではなく、フィルムはフィルムで淡々と撮り続けているし、モノクロもカラーネガもいつも通り自宅で…

    はてなブログ | 無料ブログを作成しよう
  • 高速なイベント駆動IOライブラリ mpio - Blog by Sadayuki Furuhashi

    まだまだ未完成で半分アイディアだけなのですが、なかなか進まないのでとりあえず公開してみます。CodeRepos:/lang/c/mpio/trunk/mp いわゆるlibeventのようなものなのですが、C++で書かれていて、より使いやすく、より最適化が効きやすいようになっています。 以下のような特徴があります(目指しています)。 オーバーヘッドの少ない低水準レイヤー、使いやすい高水準レイヤーという形でレイヤー構造になっている better Cなコードにもある程度なじむ メモリ管理機能を内蔵している ヘッダファイルをincludeするだけで使える(ライブラリをリンクしなくて良い) ライブラリ自体のコードが短く、モジューラブル 低水準なレイヤーから順に、mp::event、mp::dispatch、mp::io、mp::asioがあります。 mp::event OS依存のIO多重化システムコ

    高速なイベント駆動IOライブラリ mpio - Blog by Sadayuki Furuhashi
  • #261541 - sys/epoll.h: missing #define for EPOLLONESHOT - Debian Bug report logs

    hirose31
    hirose31 2007/07/11
    EPOLLONESHOT >= glibc-2.3.5
  • poll/epoll/kqueueを任意に切り替えられるコード - Blog by Sadayuki Furuhashi

    ネットワークで通信するプログラムを書いていると、ファイルディスクリプタ(ネットワークならソケット)をselectやpollで監視して、パケットが届いたら何かする、ということが良くあります。 しかしselectやpollは、*BSD で kqueue・kevent を使ってみようで書かれているように、どうも遅いらしい。C10K問題が取りざたされている昨今、Linuxにはepoll、BSDにはkqueue、Solarisには/dev/pollというより高速な仕組みが用意されているのですが、epollを使ってしまうとLinuxでしか動かないし、kqueueで書くとBSDでしか動かない。 というわけで、epollもkqueueも同じインターフェースで使えて、#defineで簡単に中身を切り替えられると嬉しい、とは誰しも一度は思うはず。そうに違いない。 もちろん先人も同じことを考えており、libev

    poll/epoll/kqueueを任意に切り替えられるコード - Blog by Sadayuki Furuhashi
    hirose31
    hirose31 2007/06/04
    libeventの△な点。で、C++なのを作ってみたよという件。
  • epoll を使った echo サーバ - odz buffer

    自分用メモ。epoll & Non-Blocking IO による echo サーバの例。 使い方のテスト以上のものではないので、そのままではいろいろまずい。epoll_create や socket で取得した file descriptor を close してなかったり。まねしないように。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <fcntl.h> #include <sys/socket.h> #include <sys/types.h> #include <sys/epoll.h> #include <netinet/in.h> #define SERVER_PORT 10007 #define MAX_EVENTS 10 #define BAC

    epoll を使った echo サーバ - odz buffer
    hirose31
    hirose31 2007/05/10
    echo server
  • Coronet - Free Software Directory

    http://www.xmailserver.org/coronet-lib.html Epoll/coroutine based event API The coronet library implements an epoll and coroutine based library that allows for async operations over certain kinds of files (any file that supports poll(2) and the O_NONBLOCK fcntl(2) flag can be hosted - like sockets, pipes, ...). The coronet library uses the epoll support available in the 2.6 series of Linux kernels

  • 1








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://b.hatena.ne.jp/hirose31/epoll/

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy