小编Dmi*_*try的帖子

linux高内核cpu用法对内存初始化

我有一个Linux内核高CPU消耗的问题,同时在服务器上引导我的java应用程序.这个问题只发生在生产中,在开发服务器上一切都是光速的.

upd9:关于这个问题有两个问题:

  1. 怎么解决?- Nominal Animal建议同步并删除所有内容,这确实有帮助.sudo sh -c 'sync ; echo 3 > /proc/sys/vm/drop_caches ;作品.upd12:但确实sync够了.

  2. 为什么会这样? - 它仍然对我开放,我明白将durty页面刷新到磁盘会占用内核CPU和IO时间,这很正常.但是什么是strage,为什么即使用"C"编写的单线程应用程序我在内核空间中加载100%的内核?

由于ref-upd10ref-upd11,我有一个想法,echo 3 > /proc/sys/vm/drop_caches不需要用缓慢的内存分配来解决我的问题.启动占用内存的应用程序之前运行`sync'应该足够了.可能会在生产中尝试这个tommorow并在此处发布结果.

upd10:丢失FS缓存页面案例:

  1. cat 10GB.fiel > /dev/null然后我执行了
  2. sync可以肯定的是,没有durty页面(cat /proc/meminfo |grep ^Dirty显示184kb.
  3. 检查cat /proc/meminfo |grep ^Cached我得到:4GB缓存
  4. 运行int main(char**)我获得了正常的性能(例如50ms来初始化32MB的已分配数据).
  5. 缓存内存减少到900MB
  6. 测试总结:我认为linux将用作FS缓存的页面回收到已分配的内存中是没有问题的.

upd11:很多脏页案例.

  1. 项目清单

  2. HowMongoDdWorks用评论的read部分运行我的例子,过了一段时间

  3. /proc/meminfo说2.8GB是Dirty和3.6GB Cached. …

c linux cpu kernel allocation

11
推荐指数
1
解决办法
5129
查看次数

标签 统计

allocation ×1

c ×1

cpu ×1

kernel ×1

linux ×1