我知道这个问题已经讨论过很多次了,但是互联网上有很多不同的观点,哪些优化对 SSD 有好处(以及是否使用它们)。此外,技术已经进步,一些建议可能已经过时。
FS 上的过度配置和可用空间
这似乎仍然相关,但根据用户 cabirum 的说法y组合器讨论:
您不必过度配置未分区的空间并保留 20% 的分区可用空间。这是一个或另一个,关键是要有足够的可用空间来进行适当的磨损均衡。
另一方面,没有提到它建筑维基百科或者在这篇文章中南休伊。还有什么简易Linux两者都建议!
Noatime、nodirtime 和 relatime 挂载选项
南休伊建议两者,建筑维基百科和简易Linux仅建议 noatime 和用户 andmariosy组合器说:
noatime:这是旧的,使用 relatime。
这是根据 Linux 2.6.30 以来的手册页默认行为。
修剪
这可能是最大的混乱
- 简易Linux从 运行修剪
/etc/rc.local
。不要使用discard
安装选项。 - 建筑维基百科使用
fstrim.service
和fstrim.timer
.警告discard
. - 南休伊和西蒙西翁y组合器使用
discard
选项。
限制写操作
建筑维基百科,南休伊,简易Linux建议将浏览器缓存移至 RAM。这一点普遍不同意y组合器。
IO调度器
似乎每个人都同意使用Deadline
orNOOP
代替 default CFQ
。但我不清楚何时使用Deadline
以及何时使用NOOP
(是否依赖于文件系统/SSD 供应商?)。
交换
不久前,有人告诉我完全禁用交换(哇:D)。根据建筑维基百科,南休伊和简易Linux放vm.swappiness=1
。
我对所有这些选项感到有点困惑。到目前为止我只使用了其中的几个。我是不是没有提到一些重要的事情?某些 Linux 发行版会自动执行上述某些操作吗?
参考:
- y组合器:https://news.ycombinator.com/item?id=9633161
- 简易Linux:https://sites.google.com/site/easylinuxtipsproject/ssd#TOC-可选:-reserve-some-space-for-overprovisioning
- 建筑维基百科:https://wiki.archlinux.org/index.php/Solid_State_Drives
- 南休:https://www.namhuy.net/1563/how-to-tweak-and-optimize-ssd-for-ubuntu-linux-mint.html
答案1
重新过度配置 - 您需要确保的是 SSD 本身有足够数量的未使用的块。它是否知道这一点并不重要,因为 a) 它们未使用,因为它们位于未分区的空间中,因此从未被操作系统写入,或者 b) 它们已被写入零,并且 SSD 固件实现了色调学来检测这一点并将它们视为未分配,或者 c) 它们已成为 DISCARD(“修剪”)操作的目标。强烈建议其中任何(且仅)其中之一。
Re noatime:我发现我个人并不关心文件的上次访问时间,而且我使用的软件似乎也不关心。所以我用“noatime”安装所有东西。互联网上有一些关于未命名程序的模糊参考,如果使用“noatime”,这些程序就会发生故障,但我从未见过这样的程序。
重新修剪/丢弃:您应该定期运行 fstrim。如何调用它并不重要,但调用它的频率确实很重要。每次启动时运行它(例如使用 rc.local)可能会过多,除非您很少重新启动或您非常频繁地使用、然后释放磁盘空间,或两者兼而有之。不要使用“discard”挂载,因为它会导致内核在接近释放块的时间执行 TRIM 操作,这可能是您可能会注意到它导致的延迟增加的时间。您不太可能注意到或关心在(比方说)凌晨 3 点运行的 cron 作业。我想对于一般的桌面工作负载来说,每月一次就足够了,对于写入量大的桌面工作负载来说,每周一次就足够了。我不知道有什么完美的方法可以知道何时建议使用 fstrim,因为块分配的详细信息通常被驱动器固件隐藏。如果您发现驱动器性能明显下降,那么尝试使用 fstrim 会是一个不错的选择。如果您没有注意到速度变慢,则可能不需要执行任何操作。
Re I/O 调度程序 - 对您关心的工作负载进行基准测试。经验证据是无可替代的。
重新交换 - 如今 RAM 相当便宜,所以我和我的雇主购买了大量 RAM - 我为家庭使用构建的每台机器至少有 16GB,工作服务器中至少有 256GB。对于我在家里和工作中遇到的所有机器上的所有工作负载,所有内容都可以轻松地容纳在 RAM 中,并且有足够的空间用于缓存。因此,我在家里和工作时禁用交换。此外,使用交换会导致性能下降,这对我和我们的用户来说都是不可接受的,因此这会导致我或我的雇主紧急去购买更多的 RAM。所以我从来不想使用交换 - 它试图隐藏我宁愿解决的内存不足问题。我无法评论你的立场。我想这可能是相似的。
最后,我禁用甚至卸载了流行 Linux 发行版上默认安装和启用的许多服务。这可以节省一些虚拟内存,但也许更重要的是,它可以“强化”机器以抵御攻击。如果做到这一点,那么 RAM 中应该几乎没有任何无价值的东西可以在不牺牲性能的情况下换出到磁盘。