txw*_*ger 6 linux kernel settings swap
我想部署以下交换策略:
linux内核可以使用这种交换策略吗?如果是这样,我如何设置内核设置来实现这一点?
编辑:
显然这样做的原因是为了减少需要换出的页面数量。只需要将脏页写入磁盘,这会随着时间的推移在后台发生。因此,当发生页面缺失时(即页面不在内存中),不需要从内存向磁盘写入任何页面,而只需从磁盘向内存写入。因此,它降低了 I/O 瓶颈的可能性,因为换入和换出尝试同时访问磁盘。
您可以设置 的值/proc/sys/vm/swappiness
来控制交换的数据段与保留在内存中的数据段的比率。值 0 完全避免不惜一切代价进行交换。
这可以使用以下任一方法完成:
echo 0 > /proc/sys/vm/swappiness
sysctl -w vm.swappiness=0
/etc/sysctl.conf
一般来说,只使用一点交换并不是一件坏事。可用内存可用于缓存从磁盘读取的数据,系统可以提前计划应用程序突然需要大量内存。
然而,当交换太多程序时,每次程序切换期间都会有大量与磁盘相关的活动,这确实使一切变慢。在某些东西可以使用之前,它需要重新加载到内存中。
与内存访问相比,磁盘读取速度非常慢,因为数据到达所需的时间要长得多。系统必须在其他读/写请求之间安排读取,驱动器开始尝试找到正确的柱面,最后开始缓慢地传输数据。
因此,我认为你的逻辑是有缺陷的。通常,您希望让程序在内存中运行,同时仍然为突然增长保留足够的空间。不要太频繁地使用交换来“将内容写入磁盘”,因为它既不是备份也不是性能改进。
较旧的计算机包含较少的内存并因此遭受交换问题。当同时打开多个程序时,系统会变慢,您可以听到磁盘读写以交换文件的声音。
仅仅因为您的系统正在交换,并不意味着您有问题。有些应用程序经过精心调整,可以充分利用交换,而不会影响系统的性能。大多数关系数据库系统都是这样调整的: IE:Oracle 和 Cache,可能是最大的两个。
如果您使用休眠模式,它会使用交换空间来存储 RAM。当系统重新启动时,交换区中的所有内容都会添加回 RAM。这样,您就可以关闭系统电源,而无需像待机那样耗尽电池,并且仍然可以返回到关闭电源之前离开的位置。因此,您的电池将持续更长时间。
交换可能是一件很棒的事情,因为它可以释放更多的活动 RAM,以保持系统的高性能。当您的活动 RAM 已满且交换区已满,并且您仍然需要更多空间时,只有那时您才会遇到问题。在那之前,交换是为了帮助你,而不是伤害你。