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


Messages In This Thread
如何判断 Xen VPS 是否超卖内存? - by netflix - 09-11-2023, 06:26 PM

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)