我想知道,对于具有 M.2 PCI SSD 的类似服务器系统上的交换分区,建议做什么?
我想知道在该设备上放置交换是否明智,因为它的速度太快了,以至于交换抖动(这不应该发生)可能不会被注意到,直到驱动器生命周期写入周期的很大一部分被消耗掉。
其他选项包括
根本没有交换分区,但这会降低 RAM 的利用率。还要诊断是否没有交换会杀死系统。
添加一个旧的慢速 HD 进行交换,因此如果它的使用频率非常低,那就很明显了。但这会浪费电力,而且这也是可能破坏系统的另一件事。
或者...?
有没有办法给 Linux 交换分区人为的缓慢程度或数据速率限制?或者轻松地监视和检测系统正在高速交换,尽管没有人抱怨性能很差?
Centos / RHEL 7,应该有什么区别。
答案1
我想到了三个选择:
- 就用SSD吧。除非它是一个真的快速NVMe设备、系统将要如果出现抖动,速度仍然会变慢(大多数 SATA 和 SAS SSD 上的 500-600MB/s 访问速度仍然比大多数现代服务器上的两位数 GB/s 内存速度慢得多)。即使您没有注意到,现在大多数 SSD 的写入耐久性都非常好(大多数的额定写入量为数十万次),因此这可能不是什么大问题。
- 使用SSD,还可以使用交换。 Zswap 在主内存和交换区之间提供压缩内存的中间缓存,可以显着减少对交换区的写入。我不确定 CentOS 7 是否支持这个。
- 用一个零内存用于交换的压缩 ramdisk。本质上,系统不会在压力下将内存推送到磁盘,而是会压缩内存。这为大多数工作负载提供了非常好的性能和合理的行为,并且是我在几乎所有系统上使用的。如果您采用这种方法,请确保不要将 ZRAM 设备大小设置得太高,否则它将耗尽空间(并且让交换设备返回写入错误,即使不比内存不足更糟糕,也同样糟糕) 。