私はC++プロジェクト全体をコンパイルするのにかかる時間を減らすためにさまざまな方法をテストしてきました。現在は5分かかります。 distcc、ccacheなどを試しました。最近、プロジェクト全体をRAMドライブにコピーしてそこからコンパイルすると、コンパイル時間が元の時間の30%、わずか1.5分に短縮されることがわかりました。
明らかに、RAMドライブで作業することは非現実的です。では、どのような方法を使用できるかを知っている人はいますか?オペレーティングシステムが常にディレクトリをキャッシュするように強制する?私はまだディレクトリがいつものようにディスクに再同期したいのですが、常にデータのメモリ内コピーを望んでいます。可能ですか?
編集する:
考えられる解決策として、私たちはrsync
ディスクドライブをRAMドライブと同期させるために10秒ごとに実行されるデーモンプロセスを開始することを考えました。その後、RAMドライブでコンパイルを実行します。非常に高速rsync
ですが、実際に動作しますか?もちろん、OSが良いかもしれませんが..
ベストアンサー1
キャッシュに多くのファイルを保持するための確実な方法は、そのファイルに頻繁にアクセスすることです。 Linuxはスワップとキャッシュの間で調整するのに非常に巧みなので、観察された速度の違いは実際にOSがキャッシュにエントリを保持しないためではなく、tmpfsの使用と他の試みの間の異なる違いによるものです。
各ケースでどのIOが実行されているかを見てください。基本的なツールは次のとおりです。iotop
。他のツールも役に立ちます。LinuxディスクIO負荷分析(ファイルシステムパスおよび/またはプロセス別)?、一定期間のI / Oを測定できるLinuxプログラムは何ですか?、サーバーエラーの他のスレッド。
何が起こるかについてのいくつかの仮定は次のとおりです。測定を行う場合は、これらの仮説を確認または反証できるようにこれを示してください。