問題タブ [disk-io]
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.
c++ - ディスクの読み取り/書き込み最大速度の取得 (プログラムによる)
ディスク使用量を測定する C++ アプリケーションを作成中です。/proc/diskstats
定期的に読み取ることで、現在のディスク使用量 (読み取り速度と書き込み速度) を取得できました。
この使用量をパーセンテージで表示できるようにしたいと考えています (解釈が難しい生の数値よりも使いやすいと思います)。したがって、Linux で最大 (または公称) ディスク I/O 速度をプログラムで取得する方法 (API 呼び出し、ファイルの読み取りなど) を知っている人はいますか?
ディスク速度の測定に関するさまざまな回答を認識していますが (例: https://askubuntu.com/questions/87035/how-to-check-hard-disk-performance )、すべてテスト済みです。このような方法は、実行に時間がかかり、実行中に大量のディスク I/O が発生する (実行中の他のアプリケーションのパフォーマンスが低下する可能性がある) ため、避けたいと考えています。
c++ - ネットワークに書き込まれているときにローカル ファイルをストリーミングする高性能な方法
現在、パケット キャプチャ ファイルを受信時にローカル ディスクに書き込むシステムが存在します。最初のステップとして、これらのファイルをローカル ディスクにドロップすることは、フォールト トレランスの理由から望ましいと考えられています。クライアントが死亡し、再接続する必要がある場合、または別の場所で起動する必要がある場合は、ディスクから再生する機能を利用できます。
データ パイプラインの次のステップは、ディスクに取り込まれたこのデータをリモート クライアントに取得しようとすることです。十分なディスク容量があると仮定すると、ローカル ディスク (およびその上のページ キャッシュ) を永続的な無限 FIFO として使用すると非常に便利だと思います。プロデューサーとコンシューマーの間の結合を低く保つために、ファイルシステムを使用することも望ましいです。
私の調査では、このタイプのアーキテクチャに関するガイダンスはあまり見つかりませんでした。より具体的には、一般的なオープンソース ライブラリ/フレームワークで、ストリーム アウトするように書き込まれているファイルを読み取るための確立されたパターンを見たことがありません。
私の質問:
このアーキテクチャには、私が気付いていない、または間接的に軽視している欠陥がありますか?
ファイルが書き込まれているときにファイルを消費し、ファイルでより多くのデータが利用可能になったときに効率的にブロックおよび/または非同期に通知するための推奨事項はありますか?
目標は、消費者がページ キャッシュ ウォームから明示的または暗黙的に利益を得ることです。これを最適化する方法に関する推奨事項はありますか?