返回首页
当前位置: 主页 > 精通Office > Ubuntu教程 >

OpenVZ查看真实内存使用值

时间:2012-04-07 23:47来源:知行网www.zhixing123.cn 编辑:麦田守望者

OpenVZ的内存模型和Xen或者一般的Linux Kernel不同,导致free命令看不到真实内存使用的值。
OpenVZ上free看到的是虚拟环境(Virtual Environment, VE)中所有程序向系统声明的可能要求内存的最大值,比如C程序:

1.int *p = malloc(1024*1024*sizeof(int));

向系统声明需要4M内存,但内存实际上并不是在程序声明需要内存时就分配,而是在实际使用时分配,即上面的程序不会让linux内核立即分配内存。
但是OpenVZ提供的/proc/user_beancounters却可以反映出VE实际使用了多少内存,而且,可以反映出有多少是在母鸡的swap里面的,从一定程度上可以判断母鸡是否超售了。
/proc/user_beancounters里面的physpages对应的held值是VE实际使用的物理内存(以4k为单位),oomguarpages则是VE实际使用的物理内存+swap,两者相减,就是VE使用的swap。
HostingFu专门写了一段程序来把结果打印的漂亮一点:http://hostingfu.com/article/vzf … ge-inside-openvz-ve 。
想在OpenVZ上实验一下的可以执行(需要系统有gcc)
 

1.$ wget -O – http://www.lowendbox.com/scripts/vzfree.c 2>/dev/null | gcc -o vzfree -x c -
2.$ sudo ./vzfree

输出结果形如:

[[email protected] home]# /root/vzfree/vzfree
Total Used Free
Kernel: 2048.00M 3.33M 2044.67M
Allocate: 256.00M 173.09M 82.91M (128M Guaranteed)
Commit: 128.00M 137.27M -9.27M (77.4% of Allocated)
Swap: 0.00M (0.0% of Committed)

输出中Kernel对应的是VE中所有程序占用的内核内存,Commit是VE使用的物理内存+swap,Swap对应VE使用的swap。

顶一下
(0)
0%
踩一下
(0)
0%
标签(Tag):Android Linux 操作系统 Ubuntu Unix
------分隔线----------------------------
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片