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

没有 swap 的副作用?

  •  
  •   raawaa ·
    raawaa · 2018-05-13 23:19:09 +08:00 · 8997 次点击
    这是一个创建于 2394 天前的主题,其中的信息可能已经有所发展或是发生改变。
    系统偶尔会出现内存和 CPU 跑满的情况,系统响应变得非常慢,基本上像死机状态。

    莫非和我没有 swap 有关?

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

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

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

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

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

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