タグ

2014年4月25日のブックマーク (4件)

  • Kernel Asynchronous I/O (AIO) Support for Linux

    Overview AIO enables even a single application thread to overlap I/O operations with other processing, by providing an interface for submitting one or more I/O requests in one system call (io_submit()) without waiting for completion, and a separate interface (io_getevents()) to reap completed I/O operations associated with a given completion group. Support for kernel AIO has been included in the 2

    kotak
    kotak 2014/04/25
    Linux kernel aioはsocketやttyをサポートしていない?
  • バッファキャッシュとAIO(3) - O'Reilly Japan Community Blog

    前回までファイル I/O 全般について簡単に振り返りました。いよいよ題のAIOに取り掛かります。今回は、POSIXのAIOインタフェースと、LinuxカーネルのAIOサポートについて紹介します。 POSIX AIO インタフェース バッファキャッシュにより緩和されるとはいえ、ファイル I/Oの最終到達地点はディスクですから、同期的なI/Oはやはりその時間が問題視されることがあります。まだバッファキャッシュに存在しないデータを読み取る場合には遅いディスク必ず待たなければなりません。この動作を非同期に行い、待っている間に他の処理を進められるようにするのが非同期 I/O、AIO(Asynchoronous I/O)です。POSIXではaio_read(3)、aio_write(3)、aio_suspend(3)、aio_fsync(3)、aio_return(3)、aio_cancel(3)、

  • Linuxの非同期IO(libaio)を使う上での注意点 | Everyday Deadlock

    Linuxで非同期IOを実行する方法としては POSIX AIO (glibcによる実装) libaio (Linuxカーネル内の実装) の2つがあります。POSIX AIOを使った非同期IOは、実態としては裏でスレッドを生成してpread(2)/pwrite(2)を使ってIOを発行しているだけなので、性能があまりよろしくありません。そのため、ポータビリティが必要でない場合には、Linuxネイティブのlibaioを使うことが妥当です。 しかしながら、2011年現在このlibaioに関してはドキュメントが充分に整備されておらず、manpageも誤った記述が多々見受けられるという残念な状況にあります。私も実際にlibaioを使おうとして、よくわからないエラーに延々苦しめられました。このエントリでは、libaioの基的な使い方から、libaioを使う上ではまりがちなバッドノウハウなどをまとめて

    kotak
    kotak 2014/04/25
  • 非同期I/OやノンブロッキングI/O及びI/Oの多重化について

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 2017年5月20日追記 エントリはI/OのOperationとCompletionおよびデータ整合性を混ぜてまとめた一部誤った定義になっているので、正確な定義を日語で知りたい方は下記にリンクしたエントリを読むことをおすすめします。 非同期とノンブロッキングとあと何か Apache2.4.1のevent_mpmnginx及びnodde.jsのアーキテクチャを考える上で、非同期I/OやノンブロッキングI/O、I/Oの多重化に関してある程度正確な理解が必要だと思ったのでまとめておく。 ここで「ある程度」といったのは、非同期を表すAsynchronousとノンブロッキングのnon-blockingは曖昧に使われる場合が多いからだ。まず、英語

    非同期I/OやノンブロッキングI/O及びI/Oの多重化について
    kotak
    kotak 2014/04/25
    Blocking/Non-blocking, Synchronous/Asynchronous