Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
raawaa
V2EX  ›  Linux

没有 swap 的副作用?

  •  
  •   raawaa ·
    raawaa · May 13, 2018 · 9933 views
    This topic created in 2938 days ago, the information mentioned may be changed or developed.
    系统偶尔会出现内存和 CPU 跑满的情况,系统响应变得非常慢,基本上像死机状态。

    莫非和我没有 swap 有关?

    吓死了,赶紧去加了一个 swap file
    Supplement 1  ·  May 17, 2018
    增加了 swap file 之后果然情况改善了。
    之前只要内存跑满直接死机,鼠标键盘全部没有响应。加了 swap 之后,内存跑满也能操作鼠标键盘,只是有间歇卡顿而已。
    top 了一下。发现是 firefox 在捣蛋……这玩意儿会内存泄漏?还是说哪个插件的锅……

    看来 swap 还是不能少。
    34 replies    2018-06-09 11:05:58 +08:00
    wonpain
        1
    wonpain  
       May 13, 2018 via Android
    还是内存不够大
    vegito2002
        2
    vegito2002  
       May 13, 2018
    加 swap 不如加内存
    summerwar
        3
    summerwar  
       May 13, 2018
    加内存 加 cpu
    fangxing204
        4
    fangxing204  
       May 13, 2018 via Android
    是的,我以为 8g 内存差不多了,所以装系统就没分 swap,结果发现打开太多东西经常卡死,楼上说的都对,但是,我穷,选择连加个 swapfile,明显不会出现卡死的情况了。可以参考这里 https://askubuntu.com/a/796997/649754
    Nitroethane
        5
    Nitroethane  
       May 14, 2018 via Android
    没有 swap 以及 swap 太小的话没办法休眠的吧
    iir910
        6
    iir910  
       May 14, 2018
    这年头,4G 是入门,8G 是凑合.16G 才够用.
    要不是现在的内存价格死贵,我早就买 16G 了.
    innoink
        7
    innoink  
       May 14, 2018 via Android
    8g 内存一般不会占满吧,除非某些 bug 内存泄露之类的
    mmqc
        8
    mmqc  
       May 14, 2018 via Android
    我目前机器 8g 机器上跑:网易云,chrome,telegram,golddict,medeley 内存占用大概 3.3g 没跑 ide,写代码用 vim。就这样,开了 mariadb 偶尔也会出现假死现象。。。对了,我分的 swap 是 16g。。。不知道啥情况
    msg7086
        9
    msg7086  
       May 14, 2018   ❤️ 5
    对于内核来说,软件的内存使用量分两种,一种是占用的量,比如申请内存以后在里面存放了数据就属于占用;另一种是申请的量,比如申请内存以后没有写入数据。

    其中的申请量是检测虚拟内存是否足够的依据。比如在 Windows 下,你有 8G 物理内存和 4G 分页文件,那么申请量最大不能超过 12G,超过了内核就会开始杀进程。Linux 下有 Overcommit 机制,可以让你适当多申请一些内存,超过物理内存和交换区的总和,但是这也是有上限的。低价 VPS 上开 MySQL 经常被杀进程就是因为 MySQL 申请量超过了 Overcommit 的上限。

    有钱可以加物理内存,没钱的话还是加 Swap 比较好,对于申请且没有使用的内存部分,分页到 Swap 是不会影响性能的。
    19tj
        10
    19tj  
       May 14, 2018 via Android
    楼上大神,真∵夜猫
    loading
        11
    loading  
       May 14, 2018 via iPhone
    free 命令,了解一下。
    iwtbauh
        12
    iwtbauh  
       May 14, 2018 via Android
    @fangxing204 别加 swap 文件,想办法加 swap 分区。前者要多很多性能损失。
    iwtbauh
        13
    iwtbauh  
       May 14, 2018 via Android
    副作用是有的,会多很多磁盘 I/O,而且硬盘速度肯定是不如物理内存的。但是如果内存确实不够是应该加的。

    “偶尔会出现内存和 CPU 跑满”,top 命令看看是什么东西吃内存和 CPU
    love4taylor
        14
    love4taylor  
    PRO
       May 14, 2018 via Android
    如果 CPU 余量很足的话 就上 zram/zswap 吧
    yu099
        15
    yu099  
       May 14, 2018 via Android
    @19tj 别人在美国吧
    ZackB0T
        16
    ZackB0T  
       May 14, 2018 via Android
    vm.swappiness,了解下
    ccsexyz
        17
    ccsexyz  
       May 14, 2018
    如果是服务器的话,是不应该开 swap 的
    liuminghao233
        18
    liuminghao233  
       May 14, 2018 via iPhone
    没 swap 内存一爆直接 kill 进程
    开了有 swap 就算是用 ssd,内存占用大了一样卡
    raawaa
        19
    raawaa  
    OP
       May 14, 2018
    @iwtbauh 爆满的时候电脑没响应了,连 top 指令都没法输入。
    snail1988
        20
    snail1988  
       May 14, 2018
    现在 16G 是入门 32G 标配。。。不上 swap 起码 16G
    iwtbauh
        21
    iwtbauh  
       May 14, 2018 via Android
    @raawaa 那你确定是内存满了的原因?内存用超会 oom kill,我怀疑你这可能是死机了。PC 机 Linux 死机的话,九成是 N 卡问题,尝试禁用 N 卡
    tempdban
        22
    tempdban  
       May 14, 2018 via Android
    这年头咋还有人说服务器不要开 swap
    zhusimaji
        23
    zhusimaji  
       May 14, 2018 via iPhone
    @ccsexyz 服务器一定要开的,23333
    msg7086
        24
    msg7086  
       May 14, 2018
    @ccsexyz 服务器不开 swap 可以,但是内存要多插很多。
    4G 物理+2G Swap 能勉强跑起的程序,不开 Swap 至少要插 8G 到 12G 内存才不会被杀掉。
    有钱当然可以为所欲为。我要是能插上 256G 内存,我也不开 Swap。
    tatsuteng
        25
    tatsuteng  
       May 14, 2018 via iPhone
    说不要开 swap 的,https://chrisdown.name/2018/01/02/in-defence-of-swap.html 了解一下?
    carakan
        26
    carakan  
       May 14, 2018
    8G 日常爆内存...16g 不开虚拟机够用吧..32G 可以...

    现在有什么性价比搞的电脑能上 32G 内存啊啊
    raawaa
        27
    raawaa  
    OP
       May 14, 2018 via Android
    @iwtbauh 内存和 CPU 同时爆满。
    跟显卡应该没有关系。我开机以后做家里的视频服务器的。平时就跑跑 BT 下载和 samba 服务。
    跑着跑着不去动他,非常偶尔会死机。
    wayne1027
        28
    wayne1027  
       May 14, 2018
    昨天给 512M RAM 128M SWAP 的 VPS 编译 GCC 死活编译不过,把 swap 改成 512M 就好了…说到底还是 RAM 太少了
    ccsexyz
        29
    ccsexyz  
       May 14, 2018
    @msg7086 我见过的内存最小的服务器是 32G 的
    msg7086
        30
    msg7086  
       May 14, 2018
    @ccsexyz 我们一般用的 512M 或者 1G 的。
    tempdban
        31
    tempdban  
       May 15, 2018 via Android
    @msg7086 我们实验室环境常年 256g 加 swap
    并且这么大的内存一般都要用巨页管理,业务内存页是不会换到硬盘上的。
    GLee9507
        32
    GLee9507  
       May 28, 2018
    archlinux+i3wm 不用 swap 的话内存快满了就会卡死,鼠标都动不了。挂载个 swapfile 就没出现过卡死-。-
    raawaa
        33
    raawaa  
    OP
       May 28, 2018
    @GLee9507 #32 的确,我也是 Arch + i3
    qbqbqbqb
        34
    qbqbqbqb  
       Jun 9, 2018
    @iwtbauh swap 文件不会有太多性能损失的,Linux 挂载 swap 文件默认不是以 loopback device 的形式,而是越过文件系统直接读写(因此 swap 文件创建的时候也必须用 dd 命令创建连续文件,否则 swapon 会失败)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   857 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 77ms · UTC 20:52 · PVG 04:52 · LAX 13:52 · JFK 16:52
    ♥ Do have faith in what you're doing.