そのため、Ubuntu12.04で実行されているC++で記述されたアプリがあります。このアプリは、最初にデータベースからデータを読み取り、ディレクトリでファイルを監視します。それらが表示されると、それらを処理してから、データをデータベースに書き戻します。時間の経過とともに、CPU使用率は徐々に増加し、1日あたり約5%のオーダーになりますが、メモリ使用量は同じままです。論理的には次のようになります。
-open db connect
-while(keep_running())
- check dir for new files (I know - it should use the watch system and callbacks, but..)
- process files
- (possibly) update db
-end while
-close db connect
SIGINTするまでkeep_running()は常にtrueです。
コードはそれほど複雑ではないので、CPUの使用法に戸惑っています-callgrindは正しく見えます。db接続が疑われますが、他の同様のアプリではこの動作は見られません。次のステップは、valgrindをプロセスにアタッチし、それを数日間実行することです。その間に、他に何か試すことができますか?