回答:
swappinessを0に減らすことは、使用可能な空きRAMがなくなったときにのみ、OSがスワップにSSDの使用を開始することを意味します。
理論的には、SSDの書き込みが少なくなるため、SSDの寿命を延ばすことができます。SSDの寿命を実際に延ばすかどうかによります:
Linuxは、swapness値が高い場合でも(特にWindowsと比較して)スワップを使用することはめったにない ので、この設定はRAM使用量と比較して十分なRAMを備えたシステムでのスワップ動作を変更しない可能性があります。RAMが不足している場合、デフォルト値の60でスワッピングが頻繁に発生する可能性があります。この場合、swappinessの減少はSSDの書き込みサイクル制限に大きな影響を与える可能性があります。
少なくともMLCベースのSSDの場合、SSDの書き込み耐久性は、単純な消費者の使用に対してはまだかなり高いです。彼らは、現在のMLCベースのSSDはcaを許容できると言います。3000〜5000回の書き込みサイクルが消耗する前。3000の制限を使用して計算すると、毎日10 GBの書き込みを行う128 GB SSDが約1時間で正常に機能します。38000日、つまり約 100年。もちろん、より大きなSSDを使用している場合、それはずっと後で使い果たされます。そのため、セルが摩耗してSSDが死ぬことはほとんどありません。(もちろん、企業/サーバー環境でSSDを使用する場合、毎日の書き込みははるかに多くなりますが、企業環境では通常SLCベースのSSDが使用されます。)
要約すると、理論上はそうです、swappinessを減らすとSSDの寿命が長くなりますが、実際にはそうではありません。ただし、TLCベースのSSDがあり、RAMが不足していて、一般的にSSDに頻繁に書き込む場合は、実用的な効果もあります。
MLCベースの128 GB SSDを使用しており、主にオフィス/ブラウジングにシステムを使用しており、RAM使用量と比較して十分なRAMがあるため、SSDに大きな書き込み負荷がかかっていません(ただし、マシンは24時間365日稼働しています)。しかし、私はまったくスワップする必要がなく、SSDをインストールしたときに自分でswappinessを0に設定したので、swappinessを下げるのはとても簡単です。(実際には、HDDのみを搭載したマシンでも、すべてのマシンでswappinessを0に設定しました。)
を使用して、SSDがどのくらいの書き込みを受けているかを確認するにsmartctl
は、で行を探してくださいTotal_LBAs_Written
。これにより、SSDに書き込まれた512bセクターの量がわかります。(はい私は、SSDは物理的に4Kのブロックではなく、512Bを持っていることを知っているが、SMARTは、まだ言う:Sector Size: 512 bytes logical/physical
私はに匹敵する結果を得る512個のブロックでtune2fs -l
生涯を出力を書き込みます。)512との数とあなたがバイトで書き込みを取得することを複数だから、または略して:
sudo smartctl -a /dev/sda | grep Total_LBAs_Written | awk '{print $10*512/1024/1024/1024 " GiB"}'
/ dev / sdaのGiBで出力します。(デバイス名をSSDの名前に変更するだけです。)私の128 GB SSDが約1時間かかりました。1年弱で800 GBの書き込みが行われます。つまり、3000から7回の書き込みサイクルしか使用されません。
SSDの摩耗に関するこの話はすべて「推測」です。私も同じ気持ちでしたが、商業的に使用し始めました。私は東海岸で最速の神託クラスターの1つを持っています。3年前、ストレージ全体と一時ファイルシステムにSSDを導入しました。SSDに対して1日に数十億回の書き込み操作を行います。3年経っても、まだ10%の燃え尽き症候群に近づいていない 私が商業的にそれをすることができるならば、彼らは住宅の状況で決してすり減りません。それで、LinuxワークステーションとBAMのスワップ領域専用のSSDソリューションを実装しました!!!
したがって、あなたの走行距離はさまざまですが、SSDはあらゆる方法で利用できます。
デイブ
はい。SSDの寿命を延ばすために、スワップ性を変更する必要があります。
Swappinessでは、使用するスワップファイルの量を制御できます。Swappinessの値は0から100に変更できます。swapnessの値が高いほど、カーネルがスワップスペースを使用しようとし、swapinessの値が低いほど、設定に応じてカーネルが使用するスワップスペースが少なくなるか、まったくありません。
デフォルトの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の寿命が長くなります。
出典:SSD を最適化するためのLinux SSDの調整と使用方法
swappinessをゼロに設定するとSSDの寿命が延びるというのは本当ですか?
Linuxがメモリブロックをスワップパーティションに移動する頻度が低くなります。スワップがSSDにある場合、スワップへの書き込みは通常、書き込みサイクルを使用します。スワップは必要な場合にのみ使用されることに注意してください。十分なRAMがあれば、それがなくてもよい場合があります(休止状態が必要な場合を除きますが、それは別の問題です)。
このアクションの効果は異なる場合がありますが、SSDの書き込みサイクルを節約するためだけに行うのは間違っています。最新のSSD(約2012年以降)には大量の書き込みサイクルがあり、ほとんどすべてのRAMを使い果たしている場合、アプリケーションのパフォーマンスが低下する可能性があります。プログラムのインストール中に、適切なスワップよりも多くの書き込みサイクルを使用します。繰り返しますが、スワップはデフォルトで必要な場合にのみ使用されます。
スワップに使用されるSSD書き込みサイクルが心配な場合は、十分なRAMがあればスワップを完全に削除/無効化し、スワップ性をいじるのではなく、HDDで一時的なスワップのみを有効にします。それが最善のルートです。
swappiness設定をより低い値に変更することを強くお勧めします。システムに十分なメモリ/ RAMが4 GB以上のRAMがある場合、最良は「0」です。高いRAMシステムで10のswappinessであっても、ほとんどすべてがすでにRAMにあるため、ubuntuがスワップパーティションに何かを置くことはほとんどありません。
私は少しグーグル検索をして、このページを見つけましたhttp://namhuy.net/1563/how-to-tweak-and-optimize-ssd-for-ubuntu-linux-mint.html
UbuntuシステムのSSDをより効率的に調整して最適化し、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; }'