首 页 行业热点 新车 试驾评测 养车用车 车型库
当前位置:首页Swap交换分区设置

Swap交换分区设置

2024-07-13 来源:好土汽车网
导读 Swap交换分区设置
服务器 交换分区(Swap) 设置

周末的时候HBase集群一台子节点宕机,查看Ganglia及内存使用情况,发现节点Swap空间耗尽,但奇怪的是,系统物理内存却还是非常的富足。我们都知道 Swap空间的作用:

Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。 Swap配置对性能的影响:

分配太多的Swap空间会浪费磁盘空间,而Swap空间太少,则系统会发生错误。 如果系统的物理内存用光了,系统就会跑得很慢,但仍能运行;如果Swap空间用光了,那么系统就会发生错误。例如,Web服务器能根据不同的请求数量衍生出多个服务进程(或线程),如果Swap空间用完,则服务进程无法启动,通常会出现“application is out of memory”的错误,严重时会造成服务进程的死锁。因此Swap空间的分配是很重要的。

那么,真的是当系统物理内存不够用的时候,系统才会使用Swap空间吗?否!他娘的。。。

其实虚拟内存并不是等到物理内存用尽了才使用的,是否尽量的使用或不使用swap在内核空间有一个参数控制。 cat /proc/sys/vm/swappiness 60

swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。

对于现在动辄上百G物理内存的服务器来说,究竟为其Linux系统设置多大的交

目前Red Hat推荐交换分区的大小应当与系统物理内存的大小保持线性比例关系。不过在小于2GB物理内存的系统中,交换分区大小应该设置为内存大小的两倍,如果内存大小多于2GB,交换分区大小应该是物理内存大小加上2GB。其原因在于,系统中的物理内存越大,对于内存的负荷可能也越大。 但是,如果物理内存大小扩展到数百GB,这样做就没什么意义了。 实际上,系统中交换分区的大小并不取决于物理内存的量,而是取决于系统中内存的负荷。Red Hat Enterprise Linux 5可以在这样的情况下工作:完全没有交换分区,而且系统中匿名内存页和共享内存页小于3/4的物理内存量。在这种情况下,系统会将匿名内存页和共享内存页锁定在物理内存中,而使用剩余的物理内存来缓冲文件系统数据(pagecache),当内存耗尽时,系统内核只会回收利用这些pagecache内存。 考虑到以下情况: 1)安装系统时难以确定内存的负荷,如何设置交换分区大小 2)系统中物理内存越大,所需交换分区就会越少 因此,在Red Hat Enterprise Linux 5中,以下是设置合适的交换分区大小的规则: 小于等于4G物理内存的系统,至少设置2GB的交换分区 4G~16G物理内存的系统,至少设置4GB的交换分区 16G~64G物理内存的系统,至少设置8GB的交换分区 64G~256G物理内存的系统,至少设置16GB的交换分区 换分区合适呢,为此,引用红帽官方文库里的一段文字进行说明。 ?

如何修改呢?

1.修改此处vm.swappiness=10,但是你会发现重启后又变成60. 2.要彻底修改,还是要修改配置/etc/sysctl.conf 在这个文档的最后加上这样一行: vm.swappiness=10

然后保存,重启。ok,你的设置就生效了。

涉及到HBase来说,其在系统配置一节中,也有建议,可见,HBase建议设置swappiness为0,尽量使用物理内存:

==================================

查看修改swap

================================== 1 查看swap 空间大小(总计):

# free -m 默认单位为k, -m 单位为M

total used free shared buffers cached Mem: 377 180 197 0 19 110 -/+ buffers/cache: 50 327 Swap: 572 0 572 2 查看swap 空间(file(s)/partition(s)): 包括 文件 和 分区的详细信息 # swapon -s 等价于

# cat /proc/swaps

3.在空间合适处创建swap文件

1. [root@ema usr]# cd swap

2. [root@ema swap]# dd if=/dev/zero of=swapfile bs=402400 count=10000

3. 10000+ records in 4. 10000+ records out 5. [root@ema swap]# ls -al 6. total 10024

7. drwxr-xr-x 2 root root 4096 8. drwxr-xr-x 19 root root 4096 9. -rw-r--r-- 1 root root 4013500000 10. [root@emaswap]# mkswap swapfile 11. 激活swap文件 swapon swapfile

total used free shared buffers cached Mem: 202619299771755 -/+ buffers/cache: 1661860 Swap: 40084008

因篇幅问题不能全部显示,请点此查看更多更全内容