70から700GBの範囲の大きなファイルを書いています。メモリマップされたファイルがチャンクでの通常の書き込みよりも効率的であれば誰でも経験はありますか? コードはC++で実行され、Linux上で実行されます。大きなファイルをC++で書く
答えて
最初からファイルを書き込んでいる場合は、ファイルのメモリマッピングから何も得られません。
あなたは、他のパターンでファイルを作成している場合、質問を更新してください:)消費者向けドライブの
メモリをマップすると、ユーザー空間からカーネルへのバッファコピーを避けることができます。 – Jimm
バッファコピーはボトルネックではありません。 RAMの速度は、ハードディスクのシーケンシャル書き込み速度よりも大きさまたは2倍です。しかし、[this beast](http://www.anandtech.com/show/4879/ocz-zdrive-r4-cm88-16tb-pcie-ssd-review/3)は、2.5 GB /秒の連続シーケンシャル書き込み速度。 – hirschhornsalz
@ Jimm:Ok。だから、あなたは良い基礎を持った仮説を持っています。マップされたメモリが特定のケースで役立つかどうかを知る唯一の方法は、特定の構成でテストすることです。また、ハンス・パッサントの分析を考えてみましょう。あなたのケースでソフトウェアを改善して得られるものはありますか?私たちは知ることができません。 –
典型的な持続的なハードドライブの転送速度は、太陽が輝くと、硬いそよ風秒あたり約60メガバイトですディスク・ドライブ・ヘッドがあまり頻繁に探索する必要がないように、断片化されていないファイル・システムである。
したがって、700ギガバイトの書き込みに要する時間の下限は、700 * 1024/60 = 11947秒または3時間20分です。バッファリングの量はそれを修正するものではなく、ディスク書込み速度とプロセッサが消火ホースを満たす能力との間の劇的な不一致によってすぐに圧倒される。あなたのコードやディスクドライブの状態の問題が、それよりも2〜3時間かかる場合にのみ、問題を探し始める。
あなたは単一のドライブまたは特定のRAID構成を参照していますか? – Jimm
60MB/sは非常に控えめです。ストリーミングデータの場合、これは300 MB/sの範囲に簡単に持ち上げることができます。私の格安raid0は 'dd 'で260 MB/sを管理します。最近エンタープライズSSDは1 GB/sに近づいています。 – hirschhornsalz
これは確かに正当なコメントですが、OPは彼が持っているものを文書化していませんでした。ここでのポイントは、これがハードウェアの問題であるということです。彼は、特定のマシン能力だけでなく、誰にでも計算を適用することができます。そして、下限を設定して、何を期待するかを知ってください。 –
- 1. Cで大きなファイルを読み書きする
- 2. Heaportを大きな入力でCに書く
- 3. Jenaで大きなowlファイルを書くことができません
- 4. openpyxl大きなファイルのメモリの問題を書く
- 5. C#FileStream:大きなファイルを書き込むための最適なバッファサイズ?
- 6. Cで大きなファイルにアクセス
- 7. Cパイプが大きな書き込みで機能しない
- 8. VB.NETで '0より大きくない'を書くには
- 9. Excelで大胆なテキストを書く方法C#win forms
- 10. C#ソケット、大きなファイルを受信
- 11. C#と大きなXMLファイルを読む
- 12. 大きなファイルをPythonで修正して書き込む
- 13. C++データを重複なくファイルに書き込む
- 14. vimで大きな/巨大なファイルを開くことができず、 "新しいファイル"モードで開きます
- 15. PHPスクリプトが大きなファイルをディスクに書き込まない
- 16. 大きな文字列ではなくファイルをストリーミングして、Pycryptoで大きなファイルを暗号化する
- 17. 大きなCSVファイルを読み込み、書式設定してから書き込んでください
- 18. の.xmlの大きなファイルのアップロードエラー - C#
- 19. C#の大きなファイルへの「ランダム」アクセス
- 20. Cでファイルを読み込む(/書く)
- 21. C++で別のファイルにクラスを書く
- 22. C#でisilo .pdbファイルを書くには?
- 23. 大きなファイルの書き込みと読み込み用に開く
- 24. cで上書きするのではなく、ファイルにテキストを挿入する
- 25. 大きなファイルサイズを読み書きするC#
- 26. BufferedOutputStreamを使用して大きなファイルを書き込む
- 27. Cで複数のファイルを開く/書き込む
- 28. 非常に大きなCSVファイルを書くPHPのDB出力から
- 29. 非常に大きなファイルを書き込むIOError
- 30. PHPは大きなファイルをキャッシュに書き出します
あなたはどのようなシステムを実行していますか、700GBの_RAM_を持っていますか? –
Linux 6.x?私はLinux 4と5を見逃しましたか? –
@ X-Zero 700GBのRAMの要件はどこで手に入りましたか? – vcsjones