免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 11573 | 回复: 17
打印 上一主题 下一主题

[内存管理] linux内存使用过高的原因? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-05-23 00:40 |只看该作者 |倒序浏览
本帖最后由 xtlx2000 于 2013-05-24 22:43 编辑

ubuntu新系统,连续运行hadoop 4天后,内存使用率到达>700MB, 以为是hadoop搞得,关闭hadoop(图中00:05分左右),发现内存使用率直降了一点点,但是依然有600+MB的内存使用率,

top进程按使用内存排序,并没有发现大量占用内存的进程,但Mem: 857144k used,


重启后Mem 97092k used,就是图1 钟00:25分左右的下降点,正常了,


问下,如此多的内存是谁在使用?

meminfo里很多字段,有的代表页面使用,有的代表页面状态,可能有重复的。

1)总共用了used = 1026856 - 293760 = 733096KB

2)按低端高端划分:
HighTotal:        135112 kB
HighFree:           1776 kB
LowTotal:         891744 kB
LowFree:          291984 kB
高端high_used = 135112 - 1776 =  133336KB
低端low_used= 891744  -  291984 = 599760KB

3)详细的使用:
Buffers 23628 + Cached 43448 + AnonPages 14480 + Mapped 8824 + Shmem 228 +
Slab 13836 +PageTables  556 + VmallocUsed 1996  
ectual_used = 106996KB

high_used + low_used + ectual_used  = 840092kb 这个值比used多100M,我觉得可能是
slab,page cache这些和low_used有重复计算的地方;
而anonpages,Mapped这些则可能和high_used有重复计算。

大部分花销是在low区间, 并且不是在slab,pagecache这些地方,那会是哪里? 难道是内核自己get_free_pages分配的。
看有没有哪位同学来解释一下。

论坛徽章:
0
2 [报告]
发表于 2013-05-23 09:12 |只看该作者
linux 内存管理机制跟 windows 不一样,为了提高系统运行效率,linux会把数据缓存在内存中,而不是立即释放掉

论坛徽章:
0
3 [报告]
发表于 2013-05-23 09:16 |只看该作者
free -m 看看 一般都是 page cache

论坛徽章:
0
4 [报告]
发表于 2013-05-23 13:27 |只看该作者
本帖最后由 xtlx2000 于 2013-05-23 13:56 编辑

图1中有cache的值(内存高占用的时候图中绿色cache大概80MB,浅绿色buffer大概20MB,700MB的used - buffer - cache依然还有600MB的真实使用),不是cache和buffer的问题,求大牛解答

论坛徽章:
0
5 [报告]
发表于 2013-05-23 21:38 |只看该作者
cat /proc/meminfo,检查下哪个项增加比较快,然后再进一步分析。

论坛徽章:
0
6 [报告]
发表于 2013-05-23 22:31 |只看该作者
本帖最后由 xtlx2000 于 2013-05-23 23:42 编辑

rss swap buffer cache pagetable slabinfo检查了个遍,rss pagetable slabinfo=总共才46.2822MB,那几百MB的内存到底谁在用???求内存管理大牛

论坛徽章:
0
7 [报告]
发表于 2013-05-23 23:53 |只看该作者
本帖最后由 lovegq 于 2013-05-23 23:56 编辑

hugepage?
如果配了 hugepage ,hugepage部分的内存就占了

cat /proc/meminfo                           # 贴图出来

cat /proc/sys/vm/nr_hugepages         # 为0么?

论坛徽章:
0
8 [报告]
发表于 2013-05-24 00:17 |只看该作者
本帖最后由 xtlx2000 于 2013-05-24 00:19 编辑

回复 7# lovegq

没配hugepages
    root@h2:~# cat /proc/sys/vm/nr_hugepages
    0
    root@h2:~#

root@h2:~# cat /proc/meminfo
MemTotal:        1026856 kB
MemFree:          293760 kB
Buffers:           23628 kB
Cached:            43448 kB
SwapCached:            0 kB
Active:            35604 kB
Inactive:          46060 kB
Active(anon):      14604 kB
Inactive(anon):      208 kB
Active(file):      21000 kB
Inactive(file):    45852 kB
Unevictable:           0 kB
Mlocked:               0 kB
HighTotal:        135112 kB
HighFree:           1776 kB
LowTotal:         891744 kB
LowFree:          291984 kB
SwapTotal:       1046524 kB
SwapFree:        1046524 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:         14480 kB
Mapped:             8824 kB
Shmem:               228 kB
Slab:              13836 kB
SReclaimable:       7116 kB
SUnreclaim:         6720 kB
KernelStack:         608 kB
PageTables:          556 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     1559952 kB
Committed_AS:      66560 kB
VmallocTotal:     122880 kB
VmallocUsed:        1996 kB
VmallocChunk:     120564 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       12280 kB
DirectMap2M:      901120 kB

论坛徽章:
0
9 [报告]
发表于 2013-05-24 14:07 |只看该作者
meminfo里很多字段,有的代表页面使用,有的代表页面状态,可能有重复的。

1)总共用了used = 1026856 - 293760 = 733096KB

2)按低端高端划分:
HighTotal:        135112 kB
HighFree:           1776 kB
LowTotal:         891744 kB
LowFree:          291984 kB
高端high_used = 135112 - 1776 =  133336KB
低端low_used= 891744  -  291984 = 599760KB

3)详细的使用:
Buffers 23628 + Cached 43448 + AnonPages 14480 + Mapped 8824 + Shmem 228 +
Slab 13836 +PageTables  556 + VmallocUsed 1996  
ectual_used = 106996KB

high_used + low_used + ectual_used  = 840092kb 这个值比used多100M,我觉得可能是
slab,page cache这些和low_used有重复计算的地方;
而anonpages,Mapped这些则可能和high_used有重复计算。

大部分花销是在low区间, 并且不是在slab,pagecache这些地方,那会是哪里? 难道是内核自己get_free_pages分配的。
看有没有哪位同学来解释一下。


论坛徽章:
0
10 [报告]
发表于 2013-05-24 14:51 |只看该作者
本帖最后由 xtlx2000 于 2013-05-24 15:00 编辑
chenyu105 发表于 2013-05-24 14:07
meminfo里很多字段,有的代表页面使用,有的代表页面状态,可能有重复的。

1)总共用了used = 1026856 - ...


分析的很好,内核究竟在做什么秘密工作,占用了如此多mem?!@Godbach
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP