使用SSD,我是否需要更改我的swappiness以增加SSD寿命?

我遇到过这篇文章 ,其中包括以下建议:

交换和swappiness

我在旧硬盘上保留了交换分区。 SSD上的交换会更快,但也会缩短SSD的寿命。

我的系统有足够的内存,所以我也将swappiness值减少到0,告诉Ubuntu只在必要时才交换。 我通过将行vm.swappiness = 0添加到/etc/sysctl.conf来完成此操作。

将swappiness设置为零是否会增加我的SSD的使用寿命? 我在其他地方找不到对此的引用。

将swappiness降低到0意味着当没有可用的可用RAM时,OS将仅开始使用SSD进行交换。

从理论上讲,这可以增加SSD的使用寿命,因为SSD的写入次数会减少。 这取决于它是否实际上增加了SSD的使用寿命:

  • Linux很少使用交换(特别是与Windows相比),即使具有更高的swappiness值,因此与RAM使用相比,此设置可能不会改变具有大量RAM的系统上的交换行为。 如果您的RAM不足,那么交换可能会经常发生,默认值为60,在这种情况下,降低swappiness可能会对SSD的写周期限制产生重大影响。

  • 对于简单的消费者使用,SSD的写入耐久性仍然相当高,至少对于基于MLC的SSD而言。 他们说目前基于MLC的SSD可以容忍ca. 在他们磨损之前3000-5000个写周期。 使用3000限制进行计算意味着每天写入10 GB的128 GB SSD可以很快地工作。 38000天,这意味着约 100年。 如果你有一个更大的SSD当然会在以后磨损。 因此,由于细胞磨损,您的SSD不太可能会死亡。 (当然,如果您在企业/服务器环境中使用SSD,那么每日写入要高得多,但在企业环境中,通常会使用基于SLC的SSD。)

  • 这个写周期限制是如此之高,以至于SSD制造商(首先是SAMSUNG)开始为消费者制造基于TLC的SSD,这只能容忍ca. 1000个写周期,但更便宜。 这些公司表示,即使这些SSD的写入周期限制也会比预期使用产品的时间更长。 (在2024年我们不太可能仍然使用我们的128 GB SSD)虽然如果你有一个基于TLC的SSD并且你经常写入该驱动器,例如50GB /天,那么降低swappiness值可能会产生显着影响在你的SSD的寿命长度。
  • 这是一个巨大的线程 ,爱好者通过不断写信给他们测试SSD的耐力。 虽然他们的测试方法可能不完全正确,但他们的结果令人印象深刻且舒缓。

总结一下:从理论上讲,减少swappiness将导致更长的SSD寿命,实际上它可能不会。 但是如果你有一个基于TLC的SSD并且你的内存很短,而且你经常写入SSD,那么它也会产生实际效果。

我有一个基于MLC的128 GB SSD,我主要使用我的系统进行办公/浏览,而且我的RAM使用量比RAM少,所以我的SSD没有大量写入负载(尽管我的机器是24/7)。 但是因为我根本不需要交换,所以当我安装我的SSD时,我自己为自己设置的swappiness设置swappiness是如此容易,因为为什么不这样做呢? (实际上我在所有机器上都将swappiness设置为0,即使在只有HDD的机器上也是如此。)

您可以使用smartctl检查SSD在其生命周期内遭受的写入smartctl ,查找smartctl的行,这将显示已向SSD写入了多少512b扇区。 (是的我知道SSD有物理4K块,而不是512b,但SMART仍然说: Sector Size: 512 bytes logical/physical ,512块我得到的结果与tune2fs -l Lifetime写入输出相当。)所以多个这个数字是512,你得到的是字节写入,或简称:

 sudo smartctl -a /dev/sda | grep Total_LBAs_Written | awk '{print $10*512/1024/1024/1024 " GiB"}' 

将在GiBs中打印/ dev / sda。 (只需将设备名称更改为SSD的名称。)我的128 GB SSD已遭受损失。 在一年多一点的时间内写入800 GB,这意味着3000个写入周期只有7个。

所有关于磨损固态硬盘的讨论都是“猜测”。 我有同样的感受,但开始商业化使用它们。 我拥有东海岸最快的甲骨文群之一。 3年前,我们为整个存储和临时文件系统设置了SSD。 我们每天为SSD执行数十亿次写操作。 3年后,我们仍然没有接近10%的倦怠。 如果我可以在商业上做到这一点,他们将永远不会在住宅情况下磨损。 所以 – 我在我的linux工作站和BAM专门为交换空间实现了一个SSD解决方案!

所以,你的里程我的变化,但SSD是各方面的方式。

戴夫

是的 您需要更改swappiness以增加SSD寿命。

Swappiness允许您控制使用的交换文件数量。 Swappiness值可以从0更改为100. swappiness值越高,内核尝试使用交换空间越多,swappiness值越低意味着内核将根据我们的设置使用更少或没有交换空间。

默认的swappiness值是60,如果你有足够的RAM,你应该避免使用交换空间来写入和读取你的SSD,而不是硬盘。 对于具有4 GB或更多RAM的系统,尝试通过将交换设置更改为10甚至0来减少交换的使用,并将交换文件放在HDD上。

运行交换空间非常耗费磁盘I / O,这对SSD来说实际上是不好的。 SSD只能在它变坏之前处理这么多的写入并且你被迫购买另一个驱动器。 因此,如果可能的话,将您的交换空间移动到辅助旋转驱动器……远离SSD。

通过写入操作可以相对快速地磨损固态硬盘。 特别是最老一代的SSD在这方面很脆弱,但在较小程度上仍然是新一代的情况。

您可以在新磁盘上创建新分区,也可以只创建交换文件; 制作新分区几乎总能带来更好的性能。

如果您没有要移动的备用驱动器,则可以更改仅在物理RAM 100%已满时启用交换的设置,这将减少交换文件的负载,并帮助您的SSD。 只需按键盘上的Ctrl + Alt + T即可打开终端。 打开时,运行以下命令:

 echo 0 > /proc/sys/vm/swappiness 

SSD磨损与写入周期有关

通过写入操作可以相对快速地磨损固态硬盘。 特别是最老一代的SSD在这方面很脆弱,但在较小程度上仍然是新一代的情况。

使用修剪

TRIM是您使用SSD的优势。 它以软件运行并与SSD控制器通信,告诉它文件系统不再需要哪些“块”,可以安全地清理和覆盖。 这不会真正改善性能,但会延长SSD的使用寿命。

来源: Linux SSD调整和如何优化您的SSD

将swappiness设置为零是否会增加我的SSD的使用寿命?

这会导致Linux移动内存块的频率降低到交换分区。 如果交换在SSD中,写入交换通常使用写周期。 请记住,交换仅在需要时使用,如果你有足够的RAM,没有它你可能会更好(除非你想要hibernate,但这是另一个问题)。

这些操作的效果可能会有所不同,但这样做只是为了节省SSD中的一些写周期,这样做是错误的。 现代SSD(大约从2012年开始)有大量的写周期,当您几乎耗尽所有RAM时,应用程序的性能可能会降低。 在安装程序期间,您使用的写入周期多于到期交换。 请记住,仅在默认情况下需要时才使用交换。

如果您担心用于交换的SSD写周期,如果您有足够的RAM并且只激活HDD中的临时交换而不是弄乱交换,则可以完全删除/停用交换。 那将是最好的路线。

我强烈建议你将swappiness设置更改为更低的值,如果你的系统有足够的内存/ ram 4 GB或更多,那么最好是“0”。 即使在具有高ram系统的10处的swappiness,我几乎看不到ubuntu在交换分区上放置任何东西,因为大多数东西都已经在ram上了。

我做了一点谷歌搜索,我发现这个页面http://namhuy.net/1563/how-to-tweak-and-optimize-ssd-for-ubuntu-linux-mint.html

可以帮助您调整和优化SSD,为您的Ubuntu系统提供更高效的运行并保持您的ssd更长寿

改变swappiness可能实际上没有影响。 我们在缺少RAM的系统中玩了很多,我们希望尽可能多地推送到SSD并且它实际上几乎没有影响,内存中剩余的项目(这意味着它们是必需的)。 这可能是一个有争议的问题。

我喜欢检查smartctl输出的想法,但是,我的代码更紧凑。 我从来没有理解为什么人们只是不知道awk具有内置的grepfunction。

 sudo smartctl -a /dev/sdb | awk ' ($0 ~ /Total_LBAs_Written/) {print ($10*512)/(1024^3) " GiB"}' 

虽然这是我使用的代码:

 sudo smartctl -a ${device} | awk ' ($0 ~ /Total_LBAs_Written/) { if (($10*512)/(1024^3) > 1000) { msg="TiB"; size=($10*512)/(1024^4); } else { msg="GiB"; size=($10*512)/(1024^3); }; printf "\nThis device has had %.2 f %s written to it.\n",size,msg; }'