逐渐增加CPU使用量而不增加内存。想法?

时间:2013-02-28 15:55:50

标签: c++ mysql linux debugging cpu-usage

所以我有一个用C ++编写的应用程序,在Ubuntu 12.04上运行,最初从数据库中读取一些数据,然后在目录中查找文件。当它们出现时,它会处理它们,然后将一些数据写回数据库。随着时间的推移,CPU使用率逐渐增加,大约每天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看起来很正确。我怀疑数据库连接,但在其他类似的应用程序中没有表现出这种行为。我的下一步是将valgrind附加到一个进程并让它运行几天 - 同时,我可以尝试其他任何东西?

2 个答案:

答案 0 :(得分:2)

这并不令人惊讶。在描述应用程序时,数据库表变得越来越大。

对较大的表的查询可能需要更多的CPU。您没有描述表,索引或查询,但行为是合理的。

您不一定会看到数据库使用的空间增加,因为数据库通常会在磁盘上为增长的表保留额外的空间。

答案 1 :(得分:1)

原来不是db部分 - 有人在巨大的地图对象上使用.find()。这是一个埋在一堆数据库部分中的调用,这就是为什么我倾向于db。

这里没什么可看的,继续:)