我有一个Linux内核高CPU消耗的问题,同时在服务器上引导我的java应用程序.这个问题只发生在生产中,在开发服务器上一切都是光速的.
upd9:关于这个问题有两个问题:
怎么解决?- Nominal Animal建议同步并删除所有内容,这确实有帮助.sudo sh -c 'sync ; echo 3 > /proc/sys/vm/drop_caches ;作品.upd12:但确实sync够了.
为什么会这样? - 它仍然对我开放,我明白将durty页面刷新到磁盘会占用内核CPU和IO时间,这很正常.但是什么是strage,为什么即使用"C"编写的单线程应用程序我在内核空间中加载100%的内核?
由于ref-upd10和ref-upd11,我有一个想法,echo 3 > /proc/sys/vm/drop_caches不需要用缓慢的内存分配来解决我的问题.在启动占用内存的应用程序之前运行`sync'应该足够了.可能会在生产中尝试这个tommorow并在此处发布结果.
upd10:丢失FS缓存页面案例:
cat 10GB.fiel > /dev/null然后我执行了sync可以肯定的是,没有durty页面(cat /proc/meminfo |grep ^Dirty显示184kb.cat /proc/meminfo |grep ^Cached我得到:4GB缓存int main(char**)我获得了正常的性能(例如50ms来初始化32MB的已分配数据).upd11:很多脏页案例.
项目清单
我HowMongoDdWorks用评论的read部分运行我的例子,过了一段时间
/proc/meminfo说2.8GB是Dirty和3.6GB Cached. …