SSD/NVMe Tweaks (TRIM/Discard): Difference between revisions

From WikiMLT
mNo edit summary
mNo edit summary
Line 96: Line 96:
=== References ===
=== References ===
* [https://easylinuxtipsproject.blogspot.com/p/ssd.html Easy Linux Tips Project: SSD: how to optimize your Solid State Drive for Linux Mint and Ubuntu]
* [https://easylinuxtipsproject.blogspot.com/p/ssd.html Easy Linux Tips Project: SSD: how to optimize your Solid State Drive for Linux Mint and Ubuntu]
== Install Preload ==
Preload is a Linux software developed by Behdad Esfahbod. Preload learns programs that users use often, records statics using Markov chains, analyzes, and predicts what programs will be most used. Preload then will load those programs, binaries, and dependencies into memory or ram. By having programs already in RAM or memory, it will take less time when you actually start that program or programs.<syntaxhighlight lang="shell" line="1">
sudo aptt update && sudo ap install preload
</syntaxhighlight>References:
* [https://itbeginner.net/tweak-optimize-ssd-ubuntu-linux-mint/ itBeginner.net: How to tweak and optimize SSD for Ubuntu, Linux Mint]


== Swap and Swapiness ==
== Swap and Swapiness ==

Revision as of 17:46, 17 August 2022

Note, with­in the ex­am­ples in the fol­low­ing sec­tions, /​​​dev/​​​sda refers to a SSD de­vice while /​​​dev/​​​nvme0n1 refers to a NVMe de­vice.

Get Full SSD/​​​NVMe De­vice In­fo

For SSD de­vices use:

smartctl -x /dev/sda            # -x, --xall; -a, --all
hdparm -I /dev/sda              # doesn't support NVMe

For NVMe de­vices use:

smartctl -x /dev/nvme0n1        # -x, --xall; -a, --all
nvme smart-log -H /dev/nvme0n1  # apt install nvme-cli

Tweak the AMP val­ue of SSD

Most Lin­ux dis­tri­b­u­tions use Lin­ux Kernel’s “Ad­vanced Pow­er Man­age­ment (APM)” API to han­dle con­fig­u­ra­tion, op­ti­mize per­for­mance, and en­sure sta­bil­i­ty of stor­age de­vices. These de­vices are as­signed an APM val­ue be­tween 1 and 255 to con­trol their pow­er man­age­ment thresh­olds. A val­ue of 254 in­di­cates best per­for­mance, while a val­ue of 1 in­di­cates bet­ter pow­er man­age­ment. As­sign­ing a val­ue of 255 will dis­able APM al­to­geth­er. By de­fault, SS­Ds are as­signed an APM of 254 when the sys­tem is run­ning on ex­ter­nal pow­er. In bat­tery mode, the APM lev­el is set to 128, re­duc­ing the read and write speeds of SS­Ds. This ar­ti­cle ex­plains how to in­crease SSD APM lev­els to 254 when your Lin­ux lap­top is run­ning on bat­tery mode.

sudo hdparm -B254 /dev/sda

Get the cur­rent AMP val­ue.

sudo hdparm -B /dev/sda

Test the per­for­mance.

sudo hdparm -tT /dev/sda

Ref­er­ences

En­able TRIM/​​​Discard in FSTab

TRIM (Trim com­mand let an OS know which SSD blocks are not be­ing used and can be cleared).

sudo nano /etc/fstab
#/dev/disk/by-uuid/09e7c8ed-fb55-4a44-8be4-18b1696fc714 / ext4 defaults 0 0
/dev/disk/by-uuid/09e7c8ed-fb55-4a44-8be4-18b1696fc714 / ext4 discard,async,noatime,nodiratime,errors=remount-ro 0 1

Warn­ing: Users need to be cer­tain that their SSD sup­ports TRIM be­fore at­tempt­ing to use it. Da­ta loss can oc­cur oth­er­wise! Tp test whether the SSD de­vice sup­ports TRIM/​​​Discard op­tion you can use ei­ther of the fol­low­ing com­mands.

sudo hdparm -I /dev/sda | grep TRIM
* Data Set Management TRIM supported (limit 8 blocks)
sudo smartctl --all /dev/sda | grep TRIM
TRIM Command:     Available

To test does an NVMe sup­ports TRIM (phys­i­cal dis­card op­tion) the out­put of the fol­low­ing com­mand must be greater than 0.

Ref­er­ences

Set the au­to­mat­ic TRIM job to dai­ly

sudo systemctl enable fstrim.timer
sudo mkdir /etc/systemd/system/fstrim.timer.d
sudo nano /etc/systemd/system/fstrim.timer.d/override.conf
[Timer]
OnCalendar=
OnCalendar=daily

Re­boot the sys­tem or do dae­mon-re­load and check the up­dat­ed val­ue.

sudo systemctl daemon-reload
systemctl cat fstrim.timer
# /lib/systemd/system/fstrim.timer
[Unit]
Description=Discard unused blocks once a week
Documentation=man:fstrim
ConditionVirtualization=!container

[Timer]
OnCalendar=weekly
AccuracySec=1h
Persistent=true

[Install]
WantedBy=timers.target

# /etc/systemd/system/fstrim.timer.d/override.conf
[Timer]
OnCalendar=
OnCalendar=daily

Un­do the change if you need.

sudo rm -v /etc/systemd/system/fstrim.timer.d/override.conf

Ref­er­ences

Swap and Swap­i­ness

Swap­pi­ness is a part of Lin­ux ker­nel that let you con­trol how much swap (vir­tu­al mem­o­ry) file is be­ing used. Swap­pi­ness val­ues can be changed from 0 to 100. The high­er swap­pi­ness val­ues the more Lin­ux ker­nel will try to use swap space, the low­er swap­pi­ness val­ues means lin­ux ker­nel will use­less or try not to use swap space de­pends on our set­ting. The de­fault swap­pi­ness val­ue from lin­ux ker­nel is 60, if your sys­tem have plen­ty have RAM, you should avoid us­ing swap space which writes and reads will be on your SSD or hard dri­ve. For sys­tem with 4 GB or more RAM, I would sug­gest to re­duce the us­age of swap by chang­ing swap­pi­ness set­tings to be­tween 10 even 0.

RAM Swap­i­ness Com­ment
De­fault 60 cat /​​​proc/​​​sys/​​​vm/​​​swappiness
2GB 30
4GB 10 OK
6GB or more 0 ?
sudo nano /etc/sysctl.conf
vm.swappiness = 10

Ref­er­ences:

Com­mon Ref­er­ences