Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
如何判断 Xen VPS 是否超卖内存?
#1
OpenVZ VPS通常在内存、磁盘空间或带宽(或所有这些)方面都超卖。超卖内存和磁盘空间很容易。你只是vzctl create一个新的虚拟环境,不管是否有足够的内存或磁盘空间,小菜一碟。但是如果做得过火,肯定会激怒您的客户。
这也是反对 OpenVZ 的众多论据之一,尤其是与 Xen 相比时。“OpenVZ 获得了超卖的资源。Xen VPS 有专门的内存,等等等等。” 好吧。不完全正确。
2 周前,我从北卡罗来纳州阿什维尔的一家供应商那里得到了一个便宜的 VPS。可能应该在这里保持匿名的人Smile 这是一个运行 Ubuntu 10.04 和 64 位 Linux 2.6.32 内核的Xen VPS 。512MB 内存、25GB 磁盘空间和比我需要的更多带宽。价格也很不错。所以我登录并检查它有多少内存......
Code:
# free             total      used      free    shared    buffers    cached Mem:        543776    535360      8416          0      66516    130504 -/+ buffers/cache:    338340    205436 Swap:      1048568        136    1048432
我的 Xen VPS 上面有 330MB 内存。让我们看看正在运行哪些进程。
Code:
# ps aux ... root      204  0.0  0.1  17028  780 ?        S    Oct27  0:00 upstart-udev-bridge --daemon 102        356  0.0  0.1  23548  1080 ?        Ss  Oct27  0:00 dbus-daemon --system --fork root      431  0.0  0.1  21068  788 ?        Ss  Oct27  0:00 cron root      3110  0.0  0.5 253832  2992 ?        Sl  Oct28  0:00 /usr/sbin/console-kit-daemon --no-daemon root    11037  0.0  0.1  49256  1012 ?        Ss  Oct28  0:00 /usr/sbin/sshd root    15427  0.0  0.1  12520  772 ?        S    Oct28  0:00 /usr/sbin/syslogd --no-forward root    31231  0.0  0.0  16748  436 ?        S<s  Nov12  0:00 udevd --daemon root      5716  0.0  0.6  79100  3772 ?        Ss  01:02  0:00 sshd: root@pts/0 root      5731  0.0  0.3  19400  2148 pts/0    Ss  01:02  0:00 -bash root      5782  0.0  0.1  6072  724 ?        Ss  01:08  0:00 /sbin/getty -8 38400 hvc0 root      5783  0.0  0.2  15248  1172 pts/0    R+  01:08  0:00 ps --sort=start_time uax
VPS 上没有运行任何内存密集型的东西。SSH 服务器、syslogd、cron 等等。那么我的 330MB 已用内存消失在哪里了?
在进一步挖掘之前,这是事实。绝对可以在 Xen VPS 上超卖内存。多年来众所周知的东西,尽管 Xen 供应商不想谈论它。它使用一种称为 ballooning 的技术。
基本上,您的系统上安装了一个特殊的 Linux 内核驱动程序——“balloon driver”。当 dom0(Xen 服务器/管理程序)需要更多内存,并希望从客户 VPS (domU) 中申请一些内存时,它会要求客户 VPS 的气球驱动程序膨胀本身——通过向其 Linux 内核请求一些内存。内核内存分配将从该 VPS 的可用内存中请求,并且无法调出以进行交换。一旦气球驱动程序消耗了内存,它就会传递给 dom0/hypervisor 以在其他地方使用(例如,创建一个新的 VPS)。因此,您的 VPS 的“总内存”量将保持不变,但“已用内存”会大幅增加,因为内核内部的气球驱动程序现在已经使用了一大块,并且现在可能是其中的一部分另一个VPS。用户级守护程序“xenballoond”(实际上是一个 bash 脚本)也可用于允许动态气球,尽管我在我的 VPS 中没有看到它。
我想这可以解释为什么我使用了 330MB 的内存,而我只有很少的进程在运行。
我在 procfs 中发现这个文件很有趣:
Code:
# cat /proc/xen/balloon Current allocation:  524288 kB Requested target:    524288 kB Minimum target:      173056 kB Maximum target:      532480 kB Low-mem balloon:        8192 kB High-mem balloon:          0 kB Driver pages:            224 kB
我似乎无法找到足够的文件来解释这些值的含义。看起来我的 VPS 已请求 512MB 内存(请求目标),并且当前已分配(当前分配)。但是同时它也有“最小目标”——为这个 VPS 保留的最小内存量,以防止它在气球请求过多时被 FUBAR——设置为 169MB。这是否意味着我的 VPS 真正保证了多少内存?
这当然是我不熟悉的东西,也许一些供应商可以启发我们。不过结论还是一样的。Xen 的超卖当然是可能的。
默认联系方式为telegram,需要微信号请留言。
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  如何判断 OpenVZ VPS 是否超售 netflix 0 487 09-11-2023, 06:16 PM
Last Post: netflix

Forum Jump:


Users browsing this thread: 1 Guest(s)