SWAP其实就是突发内存,也被称作虚拟内存
如图是真实的内存条,SWAP是从硬盘划分过来,当作突发内存用的。当应用程序技术量过大的时候,会把一些运算放到SWAP里进行
所以如果SWAP内存有正在运行的程序,清理SWAP就会造成错误,所以在运行程序的时候不要清理SWAP分区
建议保留swap分区,物理内存够用的时候用不上它,万一遇到需要用上它的时候呢?这叫有备无患,反正也浪费不了多少空间。其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。
Swap分区,即交换区,系统在物理内存不够时,与Swap进行交换。把物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么 *** 作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。
前几天尝试用一台新的服务器进行开发,运行两个Node进程后CPU占用率直接上升到100%,开始以为是Node版本问题,切换版本后仍存在这个问题,使用 top 命令查看运行中进程,发现一个名为 kswapd0 的进程占用极高的CPU,这个进程的作用其实是在内存不足时将暂时用不到的数据转存到虚拟内存(Swap分区),而刚好我的服务器没有设置Swap分区,才导致CPU占用率过高,看来问题的原因找到了,接下来只需要设置Swap分区即可。
如果没有任何输出,表明系统没有配置swap
确保有足够的空间创建Swap分区
以上命令会在根目录创建大小为1G的文件,大小可根据需要进行调整,一般取和内存一般大小
验证是否创建成功
修改分区文件的权限,只允许 root 用户进行读取
将其标记为swap分区
启用分区,允许系统开始使用
再次检查系统分区
如果输出类似
表示分区已经创建成功
目前已经在当前会话的启用的swap分区,但是如果系统重新启动,分区就会消失,我们可以通过修改 /etc/fstab 的配置来使分区持久化
swappiness 参数配置系统使用swap分区的频率,数字越小,系统对swap的依赖越小,如果设置为接近0的数字,那么内核只有在绝对必要情况下才会将数据交换到磁盘。应为和硬盘交换数据比RAM慢的多,所以这个数字越小,通常会让系统加快
查看当前swappiness
临时修改swappiness
永久修改(推荐)
/etc/sysctlconf
增大 vfs_cache_pressure 的值会让系统倾向于删除缓存中inode和dentry信息,进而导致系统频繁访问文件系统,我们可以通过输入以下内容将其设置为更保守的设置,例如50:
只在当前会话生效
永久修改(推荐)
/etc/sysctlconf
linux设置开启swap交换分区基本命令(虚拟内存)
在Linux系统下,我们要怎么开启swap交换分区,基本设置命令是什么呢?下面为大家带来最基本的配置命令,希望对大家有所帮助!
1验证不存在交换分区free-m
输出如下:totalusedfreesharedbufferscached
Mem:99594747046142
-/+buffers/cache:758236
Swap:000
如果swap选项total是0则表示没有交换分区,开始下一步
2创建swap分区
使用dd命令选择swap分区目录以及大小,在此我们给他放到根目录,创建的是2G的虚拟内存,可以根据自己需要选择大小。ddif=/dev/zeroof=/swapfilecount=2048bs=1M
接下来验证根目录是否存在swapfilels/|grepswapfile
不出意外的话你将会看到swapfile
3激活swap分区
交换分区不会自动激活,你需要告诉服务器如何格式化文件,使它作为一个有效的交换分区。
出于安全考虑,交交换区权限设置成600
chmod600/swapfile
使用mkswap命令来设置交换文件:mkswap/swapfile
4开启swap分区swapon/swapfile
再次使用free-m查看内存使用情况,输出如下:totalusedfreesharedbufferscached
Mem:184017548616231519
-/+buffers/cache:2101630
Swap:204702047
5设置允许开机启用swap分区sudovi/etc/fstab
在后面加上/swapfilenoneswapsw00
;欢迎分享,转载请注明来源:内存溢出
评论列表(0条)