swap的开启与kswapd0占CPU高的实践记录

1 用例
给当前系统增加虚拟内存
2 静态
虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。目前,大多数操作系统都使用了虚拟内存,如Windows家族的“虚拟内存”;Linux的“交换空间”等。
3 动态
1 建立虚拟内存
找一个较大的空间
 
df -h
建立swap文件,大小2G
 
dd if=/dev/zero of=swapfile bs=1024000 count=2000
当然你也可以将他放在任何一个目录:比如
dd if=/dev/zero of=/ftp/swapfile bs=1024000 count=2000
2 启用虚拟内存
将swap文件设置为swap分区文件
mkswap swapfile
 
激活swap,启用分区交换文件
swapon swapfile
 
注意:insecure permissions 0644, 0600 suggested.
 
# chmod 600 swapfile 
3 停用虚拟内存
swapoff -v swapfile
4 查看内存和虚拟内存
free -m
 
5 开机启用swap
修改/etc/fstab
 
vi /etc/fstab
 
#第一栏磁盘装置文件名或该磁盘的lable 
#第二栏挂载点
#第三栏磁盘分区槽的文件系统
/dev/mapper/fedora-root /                       ext4    defaults        1 1
/dev/mapper/fedora-home /home                   ext4    defaults        1 2
#开机启用内存目录一定要正确和刚建 立的时候目录一样
/root/swapfile   swap    swap     defaults       0 0

或者通过语句增加:echo '/root/swapfile swap swap defaults 0 0' >> /etc/fstab

通过以上步骤就是t算开启了虚拟内存。那么系统在什么情况下是使用这个功能呢。这就要看另外一个文件。/etc/sysctl.conf
这个文件里面有一句话:vm.swappiness = 40  这个40其实是1-100可以随意修改。其中的意思是,当内存不足多少时,启动swap内存。从而增加内存,达到系统使用需求。

目前有90%的人会认为设置为0可以让物理内存达到最大化。高速度主机认为此理解没错,但当物理内存用光后,再使用虚拟内存,有很服务器会现MYSQL停止,或者

kswapd0频繁被唤醒导致服务器奔溃现象。CPU占用达到
99%-90%

高速度通过实验得出,40-60就可以开始使用虚拟内存了,可以避免服务器奔溃。