首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >慢速分片/SLUB内存分配

慢速分片/SLUB内存分配
EN

Stack Overflow用户
提问于 2012-04-27 02:56:14
回答 1查看 726关注 0票数 0

我最近遇到了一个非常奇怪的问题,可能是由于内核内存分配器造成的。起初,我怀疑我的C++代码中存在某种类型的内存错误,但我看到的确切行为让我相信,这可能不是由于代码中的错误。这很奇怪,但这是我对这个问题的最好描述。

这些指针都是在程序开始时创建的。

当我运行代码时,我注意到以下几点。第一次内存使用量跃升至系统总使用量的4.3% (从上往下看)。这就发生在我启动可执行文件的时候。在这种情况下,CPU使用率下降到5-15%,这是程序通常运行的范围(由于向其传递数据的速率)。

在我的程序启动时,幕后发生了一些与内存有关的事情,但我不能理解它是什么,感觉在现代x86_64服务器上分配5%的系统内存(1.2 to )不应该花2-3分钟的时间。请注意,在这种奇怪的启动之后,程序通常会正常运行。

然而,今天我不得不增加程序在/dev/shm中写入的文件数量,并相应地增加指针的数量。为了提供更多细节,我将文件数量从1345增加到1350。事实上,只要超过1346就足以解决这个100%的cpu问题。

我真的对我在这里处理的事情感到困惑。我怀疑SLAB/SLUB分配器可能有什么问题(我的系统是带有2.6.35内核的Centos 5.8 )。任何关于如何解决这个问题的想法或提示都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2012-04-30 10:21:46

我认为这不太可能是SLUB的问题。/dev/shm是通过tmpfs (在现代系统上)实现的,它使用页面缓存,而不是SLUB。

你需要弄清楚你的程序在消耗CPU的时候在做什么。从那时起,你应该学会使用perf

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10339643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档