私は、12個の物理コアと24個の論理コア、および192ギガビットのラムを意味するデュアル・キオン・チップを搭載したマシン上で動作するCアプリケーション(VStudio 2010、win7 64ビット)を用意しています。 編集:OSはwin7です(Windows 7,64ビットなど)。大量のディスクへの書き込みを最適化する
アプリには24個のスレッドがあり(各スレッドには独自の論理コアがあります)、計算が行われ、大量のC構造の別の部分が埋められます。すべてのスレッドが完了したとき(そしてスレッドが完全に均衡しているため、同時に完了したとき)の構造は、約60ギガバイトです。
(私はハードウェアの設定を制御しているので、RAID 0を実行している6台の2TBドライブを使用します。つまり、物理的な書き込み制限は平均シーケンシャル書き込み速度の約6倍、つまり約2ギガ/秒。)
これをディスクにする最も効率的な方法は何ですか?明らかに、I/O時間は計算時間を矮小化します。このトピックに関する私の研究から、write()(fwrite()とは対照的に)のように思えます。しかし、バッファサイズの設定などの点で、ソフトウェア側では他にどのような最適化を行うことができますか?mmapはより効率的でしょうか?
他の人がこの質問を簡単に見つけるのに役立つ、あなたが書きたい言語のタグを追加してください。 – Buddha
計算にはどのくらい時間がかかりますか? –
'mmap'タグがあります。それはあなたのシステムで利用可能ですか? –