centos swap 内存不被使用问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
csfreshman
V2EX    CentOS

centos swap 内存不被使用问题

  •  
  •   csfreshman 2021 年 7 月 10 日 2100 次点击
    这是一个创建于 1670 天前的主题,其中的信息可能已经有所发展或是发生改变。

    自己有台淘汰的笔记本,内存较小,安装了 centos 系统,在安装 grpc 的时候报错 oom,使用命令:

    watch -n 2 free -m 

    查看发现内存耗尽了,于是参考文档配置了 swap 内存,未编译时状态:

    [root ~]#free -m total used free shared buff/cache available Mem: 3685 426 2922 9 335 3022 Swap: 11967 0 11967 

    编译 grpc 后的状态

    Every 2.0s: free -m Fri Jul 9 12:40:49 2021 total used free shared buff/cache available Mem: 3685 3361 98 9 225 87 Swap: 11967 0 11967 

    从上面的图可以看到,内存基本上使用完了,但死活不使用 swap 里的内存,最后程序卡死,编译 grpc 一直卡在 50%,我把 vm.swappiness 值设置为 10 20 …… 100 最后结果一样。

    grpc 最终卡在:

    [ 49%] Building CXX object third_party/protobuf/CMakeFiles/libprotoc.dir/__/src/google/protobuf/compiler/plugin.cc.o [ 49%] Building CXX object third_party/protobuf/CMakeFiles/libprotoc.dir/__/src/google/protobuf/compiler/plugin.pb.cc.o [ 49%] Building CXX object third_party/protobuf/CMakeFiles/libprotoc.dir/__/src/google/protobuf/compiler/python/python_generator.cc.o [ 50%] Built target bssl ^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^Cmake[2]: *** [third_party/protobuf/CMakeFiles/libprotoc.dir/__/src/google/protobuf/compiler/code_generator.cc.o] 中断 make[2]: *** [third_party/abseil-cpp/absl/flags/CMakeFiles/absl_flags.dir/flag.cc.o] 中断 make[2]: *** [third_party/abseil-cpp/absl/status/CMakeFiles/absl_statusor.dir/statusor.cc.o] 中断 make[1]: *** [third_party/protobuf/CMakeFiles/libprotoc.dir/all] 中断 make: *** [all] 中断 ^C 

    ctrl + c 后 swap 里反而有了使用内存:

    Every 2.0s: free -m Fri Jul 9 12:44:15 2021 total used free shared buff/cache available Mem: 3685 166 3450 1 68 3358 Swap: 11967 262 11705 

    gcc 和系统版本:

    [root ~]#gcc --version gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5) [root ~]#uname -a Linux MiWiFi-RA50-srv 3.10.0-1160.31.1.el7.x86_64 #1 SMP Thu Jun 10 13:32:12 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux 

    跪求各位大佬帮忙分析下,如何才能让 swap 生效,从而可以完成编译 grpc,可以从哪些方面去分析呢?

    13 条回复    2021-07-11 11:09:59 +08:00
    yujiang
        1
    yujiang  
       2021 年 7 月 10 日 via Android
    reboot 了没?
    billlee
        2
    billlee  
       2021 年 7 月 10 日
    建议贴一下 /proc/meminfo
    vk42
        3
    vk42  
       2021 年 7 月 10 日
    建议直接加内存,大量换页的情况下能卡得让你怀疑人生,而且还没法操作去 kill 进程……
    所以现在很多情况基本不配 swap,或者 swap 配合 OOM killer 一起上,至少不会系统卡死半天
    csfreshman
        4
    csfreshman  
    OP
       2021 年 7 月 10 日
    @yujiang reboot 了,swap 开机自动挂上,还是不行。
    csfreshman
        5
    csfreshman  
    OP
       2021 年 7 月 10 日
    ```
    [root ~]#cat /proc/meminfo
    MemTotal: 3773708 kB
    MemFree: 2986772 kB
    MemAvailable: 3085032 kB
    Buffers: 2360 kB
    Cached: 298604 kB
    SwapCached: 0 kB
    Active: 369276 kB
    Inactive: 212888 kB
    Active(anon): 281780 kB
    Inactive(anon): 8968 kB
    Active(file): 87496 kB
    Inactive(file): 203920 kB
    Unevictable: 0 kB
    Mlocked: 0 kB
    SwapTotal: 12255224 kB
    SwapFree: 12255224 kB
    Dirty: 0 kB
    Writeback: 0 kB
    AnonPages: 281228 kB
    Mapped: 47088 kB
    Shmem: 9548 kB
    Slab: 81752 kB
    SReclaimable: 38480 kB
    SUnreclaim: 43272 kB
    KernelStack: 3904 kB
    PageTables: 12344 kB
    NFS_Unstable: 0 kB
    Bounce: 0 kB
    WritebackTmp: 0 kB
    CommitLimit: 14142076 kB
    Committed_AS: 1444544 kB
    VmallocTotal: 34359738367 kB
    VmallocUsed: 545636 kB
    VmallocChunk: 34358423548 kB
    Percpu: 2592 kB
    HardwareCorrupted: 0 kB
    AnonHugePages: 180224 kB
    CmaTotal: 0 kB
    CmaFree: 0 kB
    HugePages_Total: 0
    HugePages_Free: 0
    HugePages_Rsvd: 0
    HugePages_Surp: 0
    Hugepagesize: 2048 kB
    DirectMap4k: 103168 kB
    DirectMap2M: 3985408 kB
    ```
    swap 看 total 和 free 一样 12255224kB
    csfreshman
        6
    csfreshman  
    OP
       2021 年 7 月 10 日
    @vk42 笔记本,加物理内存比较麻烦,而且这个机器想着尽可能利用起来旧机器。
    vk42
        7
    vk42  
       2021 年 7 月 10 日
    @csfreshman 实在不想加内存可以试试下面的方法:
    - /proc/sys/vm/overcommit_memory,这个应该是要设置成 1 才能正常超额分配虚拟内存
    - /proc/sys/vm/oom_kill_allocating_task,这个设置应该是 0
    另外如果编译卡住可能就是 swap 拖后腿了,可以用 atop 看看资源占用
    love
        8
    love  
       2021 年 7 月 10 日
    linux 内核原生支持 swap 内存压缩,可以加上试试可以省点 ssd 写入量
    csfreshman
        9
    csfreshman  
    OP
       2021 年 7 月 10 日
    @vk42 swap 拖后腿慢我可以理解,毕竟磁盘性能和内存不在一个数量级,但是 swap 的占用一直不变 0,这两个值都改了重启(改了永久生效,编译前确保值是对的)(没重启试了 sysctl -p)都不行。
    csfreshman
        10
    csfreshman  
    OP
       2021 年 7 月 10 日
    @love 现在问题是 swap 没用,一点写入量都没有,
    billlee
        11
    billlee  
       2021 年 7 月 10 日
    @csfreshman 你这个 meminfo 是空载时的状况吧。。
    csfreshman
        12
    csfreshman  
    OP
       2021 年 7 月 10 日
    @billlee 恩,卡死的那个状态看到,完全没响应了,除非 ctrl c 掉那个 grpc 的编译
    csfreshman
        13
    csfreshman  
    OP
       2021 年 7 月 11 日
    加了 8g 的 swap,今天出门前编译 grpc,过一个小时回来看到 swap 有在使用,还在编译,好慢,想旧物利用这么难
    ```
    Every 5.0s: free -m Sat Jul 10 23:07:21 2021

    total used free shared buff/cache available
    Mem: 3830 3597 112 8 121 43
    Swap: 11967 4624 7343
    ```
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4675 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 438ms UTC 06:36 PVG 14:36 LAX 22:36 JFK 01:36
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86