SSD優化
我知道這已經討論過很多次了,但是網際網路上有很多不同的意見,哪些優化對 SSD 有好處(以及是否使用它們)。此外,技術已經進步,一些建議可能已經過時了。
FS 上的過度配置和可用空間
這似乎仍然相關,但根據ycombinator討論中的使用者 cabirum :
您不必過度配置未分區空間並保留 20% 的已分區可用空間。這是一個或另一個,關鍵是要有足夠的可用空間來進行適當的磨損平衡。
另一方面,在ArchWiki或namhuy的這篇文章中沒有提及它。還有什麼更easylinux的建議!
Noatime、nodirtime 和 relatime 掛載選項
namhuy建議兩者,ArchWiki和easylinux只建議 noatime 和 ycombinator 中的使用者andmarios說:
noatime:這是舊的,使用 relatime。
這是根據自 Linux 2.6.30 以來的手冊頁預設行為。
修剪
這可能是最大的混亂
- easylinux從
/etc/rc.local
. 不要使用discard
掛載選項。- ArchWiki使用
fstrim.service
和fstrim.timer
. 警告discard
.- ycombinator中的 namhuy 和simoncion使用
discard
選項。限制寫操作
ArchWiki、namhuy、easylinux建議將瀏覽器記憶體移動到 RAM。這在ycombinator中通常是不同意的。
IO調度器
似乎每個人都同意使用
Deadline
orNOOP
代替 defaultCFQ
。但我不清楚何時使用Deadline
以及何時使用NOOP
(它依賴於文件系統/SSD 供應商嗎?)。交換
不久前,有人告訴我完全禁用交換(哇:D)。根據ArchWiki,namhuy和easylinux設置
vm.swappiness=1
。我對所有這些選項感到有些困惑。到目前為止,我只使用了其中的幾個。我沒有提到重要的事情嗎?某些 Linux 發行版會自動執行上述某些操作嗎?
參考:
- ycombinator:https ://news.ycombinator.com/item?id=9633161
- easylinux:https ://sites.google.com/site/easylinuxtipsproject/ssd#TOC-Optional:-reserve-some-space-for-overprovisioning
- ArchWiki:https ://wiki.archlinux.org/index.php/Solid_State_Drives
- namhuy:https ://www.namhuy.net/1563/how-to-tweak-and-optimize-ssd-for-ubuntu-linux-mint.html
重新過度配置 - 您只需要確保 SSD 本身有足夠數量的已知未使用的塊。它是否知道這一點並不重要,因為a)它們未被使用,因為它們位於未分區的空間中,因此從未被作業系統寫入,或者b)它們已經寫入了零並且SSD韌體實施了hueristics來檢測並認為它們未分配,或者 c) 它們已成為 DISCARD (’trim’) 操作的目標。強烈建議其中任何一項(且僅一項)。
Re noatime:我發現我個人並不關心文件的最後訪問時間,而且我使用的任何軟體似乎也不關心。所以我用’noatime’安裝所有東西。網際網路上有關於如果使用“noatime”會出現故障的未命名程序的模糊參考,但我從未見過這樣的程序。
重新修剪/丟棄:您應該定期執行 fstrim。它如何被呼叫並不重要,但它被呼叫的頻率卻很重要。在每次啟動時執行它,例如使用 rc.local,可能會過度,除非您非常不頻繁地重新啟動,或者您使用然後釋放磁碟空間非常頻繁,或兩者兼而有之。不要使用“丟棄”掛載,因為它會導致核心在接近釋放塊的時間執行 TRIM 操作,這可能是您可能會注意到它導致延遲增加的時間。您不太可能注意到或關心在(比方說)凌晨 3 點執行的 cron 作業。我想對於普通的桌面工作負載來說,每月一次就綽綽有餘了,對於寫繁重的桌面工作負載來說,每週一次就綽綽有餘了。我不知道有什麼完美的方法可以知道何時建議使用 fstrim,因為塊分配的細節通常被驅動韌體隱藏。如果您觀察到驅動器性能顯著下降,則可以嘗試使用 fstrim。如果您沒有註意到減速,您可能不需要做任何事情。
Re I/O scheduler - 對您關心的工作負載進行基準測試。經驗證據是無可替代的。
重新交換 - 現在 RAM 相當便宜,所以我和我的雇主大量購買 - 我為家庭使用而建構的每台機器至少 16GB,工作伺服器中至少有 256GB。對於我在家里和工作中遇到的所有機器上的所有工作負載,所有東西都可以舒適地放入 RAM 中,並有足夠的空間用於記憶體。因此,我在家里和工作中禁用了交換。此外,使用交換會導致性能下降,這對我和我們的使用者來說都是不可接受的,因此會導致我或我的雇主緊急去購買更多的 RAM。所以我從不想使用交換 - 它試圖隱藏我寧願解決的記憶體不足問題。我無法評論你的立場。我想它可能是相似的。
最後,我禁用甚至解除安裝了許多在流行的 Linux 發行版上預設安裝和啟用的服務。這節省了一些虛擬記憶體,但也許更重要的是,它“強化”了機器免受攻擊。如果認真地做到這一點,那麼 RAM 中應該幾乎沒有毫無價值的東西可以在不犧牲性能的情況下換出到磁碟。