Linux Performance

SSD tuning myths and facts on Linux

Practical Linux guide: sSD tuning myths and facts on Linux without the usual guesswork.

10 min read Beginner Updated 9 Jun 2026

Step-by-step guide

Work through each section in order. Stop when your issue is resolved — you do not need every step for every situation.

What you will achieve

Separate SSD myths from what modern Linux actually does — TRIM, discard mount options, and why you probably should not obsess over journaling anymore.

1) Enable periodic TRIM

sudo systemctl enable --now fstrim.timer
systemctl status fstrim.timer

On Fedora this is usually enabled by default. Runs weekly discard for supported mounts.

2) discard mount option (optional)

grep discard /etc/fstab

Continuous discard can add write amplification on some drives. fstrim.timer is the safer default for most setups.

3) Myths debunked

  • Noatime: relatime is already default — marginal gains from noatime.
  • Disable journaling: never on ext4 root — corruption risk outweighs tiny wear savings.
  • Manual over-provisioning: leave unpartitioned space only if vendor docs recommend it.

4) Check drive health

sudo apt install smartmontools
sudo smartctl -a /dev/nvme0n1

Verify

sudo fstrim -v /
lsblk -D

5) I/O scheduler

cat /sys/block/nvme0n1/queue/scheduler

Modern kernels pick sensible defaults (none/mq-deadline for NVMe). Manual scheduler tuning rarely matters on SSDs.

6) ext4 mount options

mount | grep ' / '

Defaults include relatime. discard vs periodic fstrim — pick one strategy, not both aggressively.

7) NVMe health monitoring

sudo nvme smart-log /dev/nvme0

Watch percentage used and media errors — Linux tuning cannot fix dying hardware.

What actually matters

Adequate free space (keep 10–15% free), firmware updates from vendor tools, and backups beat superstition about tmpfs and manual wear leveling.

8) RAID and SSD

MD RAID and some HBAs hide SMART from OS — use vendor tools for physical health when smartctl cannot see drives directly.

Prerequisites

Know if drive is NVMe vs SATA SSD (lsblk -d -o NAME,ROTA,MODEL). Root for fstrim timer. smartmontools optional. Avoid urban myth tweaks from 2010 HDD era forums.

Benchmark sanity

sudo hdparm -Tt /dev/sda

Compare before/after tuning — if numbers unchanged, your tweak did nothing measurable.

LUKS overhead negligible

With AES-NI, encrypted SSD throughput within few percent of plain — do not skip LUKS for mythical performance savings.

Datacenter NVMe

Enterprise NVMe with power loss protection handles fsync differently — database tuning docs still recommend noatime defaults only. Multi-actuator drives need no special Linux scheduler tweaks — kernel mq-deadline scales. Monitor nvme smart-log percentage used crossing 80% for procurement lead time.

USB-attached SSD

UASP enclosure matters for trim pass-through — lsusb -t shows UASP vs Bulk-Only Transport. fstrim may silently skip poorly implemented USB bridges — monitor write speed degradation as wear indicator instead.

Related guides

linux ssd tune