技术解析

[求教]centos 下 swap 分区使用率始终为 0
0
2021-07-12 02:35:48
idczone

刚接触Linux的小白…
今天使用创建swap文件的方法,向本身没有swap分区的vps里添加了1.5G的swap区。
但随后发现,无论内存占用情况如何,swap分区使用率始终为0%,尝试修改swappiness =100 ,无效。
肯定是哪里出问题了,希望大家能给予帮助…
(操作过程依据https://www.digitalocean.com/community/articles/how-to-add-swap-on-centos-6
vps使用的是vultr)


请先把物理内存撑爆了……

物理内存没用到不回去用swap额…… 我囧


我记得linux不是用完物理内存才用swap,取决于swappiness设置?
无效的话检查是否永久改变swappiness,不然重启就失效了

那是一个神奇的值 之前优化redis的时候改过 的确是有内存还没搞定就开始取用交换分区了 但是如果你内存之没用到一定程度他也不会用 而且还会把剩下的拿来当缓存 应该还是你本身内存压力不够大吧

而且这个值就算你设定为0也不能阻止他不用swap 这个值不是我们直观得认为那样的

Swappiness of 100 does not make programs get swapped out immediately, nor does a value of 60 or 90 mean swap gets used when ram is 60 or 90% full. It is a ratio of preference for stealing pages from cache vs. swapping things out to free up some memory when there isn't enough. A low value will strongly prefer stealing pages from the cache, and a high value strongly prefers to try and swap pages out. The setting only has any effect once memory is ( nearly ) all used, and the kernel has to choose how to free some up.
来自于 askubuntu的一段, 意思是说,swappiness这个值 是个比率,或者说参考值

我的ubuntu一旦用到swap,系统就很容易被卡死,很多时候只能强制关机。机械硬盘,这是什么原因?

增加服务器负载把物理内存撑爆了后swap终于使用了…几M,这是否说明swap区已正常工作?
swappiness修改是永久的,但似乎不起效,测试设置10/60/100都是撑爆了物理内存后才使用swap区。我另几台自带swap区的vps设置swappiness为60,却是物理内存未占满时就已经使用swap了。不太明白为什么…

```
说实话,swap 在目前的壁纸计算机来讲,存在的意义已经不大了!这是因为目前的 x86 主机所含的内存实在都太大了 (一般入门级至少也都有 512MB 了),所以,我们的 Linux 系统大概都用不到 swap 这个玩意儿的。不过, 如果是针对服务器或者是工作站这些常年上线的系统来说的话,那么,无论如何,swap 还是需要创建的。
因为 swap 主要的功能是当物理内存不够时,则某些在内存当中所占的程序会暂时被移动到 swap 当中,让物理内存可以被需要的程序来使用。另外,如果你的主机支持电源管理模式, 也就是说,你的 Linux 主机系统可以进入『休眠』模式的话,那么, 运行当中的程序状态则会被纪录到 swap 去,以作为『唤醒』主机的状态依据! 另外,有某些程序在运行时,本来就会利用 swap 的特性来存放一些数据段, 所以, swap 来是需要创建的!只是不需要太大!
```
http://vbird.dic.ksu.edu.tw/linux_basic/0230filesystem_5.php#swapuse

用到swap意味着你的内存爆了,又不是什么好事

系统可以配置使用swap的偏好,通常是设置一个小于等于10的数字,代表着在物理内存使用到何种程度才开始使用swap。
https://wiki.archlinux.org/index.php/Swap#Swappiness

呃,手癌了。。。少一个0,是小于等于100的数字,你设置为100按理说是要尽可能使用swap的。。。要不你试试开chrome、java之类的内存大户消耗物理内存试一下?

chrome 整日开一堆的人,表示每天午饭后就基本卡成翔了... ThinkPAD x230, 6G RAM,500G 机械HDD xubuntu 15.04 x86_64

6G RAM,swap 能用到3G以上...

最多的时候也就占用 100+M(我大概用得不够狠),反正分了 4G,就放那边不管了,一般来讲没问题。

swapiness 只是倾向值,不是阈值
http://lwn.net/Articles/83588/
虽然文章很老,但是基本思路是一样的
源码里因为加上了vm的一些功能,代码不是很容易能理清

对于linux衡量指标不是swap被用了多少 而是内存与swap之间数据交换的频繁程度 如果对swap中写入数据很频繁证明内存不够用了 并不是看swap的使用多少来判断的 这个根windows很不同

老实说,线上环境真的需要用到 swap 的话,你也就应该扩容了,而且一般用到 swap 的时候说明你很大可能已经有进程内存溢出了。
坦白说,在当今这种内存白菜价的时代,swap 用来作为容量报警倒是一个不错的选择 -,-

问题解决的嘛 我的也一样

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服