snopy
V2EX  ›  问与答

关于系统 cpu 占用低而 swap 占用高的困惑

  •  
  •   snopy · Oct 10, 2016 · 2952 views
    This topic created in 3504 days ago, the information mentioned may be changed or developed.
    生产服务器上 cpu 占用和 swap 占用如下所示,比较困惑的是 cpu 完全够用的情况下,为什么 swap 使用率很高?且 swap 总量也是动态变化的,最高时候达到 3G ,停掉服务后 swap 总量少了很多。。求知道的大婶解释下,感谢!

    Cpu(s): 0.1%us, 8.4%sy, 0.0%ni, 91.4%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
    Mem: 132029524k total, 78292860k used, 53736664k free, 3266504k buffers
    Swap: 43396k total, 43300k used, 96k free, 37391532k cached
    Supplement 1  ·  Oct 11, 2016
    当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到 Swap 空间中,等到那些程序要运行时,再从 Swap 中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行 Swap 交换。这个是 SWAP 交换分区的作用。
    系统在什么情况下才会使用 SWAP ?
    实际上,并不是等所有的物理内存都消耗完毕之后,才去使用 swap 的空间,什么时候使用是由 swappiness 参数值控制。
    在 cpu 使用率达到某种界限的时候释放 cached 来减小 cpu 负荷压力(附脚本如下)
    #name:/tmp/check_cache.sh
    #!/bin/bash
    #set -x
    grep droping /tmp/.drop_caches
    if [ $? -ne 0 ]; then
    FREE=`free -g|awk 'NR==2{print $4/$2*100}'|awk -F. '{print $1}'`
    if [ $FREE -le 20 ]; then
    echo "droping" >/tmp/.drop_caches
    sync
    echo 3 > /proc/sys/vm/drop_caches
    >/tmp/.drop_caches
    fi
    fi

    完结。。。
    8 replies    2016-10-11 12:38:31 +08:00
    rhen
        1
    rhen  
       Oct 10, 2016 via Android
    swap 不是内存不足才占用吗
    hellov22ex
        2
    hellov22ex  
       Oct 10, 2016 via Android
    swap 和 CPU ?
    swap 和内存有更直接的关系,如一楼所述。
    kn007
        3
    kn007  
       Oct 10, 2016
    swap cpu ???
    这两者关系不在这啊。。。
    rrfeng
        4
    rrfeng  
       Oct 10, 2016
    如果有 free 的话一般不会使用 swap
    但是不排除有些程序倾向于使用 swap ……
    loading
        5
    loading  
       Oct 10, 2016 via Android
    建议列一下进程
    snopy
        6
    snopy  
    OP
       Oct 11, 2016
    @rhen 这也是我困惑的,明明 cpu 足够却把 swap 占满了
    snopy
        7
    snopy  
    OP
       Oct 11, 2016
    @loading 写了个脚本统计 swap 的占用情况,发现 /opt/beh/core/impala/be/build/latest/service/impalad -state_store_host=hadoop001 -catalog_service_host=hadoop001 这个进程占用了 1.82GB swap 空间,对,是跑 Hadoop 应用的一个 job ,但是不清楚为啥不占 cpu 而占用 swap
    loading
        8
    loading  
       Oct 11, 2016 via Android
    楼主始终还是纠结 cpu 和 swap 这个错误的关系。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1191 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 63ms · UTC 23:57 · PVG 07:57 · LAX 16:57 · JFK 19:57
    ♥ Do have faith in what you're doing.