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

没有 swap 的副作用?

  •  
  •   raawaa
    raawaa 2018-05-13 23:19:09 +08:00 9515 次点击
    这是一个创建于 2735 天前的主题,其中的信息可能已经有所发展或是发生改变。
    系统偶尔会出现内存和 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  
    PRO
       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     Solana     2729 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 13:34 PVG 21:34 LAX 05:34 JFK 08:34
    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