终于找到正确答案了 关于swappiness
Tofloor
poster avatar
phoenix520110
deepin
2020-08-10 04:16
Author
swappiness越大,越倾向于回收匿名页;swappiness越小,越倾向于回收file-backed的页面。



  • file-backed pages(有文件背景的页面,比如代码段、比如read/write方法读写的文件、比如mmap读写的文件;他们有对应的硬盘文件,因此如果要交换,可以直接和硬盘对应的文件进行交换),此部分页面进page cache

  • anonymous pages(匿名页,如stack,heap,CoW后的数据段等;他们没有对应的硬盘文件,因此如果要交换,只能交换到虚拟内存-swapfile或者Linux的swap硬盘分区),此部分页面,如果系统内存不充分,可以被swap到swapfile或者硬盘的swap分区


因此,Linux在进行内存回收(memory reclaim)的时候,实际上可以从1类和2类这两种页面里面进行回收,而swappiness就决定了回收这2类页面的优先级。


也就是 过大或过小的值 你的电脑都在不正常工作 就会卡

这就像个天平秤一样 40-60之间





Reply Favorite View the author
All Replies
avatar
phoenix520110
deepin
2020-08-10 05:27
#1
zswap 就是新的内存压缩机制 压缩率越高 越吃CPU 越省内存和交换空间 压缩率越低 则反而运行速度越快 但是占用内存和交换空间越多 也就是高压缩适合手机 低压缩适合电脑
zram 是内存中划一点空间虚拟交换区

这两都是辅助 不能取代交换区工作 本质上 反而是为了搞升SWAP性能的







Reply View the author
avatar
说书人
deepin
2020-08-10 07:03
#2
也就是说,默认值是60 ,是有道理的
Reply View the author
avatar
phoenix520110
deepin
2020-08-10 07:56
#3
https://bbs.deepin.org/post/198741
也就是说,默认值是60 ,是有道理的

根据这样的回收机制 也就是运行程序 40可能会好点 运行服务 60可能会好点 但是大型应用也是偏向后台服务很多的 所以默认60是合理的 系统本身也算服务
其实就和WIN系统一样 并没有区别
觉得不一样 那也只是因为 LINUX发展滞后于WIN 上面没什么大型软件
相比之下 WIN系统划分的更全面
比如启动预读 程序预读 服务的 实时的 都给慢慢划分出专区了
现在WIN10 都是双页面文件 并且利用专门一个服务来管理
很多人磁盘占用率高 就是因为对虚拟内存作用估计不足 导致性能下降
然后他们就去禁用那个服务 减轻磁盘压力 但是计算机的性能 就大打折扣了
于是 便去买新电脑 配新硬件 其实 除了显卡之外 别的钱都是白花了
原来计算机本来具备的能力 没发挥给限制了
像剑灵这样的游戏 就是16G内存 你还得给它32G虚拟内存的 这样速度机械和固态进图差距不大 你调小立马差距就出来了 想10秒以内进图 就得给足它虚拟内存 哪怕这部分并不在使用 这个我是反复测试过的
LINUX有了ZSWAP 但是那也是用性能换空间 还有ZRAM 明显就是为手机设计的 反正安卓可以杀进程解决虚拟内存不足的
我就想说 硬盘空间不值钱 硬盘也没那么脆弱 不值得省
当然 内存也不值得省 ZSWAP 其实对性能是有负作用的 就是为了省内存和硬盘
其实一块硬盘 质量好的 不停读写能十年以上 差的也能两三年 用坏了再买新的也不贵
内存也是一天一个价 总体在大跳水降 这玩意 更加难坏



Reply View the author
avatar
phoenix520110
deepin
2020-08-10 08:11
#4
我测试 2G内存 4G 交换空间的虚拟机里 挂个QQ 微信 开爱奇艺 浏览网页 开WPS 虚拟机设置好点 那是一点不卡 磁盘缓存是启用的 物理硬盘是机械的 我模拟的是个固态 连续读写会好一丝丝 就是相当于10年前的普通电脑配置
但如果SWAPPINESS不用60 用10 那直接卡得没反应的
虚拟机都这样 估计实机更会如此
所以我从不相信跑分那玩意 都是骗人花钱的东西 实用才是硬道理
然后最近的新闻 那个UBUNTU 商用的版本 人家商家准备弃用 看新闻样子 我的理解 也是因为这个引起的不稳定 低估了用户使用需求 为了突出跑分性能 却忽略了稳定使用
这样的优化 我觉得 作为发布系统时 是不可取的
所以我一再建议 官方搞个设置工具 解决这样的问题 这不一劳永逸的做法吗
把将来可能发生的各种情况 先想到  
Reply View the author
avatar
phoenix520110
deepin
2020-08-10 08:25
#5
做系统要有野心 不能再走小众化路线了  只有更多的人使用这个系统 系统才有价值
我是很期待国产系统崛起的 其实作为用户 不是介意你采用的什么核心 那和用户没关系
用户只讲究 好用 易用 稳定 安全
Reply View the author
avatar
辉夜
deepin
2020-08-11 03:40
#6
老哥,怎么改这个值呢
Reply View the author
avatar
Feng Yu
deepin
2020-08-11 04:31
#7
本帖最后由 abcfy2 于 2020-8-10 20:33 编辑

你看man手册和kernel官方文档都是准确的,只有国内(尤其是CSDN)乱抄袭的文章才会误导你。
来看看官方文档的解释: https://www.kernel.org/doc/Documentation/sysctl/vm.txt

  1. ==============================================================

  2. swappiness

  3. This control is used to define how aggressive the kernel will swap
  4. memory pages.  Higher values will increase aggressiveness, lower values
  5. decrease the amount of swap.  A value of 0 instructs the kernel not to
  6. initiate swap until the amount of free and file-backed pages is less
  7. than the high water mark in a zone.

  8. The default value is 60.

  9. ==============================================================
Copy the Code


Reply View the author
avatar
xuey
deepin
2020-08-11 05:11
#8
https://bbs.deepin.org/post/198741
我测试 2G内存 4G 交换空间的虚拟机里 挂个QQ 微信 开爱奇艺 浏览网页 开WPS 虚拟机设置好点 那是一点不卡  ...

默认60改成10,deepin肯定是有理由的,毕竟公司有大数据,那些工程师靠这吃饭。
虚拟机里玩的结果还是算了。
制作调整工具的问题,没必要。事有轻重缓急,一大堆BUG,正式版还没发布、20版本的live系统还没做出来呢。
还不如你整理一下靠谱资料,发帖子和代码,让别人论坛搜索的时候有个参考,想调整的自己调整。
Reply View the author
avatar
phoenix520110
deepin
2020-08-11 08:00
#9
https://bbs.deepin.org/post/198741
老哥,怎么改这个值呢

修改DEEPIN.CONF
Reply View the author
avatar
phoenix520110
deepin
2020-08-11 08:44
#10
https://bbs.deepin.org/post/198741
默认60改成10,deepin肯定是有理由的,毕竟公司有大数据,那些工程师靠这吃饭。
虚拟机里玩的结果还是算了 ...

查了好多资料了 也做了好多测试了
关键是真的需要一个官方的调整工具 以适应用户环境
而且为了将来的发展 这个是必不可少的

Reply View the author
avatar
phoenix520110
deepin
2020-08-11 17:05
#11

这个是WIN7的设置
相当于 LINUX的swappiness 40和60

其实没什么不一样的

Reply View the author
avatar
phoenix520110
deepin
2020-08-11 17:09
#12
https://bbs.deepin.org/post/198741
这个是WIN7的设置
相当于 LINUX的swappiness 40和60

实现方法可能不会完全相同 但目的是完全一样
Reply View the author