我的电脑将 swappiness 设置为 60。
cat /proc/sys/vm/swappiness
60
即便如此,交换也只在 PC 内存不足时才会发生。因此,每次我填满内存时,它在交换到硬盘时都会停止响应一段时间。
我认为,如果交换量为 60,则大约 60% (全部大小) 的 RAM 将在交换上镜像,因此当需要换出时它已经在那里了……但这不是我所经历的。
我读过手动的这里有很多不同的答案,但没有一个是关于在正确的值上进行交换并且交换直到最后一刻才发生。
内容free -h
total used free shared buff/cache available
Mem: 15G 9,9G 266M 4,7G 5,4G 508M
Swap: 30G 3,2G 27G
swapon
:
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 30,5G 3,5G -2
答案1
你的free -h
节目...
total used free shared buff/cache available
Mem: 15G 9,9G 266M 4,7G 5,4G 508M
Swap: 30G 3,2G 27G
表示您有足够的 RAM 和 SWAP(您正在使用休眠模式)。
针对交换来调整系统是一个棘手的过程。
它涉及:
- 你有多少RAM
- 你有多少 SWAP
- 是否基于文件或分区进行交换
- 您运行了哪些应用程序以及它们占用了多少 RAM
- 无论你是否使用休眠模式
设置适当的交换空间存在很大争议。一般来说,交换空间应为总 RAM 的 50-120%。休眠配置中使用较大的交换空间。
假设您有足够的 RAM 和交换空间,您可以调整 vm.swappiness 参数来优化 RAM 与交换空间的使用。要查看当前设置,请执行以下操作:
sudo sysctl vm.swappiness
通常设置为 60。
要临时更改此设置:
sudo sysctl vm.swappiness=nn
其中 nn=0 至 100。
较低的设置会更多地使用 RAM 并减少交换。较高的设置会减少 RAM 使用并增加交换。
确定配置的最佳值后,要永久设置它,请编辑/etc/sysctl.conf
。将此值添加到文件底部:
vm.swappiness=90
我们已确定 90 是适合您使用的值。此设置可能会稍微降低您的系统速度,因为交换基于较慢的磁盘 I/O。
然后重新启动。
答案2
Swappiness 只是内核用来计算的一个参数互换倾向。我阅读了手册,但找不到哪里提到了/proc/sys/vm/swappiness
某种阈值。
关于这个话题,红帽知识库状态:
此参数设置内核在从页面缓存中回收页面与通过换出进程内存来回收页面之间的平衡
交换是一种缓慢而昂贵的操作,因此系统会避免执行该操作,除非它计算出缓存性能的权衡将完全弥补它,或者有必要避免终止进程。
很多时候,人们会发现他们的系统严重损坏磁盘并使用了大量交换空间,并把责任归咎于交换。这是错误的做法。如果交换达到这种极端程度,则意味着交换是系统处理内存不足问题的一种尝试,而不是问题的根源。
因此,我认为您对交换和交换的工作方式存在误解。