libnvme(9)

✨ libnvme β€” the manual page, but make it a group chat ✨

okay bestie, sit down, hydrate, because we're reading a page straight out of the libnvme API manual πŸ’– (that's the manual name, it's on every single page, iconic of it honestly).


🌸 NAME 🌸

enum nvme_feat_perfc_r4karl β€” the standard performance attribute for random 4 KiB average latency. yes it's a whole mouthful, no we are not shortening it, it's a type name, it has rights. πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

here's the whole enum, exactly as it lives, no edits, no vibes-based rearranging:

enum nvme_feat_perfc_r4karl {
    NVME_FEAT_PERFC_R4KARL_NO_REPORT ,
    NVME_FEAT_PERFC_R4KARL_GE_100_SEC ,
    NVME_FEAT_PERFC_R4KARL_GE_50_SEC ,
    NVME_FEAT_PERFC_R4KARL_GE_10_SEC ,
    NVME_FEAT_PERFC_R4KARL_GE_5_SEC ,
    NVME_FEAT_PERFC_R4KARL_GE_1_SEC ,
    NVME_FEAT_PERFC_R4KARL_GE_500_MS ,
    NVME_FEAT_PERFC_R4KARL_GE_100_MS ,
    NVME_FEAT_PERFC_R4KARL_GE_50_MS ,
    NVME_FEAT_PERFC_R4KARL_GE_10_MS ,
    NVME_FEAT_PERFC_R4KARL_GE_5_MS ,
    NVME_FEAT_PERFC_R4KARL_GE_1_MS ,
    NVME_FEAT_PERFC_R4KARL_GE_500_US ,
    NVME_FEAT_PERFC_R4KARL_GE_100_US ,
    NVME_FEAT_PERFC_R4KARL_GE_50_US ,
    NVME_FEAT_PERFC_R4KARL_GE_10_US ,
    NVME_FEAT_PERFC_R4KARL_GE_5_US ,
    NVME_FEAT_PERFC_R4KARL_GE_1_US ,
    NVME_FEAT_PERFC_R4KARL_GE_500_NS ,
    NVME_FEAT_PERFC_R4KARL_GE_100_NS ,
    NVME_FEAT_PERFC_R4KARL_GE_50_NS ,
    NVME_FEAT_PERFC_R4KARL_GE_10_NS ,
    NVME_FEAT_PERFC_R4KARL_GE_5_NS ,
    NVME_FEAT_PERFC_R4KARL_GE_1_NS

};

(yes the blank line before the closing brace is staying, it's part of the lore 🫢)


πŸ‘‘ Constants πŸ‘‘

okay so the way this works: it's a bucket system. each constant is a little bucket, and the bucket tells you which latency range the random 4 KiB average latency falls into. going from "not even reporting" all the way down to nanoseconds, which is giving microscopic, giving unhinged precision, and we love that for it. πŸ’…

🌈 the top of the ladder β€” seconds

  • NVME_FEAT_PERFC_R4KARL_NO_REPORT β€” not reported. the void. the shrug. no data bestie. πŸ™ˆ
  • NVME_FEAT_PERFC_R4KARL_GE_100_SEC β€” greater than or equal to 100 secs. that's over a minute and a half, praying for you 😭
  • NVME_FEAT_PERFC_R4KARL_GE_50_SEC β€” greater than or equal to 50 secs and less than 100 secs
  • NVME_FEAT_PERFC_R4KARL_GE_10_SEC β€” greater than or equal to 10 secs and less than 50 secs
  • NVME_FEAT_PERFC_R4KARL_GE_5_SEC β€” greater than or equal to 5 secs and less than 10 secs
  • NVME_FEAT_PERFC_R4KARL_GE_1_SEC β€” greater than or equal to 1 sec and less than 5 secs

πŸ“ milliseconds era

  • NVME_FEAT_PERFC_R4KARL_GE_500_MS β€” greater than or equal to 500 msecs and less than 1 sec
  • NVME_FEAT_PERFC_R4KARL_GE_100_MS β€” greater than or equal to 100 msecs and less than 500 msecs
  • NVME_FEAT_PERFC_R4KARL_GE_50_MS β€” greater than or equal to 50 msecs and less than 100 msecs
  • NVME_FEAT_PERFC_R4KARL_GE_10_MS β€” greater than or equal to 10 msecs and less than 50 msecs
  • NVME_FEAT_PERFC_R4KARL_GE_5_MS β€” greater than or equal to 5 msecs and less than 10 msecs
  • NVME_FEAT_PERFC_R4KARL_GE_1_MS β€” greater than or equal to 1 msec and less than 5 msecs

🧚 microseconds, we're getting fancy

  • NVME_FEAT_PERFC_R4KARL_GE_500_US β€” greater than or equal to 500 usecs and less than 1 msec
  • NVME_FEAT_PERFC_R4KARL_GE_100_US β€” greater than or equal to 100 usecs and less than 500 usecs
  • NVME_FEAT_PERFC_R4KARL_GE_50_US β€” greater than or equal to 50 usecs and less than 100 usecs
  • NVME_FEAT_PERFC_R4KARL_GE_10_US β€” greater than or equal to 10 usecs and less than 50 usecs
  • NVME_FEAT_PERFC_R4KARL_GE_5_US β€” greater than or equal to 5 usecs and less than 10 usecs
  • NVME_FEAT_PERFC_R4KARL_GE_1_US β€” greater than or equal to 1 usec and less than 5 usecs

⭐ nanoseconds, the main character energy tier

  • NVME_FEAT_PERFC_R4KARL_GE_500_NS β€” greater than or equal to 500 nsecs and less than 1 usec
  • NVME_FEAT_PERFC_R4KARL_GE_100_NS β€” greater than or equal to 100 nsecs and less than 500 nsecs
  • NVME_FEAT_PERFC_R4KARL_GE_50_NS β€” greater than or equal to 50 nsecs and less than 100 nsecs
  • NVME_FEAT_PERFC_R4KARL_GE_10_NS β€” greater than or equal to 10 nsecs and less than 50 nsecs
  • NVME_FEAT_PERFC_R4KARL_GE_5_NS β€” greater than or equal to 5 nsecs and less than 10 nsecs
  • NVME_FEAT_PERFC_R4KARL_GE_1_NS β€” greater than or equal to 1 nsec and less than 5 nsecs

lowkey the whole enum is just "which speed bucket are we in" and every single bucket has a floor and a ceiling. no overlaps, no gaps, no drama. periodt. πŸ’œ

and that's the page!! every constant present and accounted for, nothing skipped, nothing invented, we ate and left no crumbs πŸ”₯ this one was filed under libnvme(9) in the API Manual, dated August 2026, and the page name is enum nvme_feat_perfc_r4karl. go forth and bucket your latencies, bestie πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from