問題タブ [aio]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
hornetq - HornetQ が ubuntu で AIO を使用していない
ubuntu に libaio をインストールし、HornetQ を組み込み、プログラム構成で実行しています。ジャーナルで AIO を使用するためにこれを実行していますが、起動時に AIO を取得せず、常に NIO を使用しています。なぜ失敗するのかを判断する方法はありますか?
linux - Linux カーネル AIO、オープン システム コール
Linux カーネル AIO が非同期の「open」システム コールをサポートしないのはなぜですか? 「open」はファイルシステムで長時間ブロックできるため、そうではありませんか?
linux - ubuntuのlibaioパッケージの目的は何ですか
最近Ubuntuを使い始め、いくつかのパッケージをインストールしようとしたところ、パッケージに出会いましたlibaio
。このパッケージの目的は何ですか?また、これをUbuntuにインストールする必要があるのはいつですか?
c - aio_write to file 要求の後にデータを変更する
ファイルに書き込むために aio_write に渡されたバッファを変更または解放しても安全ですか。または、操作が完了するまで待つ必要がありますか? 関数はすべてのバッファ コンテンツをキューにコピーしますか、それともデータへの参照のみをコピーしますか?
c - 1 つのプロセスで 2 つのブロッキング操作
私は2つの簡単な仕事をしています。1つ目はパイプからの読み取りです。そして2つ目は、タイムアウトによっていくつかの操作を行うことです。問題は、1 つのプロセスで動作させることです (2 つのプロセスで実行する方法は知っていますが、私には不向きです..)。
また、cron を使用しない理由がいくつかあります。2 つのジョブを非同期で実行する必要があります (互いにブロックしない)。
何か案は?
c++ - aio_read が OSX で不正なアドレスを引き起こす
基本的に次のことを行う OSX の async io コードがあります。
オフセットはアラインされておらず、バッファにはアラインメントの制限がありません。(これは同期読み取りに async io を使用する「無意味な」方法であることはわかっていますが、それは私の質問には関係ありません)。
特定の条件下でこのコードを実行すると、エラー コード 14 (Bad Address) が表示されます。問題は、おそらく読み取りがバッファの最後から外れて、filedes
.
誰かが似たようなことを経験しましたか?
OSXのドキュメントでは、非同期であるため、スタックにバッファを持たないという要望だけで、アライメントの要件は言及されていません(読み取りが完了するまでブロックすると適用されません)。しかし、バッファとサイズを 512 バイトに揃える必要があるというドキュメントをいくつか見つけました。aio_read
この制限 (またはその他の配置制限) が OSX に適用されるかどうかは誰にもわかりませaio_read
んか?
ここで何が起こっているのかについて他のアイデアはありますか?
c++ - カーネル AIO (libaio) の書き込み要求が、ブート時に予約されたメモリから書き込むときに失敗する
私は Linux aio (libaio) の初心者であり、経験豊富な誰かが私を助けてくれることを願っています。
PCI デバイスからシステム RAM への高速 DMA を実行するシステムがあります。次に、libaio を使用して DMA アドレス空間から直接データをディスクに書き込みたいと考えています。現在、DMA に使用されるメモリは、「memmap」カーネル ブート コマンドを使用してブート時に予約されます。
私のアプリケーションでは、メモリは mmap を使用して仮想ユーザー空間アドレス ポインターにマップされます。これをバッファーとして io_prep_pwrite() 呼び出しに渡すことができるはずです。ただし、これを行うと、書き込みが成功しないようです。要求が io_getevents でリープされると、「res」フィールドにエラー コード -22 が含まれ、「Bad Address」として出力されます。
ただし、以前にマップされたメモリ位置からアプリケーションによって割り当てられた新しいバッファーに memcpy を実行し、io_prep_pwrite の呼び出しでこのローカル バッファーへのポインターを使用すると、要求は正常に機能し、データはディスクに書き込まれます。問題は、memcpy を実行すると、データをディスクにストリーミングする必要がある速度のボトルネックが生じ、DMA レートについていけないことです。
書き込み要求が機能するために最初にメモリをコピーする必要がある理由がわかりません。以下の問題を説明するために最小限の例を作成しました。bufBaseLoc はマップされたアドレスで、localBuffer はデータのコピー先のアドレスです。次の行を実行する必要はありません。
...または localBuffer をまったく持っています。「IOCB の準備」セクションで使用したいもの:
...しかし、うまくいきません。しかし、単なるコピーであるローカル バッファは機能します。
誰かが理由について何か洞察を持っていますか? どんな助けでも大歓迎です。
ありがとう、