官方论坛产品帮助刷图视频问题反馈

OpenVZ查看真实内存使用值

发表于 秦海传媒

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

    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)

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

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

    原始地址:http://www.hostloc.com/thread-53552-1-1.html

  • 此条目发表在 服务器配置 分类目录。将固定链接加入收藏夹。

Google ADs

除非另有声明,本站文章遵循知识共享署名-非商业性使用 2.5 中国大陆许可协议。 Copyright © 2008-2012 99288.NET.CN.