V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Shino
V2EX  ›  Linux

[求教]centos 下 swap 分区使用率始终为 0

  •  
  •   Shino · 2015-05-24 23:55:03 +08:00 via Android · 12833 次点击
    这是一个创建于 3258 天前的主题,其中的信息可能已经有所发展或是发生改变。

    刚接触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)

    19 条回复    2015-10-04 18:44:52 +08:00
    fatpa
        1
    fatpa  
       2015-05-25 02:44:01 +08:00
    请先把物理内存撑爆了……
    twl007
        2
    twl007  
       2015-05-25 02:45:32 +08:00 via iPhone
    物理内存没用到不回去用swap额…… 我囧
    hyuwang
        3
    hyuwang  
       2015-05-25 07:24:52 +08:00
    @fatpa
    @twl007 我记得linux不是用完物理内存才用swap,取决于swappiness设置?
    无效的话检查是否永久改变swappiness,不然重启就失效了
    twl007
        4
    twl007  
       2015-05-25 08:03:58 +08:00 via iPhone
    @hyuwang 那是一个神奇的值 之前优化redis的时候改过 的确是有内存还没搞定就开始取用交换分区了 但是如果你内存之没用到一定程度他也不会用 而且还会把剩下的拿来当缓存 应该还是你本身内存压力不够大吧
    twl007
        5
    twl007  
       2015-05-25 08:12:16 +08:00 via iPhone
    而且这个值就算你设定为0也不能阻止他不用swap 这个值不是我们直观得认为那样的
    easynoder
        6
    easynoder  
       2015-05-25 08:31:56 +08:00
    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这个值 是个比率,或者说参考值
    jemyzhang
        7
    jemyzhang  
       2015-05-25 09:14:13 +08:00 via Android
    我的ubuntu一旦用到swap,系统就很容易被卡死,很多时候只能强制关机。机械硬盘,这是什么原因?
    Shino
        8
    Shino  
    OP
       2015-05-25 09:29:04 +08:00 via Android
    @fatpa
    @twl007 增加服务器负载把物理内存撑爆了后swap终于使用了…几M,这是否说明swap区已正常工作?

    @hyuwang swappiness修改是永久的,但似乎不起效,测试设置10/60/100都是撑爆了物理内存后才使用swap区。我另几台自带swap区的vps设置swappiness为60,却是物理内存未占满时就已经使用swap了。不太明白为什么…
    Tiande
        9
    Tiande  
       2015-05-25 09:37:06 +08:00
    ```
    说实话,swap 在目前的壁纸计算机来讲,存在的意义已经不大了!这是因为目前的 x86 主机所含的内存实在都太大了 (一般入门级至少也都有 512MB 了),所以,我们的 Linux 系统大概都用不到 swap 这个玩意儿的。不过, 如果是针对服务器或者是工作站这些常年上线的系统来说的话,那么,无论如何,swap 还是需要创建的。

    因为 swap 主要的功能是当物理内存不够时,则某些在内存当中所占的程序会暂时被移动到 swap 当中,让物理内存可以被需要的程序来使用。另外,如果你的主机支持电源管理模式, 也就是说,你的 Linux 主机系统可以进入『休眠』模式的话,那么, 运行当中的程序状态则会被纪录到 swap 去,以作为『唤醒』主机的状态依据! 另外,有某些程序在运行时,本来就会利用 swap 的特性来存放一些数据段, 所以, swap 来是需要创建的!只是不需要太大!
    ```

    http://vbird.dic.ksu.edu.tw/linux_basic/0230filesystem_5.php#swapuse
    Andiry
        10
    Andiry  
       2015-05-25 09:39:41 +08:00
    用到swap意味着你的内存爆了,又不是什么好事
    libook
        11
    libook  
       2015-05-25 10:37:46 +08:00
    系统可以配置使用swap的偏好,通常是设置一个小于等于10的数字,代表着在物理内存使用到何种程度才开始使用swap。
    https://wiki.archlinux.org/index.php/Swap#Swappiness
    libook
        12
    libook  
       2015-05-25 10:42:50 +08:00
    呃,手癌了。。。少一个0,是小于等于100的数字,你设置为100按理说是要尽可能使用swap的。。。要不你试试开chrome、java之类的内存大户消耗物理内存试一下?
    likuku
        13
    likuku  
       2015-05-25 10:48:38 +08:00
    chrome 整日开一堆的人,表示每天午饭后就基本卡成翔了... ThinkPAD x230, 6G RAM,500G 机械HDD xubuntu 15.04 x86_64
    likuku
        14
    likuku  
       2015-05-25 10:49:14 +08:00
    6G RAM,swap 能用到3G以上...
    Twinkle
        15
    Twinkle  
       2015-05-25 11:16:24 +08:00
    最多的时候也就占用 100+M(我大概用得不够狠),反正分了 4G,就放那边不管了,一般来讲没问题。
    mengzhuo
        16
    mengzhuo  
       2015-05-25 11:25:01 +08:00
    swapiness 只是倾向值,不是阈值

    http://lwn.net/Articles/83588/

    虽然文章很老,但是基本思路是一样的
    源码里因为加上了vm的一些功能,代码不是很容易能理清
    twl007
        17
    twl007  
       2015-05-25 11:32:56 +08:00 via iPhone
    对于linux衡量指标不是swap被用了多少 而是内存与swap之间数据交换的频繁程度 如果对swap中写入数据很频繁证明内存不够用了 并不是看swap的使用多少来判断的 这个根windows很不同
    fatpa
        18
    fatpa  
       2015-05-26 01:08:45 +08:00
    @Shino 老实说,线上环境真的需要用到 swap 的话,你也就应该扩容了,而且一般用到 swap 的时候说明你很大可能已经有进程内存溢出了。

    坦白说,在当今这种内存白菜价的时代,swap 用来作为容量报警倒是一个不错的选择 -,-
    yeasty
        19
    yeasty  
       2015-10-04 18:44:52 +08:00
    问题解决的嘛 我的也一样
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3250 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 14:19 · PVG 22:19 · LAX 07:19 · JFK 10:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.