{
  "slug": "linux-writeback-throttling",
  "term": "Linux writeback throttling",
  "aliases": [
    "WBT",
    "blk-wbt",
    "wbt_lat_usec"
  ],
  "definition": "Linux writeback throttling is a block-layer feedback mechanism that limits eligible write traffic in response to read latency.",
  "note": "The wbt_lat_usec attribute expresses a minimum-read-latency target in microseconds. Its documented controls use 0 to disable WBT and -1 to restore the default target. Inspect the actual device queue and kernel version; this is not a recommended universal tuning value. [wbt-abi]\n\nLinux v6.12 compares the minimum completed-read latency with the target after at least one read and three write samples. A separate outstanding-read check can also signal excessive latency. WBT adjusts admission limits, not per-task proportional shares. [wbt-source]\n\nThe statistics measure request time from io_start_time_ns to completion accounting, not the application's entire wait. A low minimum does not bound the maximum or p99; see the explicitly synthetic comparison in the linked analysis. [wbt-stats]\n\nThe v6.12 default target is 2000 microseconds for a queue marked non-rotational and 75000 for a rotational queue. These are policy defaults, not measured device speeds or completion promises. Default enablement also depends on kernel configuration and the selected scheduler. [wbt-source]",
  "advantages": [
    {
      "text": "Can reduce competing write pressure when the read-latency feedback indicates congestion.",
      "citationIds": [
        "wbt-source"
      ]
    }
  ],
  "limitations": [
    {
      "text": "Neither a tail-latency guarantee nor a durability operation; a feedback target is not a bound on every application's requests.",
      "citationIds": [
        "wbt-source",
        "wbt-stats"
      ]
    }
  ],
  "related": [
    "io-scheduler",
    "buffered-io"
  ],
  "citations": [
    {
      "id": "wbt-source",
      "title": "Linux v6.12 block/blk-wbt.c: stat_sample_valid, latency_exceeded, wbt_wait and default latency",
      "url": "https://raw.githubusercontent.com/torvalds/linux/v6.12/block/blk-wbt.c",
      "accessed": "2026-11-08"
    },
    {
      "id": "wbt-abi",
      "title": "Linux v6.12 stable block sysfs ABI: queue/wbt_lat_usec",
      "url": "https://raw.githubusercontent.com/torvalds/linux/v6.12/Documentation/ABI/stable/sysfs-block",
      "accessed": "2026-11-08"
    },
    {
      "id": "wbt-stats",
      "title": "Linux v6.12 block/blk-stat.c: request timing, per-CPU aggregation and minimum samples",
      "url": "https://raw.githubusercontent.com/torvalds/linux/v6.12/block/blk-stat.c",
      "accessed": "2026-11-08"
    }
  ],
  "status": "shipping",
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-11-08",
  "provenance": [
    "Source inspection pinned to Linux v6.12, not a claim about every distribution or later kernel.",
    "The worked example is synthetic arithmetic for the completed-sample comparison; it excludes the outstanding-read branch, queue evolution and device behavior.",
    "No kernel tuning, hardware benchmark, scheduler replication or performance gain measured."
  ]
}
