Suche senden
Hochladen
Aio
•
4 gefällt mir
•
4,676 views
Masaaki HIROSE
Folgen
Technologie
Bildung
Melden
Teilen
Melden
Teilen
1 von 37
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Allocators@C++11
Allocators@C++11
Cryolite
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
トランザクションの設計と進化
トランザクションの設計と進化
Kumazaki Hiroki
Weitere ähnliche Inhalte
Was ist angesagt?
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
Masakazu Matsushita
こわくない Git
こわくない Git
Kota Saito
30分で分かる!OSの作り方
30分で分かる!OSの作り方
uchan_nos
謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した
t-sin
明日使えないすごいビット演算
明日使えないすごいビット演算
京大 マイコンクラブ
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについて
alwei
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
Motonori Shindo
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
目grep入門 +解説
目grep入門 +解説
murachue
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門
Fixstars Corporation
Scapyで作る・解析するパケット
Scapyで作る・解析するパケット
Takaaki Hoyo
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
kikairoya
Glibc malloc internal
Glibc malloc internal
Motohiro KOSAKI
UEFI時代のブートローダ
UEFI時代のブートローダ
Takuya ASADA
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
組み込みLinuxでのGolangのススメ
組み込みLinuxでのGolangのススメ
Tetsuyuki Kobayashi
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
エキスパートPythonプログラミング改訂3版の読みどころ
エキスパートPythonプログラミング改訂3版の読みどころ
Takayuki Shimizukawa
ARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくい
wata2ki
Was ist angesagt?
(20)
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
こわくない Git
こわくない Git
30分で分かる!OSの作り方
30分で分かる!OSの作り方
謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した
明日使えないすごいビット演算
明日使えないすごいビット演算
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについて
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
目grep入門 +解説
目grep入門 +解説
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門
Scapyで作る・解析するパケット
Scapyで作る・解析するパケット
できる!並列・並行プログラミング
できる!並列・並行プログラミング
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
Glibc malloc internal
Glibc malloc internal
UEFI時代のブートローダ
UEFI時代のブートローダ
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
組み込みLinuxでのGolangのススメ
組み込みLinuxでのGolangのススメ
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
エキスパートPythonプログラミング改訂3版の読みどころ
エキスパートPythonプログラミング改訂3版の読みどころ
ARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくい
Ähnlich wie Aio
InfiniBand on Debian
InfiniBand on Debian
Taisuke Yamada
スタート低レイヤー #0
スタート低レイヤー #0
Kiwamu Okabe
LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)
Masataka Kondo
Elastic stack 世界にさらしたサーバを可視化してみた
Elastic stack 世界にさらしたサーバを可視化してみた
Masamitsu Maehara
Ansible quickstart
Ansible quickstart
Hideki Saito
Osoljp studygroup201303
Osoljp studygroup201303
Noriyasu Sakaue
Androidとfpgaを高速fifo通信させちゃう
Androidとfpgaを高速fifo通信させちゃう
ksk sue
dofilewrite and vn_write
dofilewrite and vn_write
kusabanachi
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every second
Taisuke Yamada
Programming camp Codereading
Programming camp Codereading
Hiro Yoshioka
OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門
irix_jp
オープンソースNW監視ツールのご紹介
オープンソースNW監視ツールのご紹介
OSSラボ株式会社
CybozuのOSS(WalB)へコミットしてみた/使ってみた
CybozuのOSS(WalB)へコミットしてみた/使ってみた
Yuma Ohgami
Raspberry Pi勉強会(前編)-京大機械研究会
Raspberry Pi勉強会(前編)-京大機械研究会
Naoki Matsumoto
【続編】その ionice、ほんとに効いてますか?
【続編】その ionice、ほんとに効いてますか?
Narimichi Takamura
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
dcubeio
Ansible2.0と実用例
Ansible2.0と実用例
OSSラボ株式会社
Oracle solaris 10 u9 iSCSI Boot
Oracle solaris 10 u9 iSCSI Boot
Kazuyuki Sato
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
ThinReports
VIRLとPyATSで実現するネットワークCI
VIRLとPyATSで実現するネットワークCI
tetsusat
Ähnlich wie Aio
(20)
InfiniBand on Debian
InfiniBand on Debian
スタート低レイヤー #0
スタート低レイヤー #0
LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)
Elastic stack 世界にさらしたサーバを可視化してみた
Elastic stack 世界にさらしたサーバを可視化してみた
Ansible quickstart
Ansible quickstart
Osoljp studygroup201303
Osoljp studygroup201303
Androidとfpgaを高速fifo通信させちゃう
Androidとfpgaを高速fifo通信させちゃう
dofilewrite and vn_write
dofilewrite and vn_write
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every second
Programming camp Codereading
Programming camp Codereading
OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門
オープンソースNW監視ツールのご紹介
オープンソースNW監視ツールのご紹介
CybozuのOSS(WalB)へコミットしてみた/使ってみた
CybozuのOSS(WalB)へコミットしてみた/使ってみた
Raspberry Pi勉強会(前編)-京大機械研究会
Raspberry Pi勉強会(前編)-京大機械研究会
【続編】その ionice、ほんとに効いてますか?
【続編】その ionice、ほんとに効いてますか?
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
Ansible2.0と実用例
Ansible2.0と実用例
Oracle solaris 10 u9 iSCSI Boot
Oracle solaris 10 u9 iSCSI Boot
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
VIRLとPyATSで実現するネットワークCI
VIRLとPyATSで実現するネットワークCI
Mehr von Masaaki HIROSE
JVM! JVM! JVM!
JVM! JVM! JVM!
Masaaki HIROSE
Redunduncy of NAT instance on AWS/VPC
Redunduncy of NAT instance on AWS/VPC
Masaaki HIROSE
How to inspect a RUNNING perl process
How to inspect a RUNNING perl process
Masaaki HIROSE
Introduction of aws-cli
Introduction of aws-cli
Masaaki HIROSE
『Ficia』インフラとPerlにまつわるエトセトラ
『Ficia』インフラとPerlにまつわるエトセトラ
Masaaki HIROSE
Shibuya.pm #9 My First XS
Shibuya.pm #9 My First XS
Masaaki HIROSE
Mehr von Masaaki HIROSE
(6)
JVM! JVM! JVM!
JVM! JVM! JVM!
Redunduncy of NAT instance on AWS/VPC
Redunduncy of NAT instance on AWS/VPC
How to inspect a RUNNING perl process
How to inspect a RUNNING perl process
Introduction of aws-cli
Introduction of aws-cli
『Ficia』インフラとPerlにまつわるエトセトラ
『Ficia』インフラとPerlにまつわるエトセトラ
Shibuya.pm #9 My First XS
Shibuya.pm #9 My First XS
Kürzlich hochgeladen
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
Tetsuya Nihonmatsu
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
ssuser370dd7
2024 04 minnanoito
2024 04 minnanoito
arts yokohama
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
arts yokohama
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
Shumpei Kishi
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
ssuser539845
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
Matsushita Laboratory
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
arts yokohama
2024 03 CTEA
2024 03 CTEA
arts yokohama
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
Ayachika Kitazaki
Kürzlich hochgeladen
(11)
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
2024 04 minnanoito
2024 04 minnanoito
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
2024 03 CTEA
2024 03 CTEA
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
Aio
1.
非同期 I/O
概説 Introduction to Asynchronous I/O AIO, I/O Multiplexing…
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
I/O モデルの整理 Synchronous
Asynchronous Blocking Non-blocking read/write read/write (O_NONBLOCK) I/O multiplexing I/O 多重化 (select, poll) AIO 非同期 I/O (POSIX AIO, libaio) ~ Boost application performance using asynchronous I/O http://www-128.ibm.com/developerworks/linux/library/l-async/
12.
13.
14.
15.
16.
17.
18.
19.
20.
POSIX AIO –
スレッド通知 iocb->aio_fildes = … iocb->aio_buf = … iocb->aio_nbytes = … iocb->aio_offset = … iocb->aio_sigevent.sigev_notify = SIGEV_THREAD ; iocb->aio_sigevent.sigev_notify_function = rd_done ; iocb->aio_sigevent.sigev_value.sival_ptr = iocb ; aio_read (iocb); /* void rd_done (sigval_t sigval) */ iocb = (struct aiocb *)sigval.sival_ptr; while ((rc = aio_error (iocb)) == EINPROGRESS); rc = aio_return (iocb); char *buf = (void *)iocb->aio_buf; struct aiocb の初期化 aiocb を取り出す データが詰まってる buf 返り値を得る エラー状態を確認 スレッドを起床して通知 コールバック関数 自分自身を格納 非同期処理をリクエスト
21.
22.
POSIX AIO –
シグナル通知 iocb->aio_fildes = … iocb->aio_buf = … iocb->aio_nbytes = … iocb->aio_offset = … iocb->aio_sigevent.sigev_notify = SIGEV_SIGNAL ; iocb->aio_sigevent.sigev_signo = SIGIO_READ ; iocb->aio_sigevent.sigev_value.sival_ptr = iocb ; aio_read (iocb); /* void rd_done (int signo, siginfo_t *info, void *context) */ iocb = (struct aiocb *)info->si_value.sival_ptr; while ((rc = aio_error (iocb)) == EINPROGRESS); rc = aio_return (iocb); char *buf = (void *)iocb->aio_buf; struct aiocb の初期化 aiocb を取り出す ☚ データが詰まってる buf 返り値を得る エラー状態を確認 シグナルで通知 ☚ 発生シグナルを指定 ☚ 自分自身を格納 非同期処理をリクエスト sigemptyset(&sigact_r.sa_mask); sigact_r.sa_flags = SA_SIGINFO; sigact_r.sa_sigaction = rd_done ; sigaction( SIGIO_READ , &sigact_r, NULL); シグナルハンドラ
23.
24.
libaio io_queue_init (AIO_MAXIO,
&myctx); struct iocb *ioq[n]; for (i=0; i<=n; i++) { io_prep_pread (iocb, srcfd, iosize, offset); io_set_callback (iocb, rd_done); ioq[i] = iocb; } io_submit (myctx, n, ioq); io_queue_run (myctx); io_queue_wait(myctx, NULL); /* void rd_done(io_context_t ctx, struct iocb *iocb , long res,…) */ int iosize = iocb->u.c.nbytes; char *buf = iocb->u.c.buf; off_t offset = iocb->u.c.offset; 非同期イベント処理-> CB データが詰まってる buf コンテキストの初期化 iocb のセットアップ (read) コールバック関数のセット 非同期処理をリクエスト 非同期処理の完了を待つ
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
おしまい
Jetzt herunterladen