在VMware ESX设置上,这些选项有什么不同?
我的意思是,在这两种情况下,互换正在使用;
那么给Linux VM的交换分区有什么意义?
忽略人们正在处理操作系统特定的原因这一事实,我有两个原因,不交换分区/文件是一个坏主意。
是。 这是Unix的方式。
Unix(甚至Linux) 希望能够交换。
当系统不能交换时(或者因为没有交换分区时configuration错误,或者交换空间已满),就会发生坏事 。 在Linux中,这些糟糕的事情之一就是内存不足的杀手,这将使刀片陷入其认为使用最多RAM(数据库服务器是最喜欢的目标)的程序后面。
你有/proc/sys/vm/overcommit_memory设置为? 从内核文档:
0 - Heuristic overcommit handling. Obvious overcommits of address space are refused. Used for a typical system. It ensures a seriously wild allocation fails while allowing overcommit to reduce swap usage. root is allowed to allocate slightly more memory in this mode. This is the default. 1 - Always overcommit. Appropriate for some scientific applications. 2 - Don't overcommit. The total address space commit for the system is not permitted to exceed swap + a configurable percentage (default is 50) of physical RAM. Depending on the percentage you use, in most situations this means a process will not be killed while accessing pages but will receive errors on memory allocation as appropriate.
因此,如果您使用1,则没有区别。 如果你使用2和没有Linux交换文件,那么没有进程将能够分配512M的(虚拟)内存。 结果不清楚为0。
编辑:从http://utcc.utoronto.ca/~cks/space/blog/linux/LinuxVMOvercommit这是如何0的作品:
启发式overcommit尝试计算出系统可以给你多less内存,如果它回收所有可能的内存,没有其他进程使用比当前更多的内存; 如果你要求超过这个,你的分配将被拒绝。 具体来说,理论上的“空闲内存”数量是通过将可用交换空间,空闲RAM(如果不是root的话,less于1/32nd)和统一缓冲区高速caching使用的所有空间以及标记为可回收的内核数据(less一些保留页面)。
所以它在计算中也使用交换。 一般来说,我会遵循RHEL的build议:
M = Amount of RAM in GB, and S = Amount of swap in GB, then If M < 2 S = M *2 Else S = M + 2
交换分区可能会更快,特别是在根磁盘已满的情况下,并且不能在没有碎片的情况下创build交换文件,更不用说可能由文件系统创build的开销,并且如果适用的话, LVM。
但是,如果你在磁盘上保留了33%的内存需求,那么两台机器的性能都会受到影响。
请参阅以下链接 – https://help.ubuntu.com/community/SwapFaq
基本上,除非你需要hibernate或者使用更多的内存,而不是分配给虚拟机,否则交换分区没有明显的优势。
多年来,我在任何一台Linux机器上都没有使用交换分区/文件。
交换的明显优势是,当你的机器崩溃时,你仍然可以创build一个崩溃转储。 纠正我,如果我错了,但afaik这是不可能的,没有交换。 这当然不是VMWare特有的,而是适用于任何地方。 我觉得这很重要。