NVME-WDC-VS-DEVIC(1)

πŸ’… nvme-wdc-vs-device-waf β€” the write amplification page (nvme-wdc-vs-devic, section 1, bestie ✨)

okay so bestie, welcome to the glow-up of nvme-wdc-vs-device-waf. this is part of the NVMe Manual and it's genuinely iconic if you're into WDC drives, so let's get into it πŸŽ€


✨ NAME ✨

nvme-wdc-vs-device-waf β€” calculates the device write amplification factor and prints both the TLC and SLC results. two results, one command, we love efficiency 🫢


🌸 SYNOPSIS 🌸

nvme [<global-options>] wdc vs-device-waf <device>
                        [--namespace-id=<nsid> | -n <nsid>]

πŸ¦‹ DESCRIPTION πŸ¦‹

so for the NVMe device you hand over, this command calculates the device TLC and SLC write amplification factor. that's it, that's the whole vibe πŸ”₯

the <device> parameter is mandatory, no skipping it, no "oops i forgot" β€” and it can be either the NVMe character device (ex: /dev/nvme0) or the block device (ex: /dev/nvme0n1). your choice, both slay πŸ’–

⚠️ real talk: this will only work on WDC devices that support this feature. results for any other device are undefined β€” like, not "weird", not "kinda wrong", literally undefined. so do a vibe check on your hardware first πŸ’€

on success it returns 0, error code otherwise. periodt.


πŸŽ€ OPTIONS πŸŽ€

  • -n <nsid>, --namespace-id=<nsid> β€” sets the command's nsid value to whatever nsid you give it. defaults to 0xffffffff if you don't give one. heads up though: this option may not affect anything depending on the log page, because the log page may or may not be specific to a namespace (iykyk, it's giving "it depends" πŸ™ˆ). the broadcast value 0xffffffff can also be given as all or -1.

πŸ’œ GLOBAL OPTIONS πŸ’œ

these are defined at the top-level nvme command and β€” plot twist β€” they're available to this subcommand too, so let's list them all, no gatekeeping πŸ‘‘

  • --dry-run β€” prints the command that would be executed, but doesn't actually execute it. manifesting without committing, honestly iconic ✨
  • --no-ioctl-probing β€” disables probing for 64-bit IOCTL support.
  • --no-retries β€” disables the retry logic on transient errors. no second chances, we're moving on πŸ’…
  • -o <fmt>, --output-format=<fmt> β€” sets the reporting format to normal, tabular, 'json, or binary. only one output format at a time, bestie, pick a lane 🎯
  • --output-format-version=<version> β€” selects the output format version. version 1 uses the original field naming, while version 2 (the default) provides more consistent and script-friendly field names. other versions are rejected β€” don't even try it 🚫
  • --quiet β€” suppresses informational messages. errors are still reported, and --quiet cancels any --verbose for the library log level. shhh, main character silence 🀫
  • --set-options=<key=value>[,<key=value>...] β€” sets libnvme library options for this invocation. supported keys are force-4k, mi-probe-enabled, test-base-dir and test-sysfs-dir.
  • --timeout=<ms> β€” sets the timeout for the command in milliseconds. infinite or -1 waits without a time limit (0xffffffff). we love a no-deadline queen ⏳
  • -v, --verbose β€” increases the level of detail in the output. may be specified multiple times to further increase verbosity. the more the merrier, fr fr πŸ—£οΈ

these options can also be set as machine-wide defaults in nvme-cli.conf(5). and listen β€” a command-line flag always overrides the file. always. no cap πŸ‘‘


πŸ“ EXAMPLES πŸ“

  • has the program issue WDC vs-device-waf plugin Command :
# nvme wdc vs-device-waf /dev/nvme0

look at her go 🧚


🌈 NVME 🌈

part of the nvme-user suite. one of us, one of us 🫢


and that's the whole page, bestie πŸ’– this was the NVMe manual, dated 10/30/2026, and you just read NVME-WDC-VS-DEVIC(1) β€” go forth and calculate those write amplification factors, you absolute legend πŸ‘‘βœ¨

πŸ“¦ where this page comes from