我在网上阅读了很多次应该减少或禁用swappiness。是这样吗,它有什么作用?我有 2GB 内存,我应该禁用 swappiness 吗?
根据维基百科:-
Swappiness 是一个 Linux 内核参数,用于控制换出运行时内存的相对权重,而不是从系统页面缓存中删除页面。Swappiness 可以设置为 0 到 100 之间的值。较低的值会导致内核避免交换,较高的值会导致内核尝试使用交换空间。默认值为 60,对于大多数桌面系统,将其设置为 100 可能会影响整体性能,而将其设置得较低(甚至 0)可能会减少响应延迟。
根据Ubuntu 维基:-
交换空间是硬盘上的区域,它是机器虚拟内存的一部分,它是可访问物理内存 (RAM) 和交换空间的组合。交换空间临时保存不活动的内存页。当您的系统决定它需要用于活动进程的物理内存并且没有足够的未使用物理内存可用时,将使用交换空间。如果系统碰巧需要更多内存资源或空间,则物理内存中的非活动页面将被移动到交换空间,从而释放该物理内存以供其他用途。请注意,swap 的访问时间较慢,因此不要将其视为物理内存的完全替代。交换空间可以是专用交换分区(推荐)、交换文件或交换分区和交换文件的组合。
从我的图表中可以看出,Ubuntu使用的交换比它应该使用的要多得多。你可以很方便地关闭/减少swapppiness作为应该对系统进行有超过2GB的RAM未用于高内存使用工作,如编辑高认定中的奥迪/视频/图片,
您的系统滞后,因为 Swappiness 设置为默认值,它写入硬盘的速度比写入RAM慢1000 倍。
要检查 Swappiness 的当前值,
cat /proc/sys/vm/swappiness
Run Code Online (Sandbox Code Playgroud)
或者
sysctl vm.swappiness
Run Code Online (Sandbox Code Playgroud)
要暂时禁用或设置 Swappiness,在终端中,(Ctrl+ Alt+ T),
sudo swapoff -a
Run Code Online (Sandbox Code Playgroud)
或者
sysctl -w vm.swappiness=10
Run Code Online (Sandbox Code Playgroud)
要永久执行此操作,请/etc/sysctl.conf使用以下命令将以下行添加到您的文件中sudo nano /etc/sysctl.conf:-
# CHANGE SWAP
vm.swappiness=x
Run Code Online (Sandbox Code Playgroud)
在这里,x可以是0到100 之间的任何数字,其中:-
0 = disable swap
1 = minimum swap
10 = recommended for >2GB
60 = Linux Default for Swap
100 = Maximum Swap, for >1GB Ram
Run Code Online (Sandbox Code Playgroud)
您不应该将 swappiness 值设置为0,除非您非常确定您永远不会用完 RAM,否则内存不足(OOM) Killer 将启动并开始杀死耗尽 RAM 的进程。
这里有更多信息。
| 归档时间: |
|
| 查看次数: |
10102 次 |
| 最近记录: |