問題タブ [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.
mysql - mysqlクラッシュウィンドウaioは操作を続行できません
今日、mysql 5.5.20 wamp のインストールがランダムにクラッシュしました。
InnoDB: File operation call: 'Windows aio' で失敗したようです。InnoDB: 操作を続行できません。
私は実行mysqlcheck -c -u root -p --all-databases
しましたが、すべてが正常に表示されます。
この問題のトラブルシューティングを行うにはどうすればよいですか? Windows Server 2008 を実行しています
エラーダンプは以下です
c++ - io_submit API を使用して pwrite リクエストを送信すると、pread リクエストを送信するよりも遅いのはなぜですか?
ディスクから大量のデータを読み取り、大量の書き込みも行うアプリケーションがあります。I/O パフォーマンスを向上させるためにダイレクト io を使用しようとしています。
現在libaio
、読み取りと書き込みの両方で非同期 IO を実装するために使用しています。暫定的な結果では、読解段階では改善が見られますが、執筆段階では大幅な低下が見られます。
次にstrace
、実行時の動作をキャプチャするために使用しました。これが読み取り段階のログです (関連のないログをいくつか削除しました)。
そして、ここに書き込み段階のログがあります:
一般に、同じio_submit
API でもさまざまな時間がかかります。一度に 16 の読み取り要求を送信しても、1 つの書き込み要求を送信するよりも高速です。
それで、それは正しいですか?書き込みステージを最適化するにはどうすればよいですか?
asynchronous - aio_write() が間違った動作をするのはなぜですか?
aio_write を使用して 2 つのファイルを書き込みたいとします。
32KBのバッファを使用し、1ファイルに対してaio_writeを2048回繰り返します。(ファイルサイズは64MB)
ただし、結果は 64MB ではなく、サイズは 64MB + 32KB になりました。
また、ファイルがガベージで書き込まれることもあります。ファイルに「A」を記入したい。
私を助けてください。
c - aioのメモリ使用量が多い
aio でテスト プログラムを書いているのですが、データを書き込むメイン プロセスが終了しても、プロセスのメモリ使用量がまったく下がらないことがわかりました。私のプログラムの問題、または aio キャッシュに関するヒントを教えてください。
私のプログラム:
メモリ使用量は 4G (場合によっては 3G、変更される場合もあります) を超えますが、関数malloc
とfree
関数は両方とも 10,000,000 回実行されるため、メモリ リークの問題はないと思います。
c - 大きなファイルに対する aio_write
sendfile(2)
と を使用して、本質的に の機能を非同期的に模倣しようとしてaio_read(3)
いaio_write(3)
ます。
大きな (> 150k) ファイルのテストを除いて、すべて正常に動作しているようです。
struct io_request
転送を追跡するために使用している単純なものがあります。
まず、aio_read()
呼び出しを作成します。
その後、IO_READ_SIGNAL
ハンドラーにキャプチャされます。
ioreq->aiocbp->aio_buf
ハンドラー内では、大きなファイルであっても、内容が完全であることが確認できます。
後で、ハンドラーaio_write()
にキャプチャされます。IO_WRITE_SIGNAL
この時点aio_write()
で完了しているはずです。戻り値を確認し、それに応じて行動します。どちらの呼び出しも、適切なバイト数が書き込まれ、書き込み中にエラーが発生しなかったことを報告します。
より大きなアプリケーションは HTTP サーバーです。この問題が発生するのは、リモート クライアントが .csv に追いつくのに十分な速さで読み取ることができないためだと推測しますaio_write()
。sendfile()
これを実装したときsendfile()
、ファイル転送を完了するために複数回呼び出す必要がありました。
いくつかの直接的な質問:
- が問題を報告しない
aio_return()
のはなぜですか?aio_error()
- この動作を修正するにはどうすればよいですか?
- バッファリングする方法はあります
aio_write()
か? に渡されたn_bytes
内部のキャッピングを考えていて、内部から複数回呼び出すだけでした。struct aiocb
aio_write()
aio_write()
aio_write_handler()
ご協力いただきありがとうございます!
ubuntu - nginxのコンパイル中にAIOが見つかりません
ubuntu で nginx をコンパイルしようとしていますが、次の構成パラメーターを使用しています。
今、コンパイルしようとすると、次のエラーが表示されます。
-with-cc-opt 行を削除すると、このエラーは発生せず、AIO が見つかります。libaio1 と libaio-dev をインストールしているので、ライブラリはそこにありますが、それでもこのエラーが発生します。それを理解するのを手伝ってくれませんか。ティア。
linux - 実装が epoll(synchronous) に基づいている場合、boost::aio が非同期である理由
私たちは知っています:
(1) epoll は、ユーザー クエリ/システム通知に基づいて同期的です。while ループを使用して、起動されたすべての fd を呼び出します。
(2) boost::asio は「非同期」であると宣言していますが、Linux での実装は epoll を使用しています。
私の質問は、「syn」システムコールを使用して「asyn」を実装するにはどうすればよいですか? カーネル/システムでサポートされている aio インターフェイスを使用しない限り、そうですか?
私の混乱を正すのを手伝ってください。ありがとう!
c - シリアルポートを非同期で「開く」および「閉じる」方法は?
シリアル ポートを非同期で使用しようとしています。select
、poll
、またはepoll
withを使用して、O_NONBLOCK
非同期の読み取りと書き込みを行うことができます。しかし、open
とはclose
どうでしょうか。
close
ブロックを 1 秒以上見ました。