Answers:
将swappiness减小为0意味着操作系统仅在没有更多可用RAM时才开始使用SSD进行交换。
从理论上讲,这可以增加SSD的寿命,因为SSD的写操作更少。这取决于它是否实际上增加了SSD的寿命:
Linux 即使具有更高的swappiness值,也很少使用交换 (尤其是与Windows相比),因此与RAM使用情况相比,此设置可能不会改变具有大量RAM的系统上的交换行为。如果您的RAM不足,则交换可能会非常频繁地发生,默认值为60,在这种情况下,降低交换性可能会对SSD的写周期限制产生重大影响。
对于简单的消费者使用而言,至少对于基于MLC的SSD ,SSD的写耐久性仍然很高。他们说,当前基于MLC的SSD可以忍受ca。在它们用完之前,有3000-5000个写周期。以3000个限制进行计算,这意味着每天大约有10 GB写入量的128 GB SSD可以在ca中愉快地工作。38000天,这意味着 100年。如果您有更大的SSD,那当然会在更长时间之后用完。因此,由于电池耗尽,您的SSD极有可能死掉。(当然,如果您在公司/服务器环境中使用SSD,则每日写入量会更高,但是在公司环境中,通常会使用基于SLC的SSD。)
综上所述:从理论上讲,降低可插拔性将导致更长的SSD使用寿命,但实际上却不会。但是,如果您有一个基于TLC的SSD,并且RAM不足,并且通常向该SSD频繁写入,那么它也可以产生实际效果。
我有一个基于MLC的128 GB固态硬盘,并且大多数情况下将我的系统用于办公/浏览,并且与我的RAM使用情况相比,我有大量的RAM,因此我的SSD不会承受较大的写负载(尽管我的计算机处于24/7的状态)。但是因为我根本不需要交换,并且降低交换率非常容易,所以我自己在安装SSD时将swappiness设置为0,因为为什么不这样做呢?(实际上,即使在只有HDD的机器上,我在所有机器上都将swappiness设置为0。)
您可以使用来检查SSD在其生命周期内遭受了多少写操作smartctl
,寻找与一致的行Total_LBAs_Written
,这将向您显示已向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 GB仅使用了7个写入周期。
所有关于耗尽SSD的讨论都是“拼写工作”。我有相同的感觉,但开始将其用于商业用途。我有东海岸最快的甲骨文集群之一。3年前,我们为整个存储和临时文件系统建立了SSD。每天我们对SSD进行数十亿次写入操作。3年后,我们仍然还没有达到10%的倦怠水平。如果我能以商业方式做到这一点,他们将永远不会在居住环境中磨损。所以-我在Linux工作站和BAM上实现了专门用于交换空间的SSD解决方案!
因此,您的行驶里程可能会有所不同,但SSD是各方面的方法。
戴夫
是的。您确实需要更改可交换性以延长SSD寿命。
Swappiness使您可以控制正在使用多少交换文件。Swappiness值可以从0更改为100。swappiness值越高,内核将尝试使用交换空间的次数越多,swappiness值越低,意味着内核将使用更少或不使用交换空间(取决于我们的设置)。
默认的swappiness值从60开始,如果您有足够的RAM,则应避免使用交换空间来写入和读取SSD,但写入HDD。对于具有4 GB或更大RAM的系统,请尝试通过将swappiness设置更改为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,则最好不用交换(除非您要休眠,但这是另一个问题)。
此操作的效果可能会有所不同,但是这样做只是为了节省SSD中的一些写周期,这是错误的。现代SSD(大约从2012年开始)具有成千上万的写入周期,当您几乎用完所有RAM时,应用程序的性能可能会降低。在程序安装过程中,您使用的写入周期要多于到期交换。再次记住,默认情况下仅在需要时才使用交换。
如果您担心用于交换的SSD写入周期,则可以在拥有足够的RAM的情况下完全删除/停用交换,并且仅在HDD中激活一个临时交换,而不用担心交换问题。那将是最好的路线。
我强烈建议您将swappiness设置更改为较低的值,如果您有足够的内存/内存用于系统4 GB或更多的内存,最好将其设置为“ 0”。即使使用高内存系统在10时进行交换,但我几乎看不到ubuntu在交换分区上放置了任何内容,因为大多数内容都已经在内存上了。
我做了一点谷歌搜索,我发现此页面http://namhuy.net/1563/how-to-tweak-and-optimize-ssd-for-ubuntu-linux-mint.html
可能会帮助您调整和优化SSD,以使Ubuntu系统更有效地运行,并使ssd寿命更长
我喜欢检查smartctl
输出的想法,但是我的代码更加紧凑。我从来不明白为什么人们不知道它awk
具有grep
内置的功能。
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; }'