VFS_AIO_RATELIMIT(8)

๐Ÿ“ฆ
version 4.24.7 ยท 4 versions
, in ubuntu stonking

โœจ VFS_AIO_RATELIMIT โœจ

okay bestie, welcome to the System Administration tools section of the manual โ€” this is vfs_aio_ratelimit(8) and it's literally about telling your async I/O to slow its roll ๐Ÿ’…


๐ŸŽ€ NAME ๐ŸŽ€

vfs_aio_ratelimit โ€” bestie, this is the thing that implements async-I/O rate-limiting for Samba ๐Ÿ’–


๐ŸŒธ SYNOPSIS ๐ŸŒธ

vfs objects = aio_ratelimit

that's it. that's the whole vibe. one line. iconic ๐Ÿซถ


๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

So this VFS module is part of the samba(7) suite โ€” you know her, you love her.

The aio_ratelimit VFS module lets you do run-time rate-limiting on specific shares by enforcing an upper limit on async I/O operations. An administrator (that's you, main character ๐Ÿ‘‘) may define this limit as operations per-second or bytes-per-second. And the way it works is: when one of those limits gets exceeded, a delay value (in microseconds) is calculated based on the current I/O load and injected into the async I/O operations โ€” which yields an implicit throughput ceiling. no cap, that's the whole trick โœจ

There's also a configurable burst allowance supported via a burst multiplier, which lets you have short-term bursts above the steady-state rate while still enforcing a long-term ceiling. And the rate-limiter state is periodically persisted to a local TDB, so your limits get enforced consistently across client reconnects and smbd restarts. she remembers. she always remembers ๐Ÿ’€

Heads up bestie: this module operates only on asynchronous VFS READ/WRITE operation. nothing else. don't come for her about anything else fr fr

Oh and โ€” this module is stackable. slay ๐ŸŒˆ


๐Ÿงš CONFIGURATION ๐Ÿงš

Straight forward use, no thoughts head empty:

         [share]
         path = /path/to/share
         vfs objects = aio_ratelimit

๐Ÿ’œ OPTIONS ๐Ÿ’œ

  • aio_ratelimit:read_iops_limit = count โ€” upper limit of READ operations-per-second before she starts injecting delays. A zero value implies no limit โ€” live your life, girl.

Default: 0, Max: 1000000

Example: aio_ratelimit:read_iops_limit = 1000

  • aio_ratelimit:read_bw_limit = count โ€” upper limit of READ bandwidth (bytes-per-second) before injecting delays. Zero value implies no limit. Supports size suffixes (K, M, G, T) ๐Ÿ“

Default: 0, Max: 1T

Example: aio_ratelimit:read_bw_limit = 2M

  • aio_ratelimit:read_burst_mult = value โ€” burst multiplier for READ operations, expressed in tenths (so like, 15 = 1.5x). This defines the token bucket capacity as a multiple of the rate limit, which allows short-term bursts above the steady-state rate. yes queen, treat yourself ๐ŸŽ€

Default: 15 (1.5x), Max: 100 (10x)

Example: aio_ratelimit:read_burst_mult = 20

  • aio_ratelimit:write_iops_limit = count โ€” upper limit of WRITE operations-per-second before injecting delays. Zero value implies no limit.

Default: 0, Max: 1000000

Example: aio_ratelimit:write_iops_limit = 1000

  • aio_ratelimit:write_bw_limit = count โ€” upper limit of WRITE bandwidth (bytes-per-second) before injecting delays. Zero value implies no limit. Supports size suffixes (K, M, G, T) โœจ

Default: 0, Max: 1T

Example: aio_ratelimit:write_bw_limit = 1M

  • aio_ratelimit:write_burst_mult = value โ€” burst multiplier for WRITE operations, expressed in tenths (e.g. 15 = 1.5x). Defines the token bucket capacity as a multiple of the rate limit, allowing short-term bursts above the steady-state rate. go off ๐Ÿ’…

Default: 15 (1.5x), Max: 100 (10x)

Example: aio_ratelimit:write_burst_mult = 15


๐Ÿ”ฅ BURST BEHAVIOR ๐Ÿ”ฅ

The read_burst_mult and write_burst_mult parameters control the maximum burst capacity of the rate limiter relative to the configured rate limits. The effective burst capacity is calculated as: rate_limit * (burst_mult / 10) โ€” math girlies rise up ๐Ÿงฎ

For example, with read_iops_limit = 1000 and read_burst_mult = 15, the burst capacity is 1000 * 1.5 = 1500 IOPS.

This allows short-term I/O bursts above the steady-state rate while still enforcing the configured long-term limit. short-term chaos, long-term discipline. it's giving balance โœจ

The appropriate burst multiplier depends on workload characteristics, iykyk. Workloads with larger or more variable asynchronous I/O requests may require a higher burst value to avoid premature throttling, while smaller or latency-sensitive workloads may benefit from lower values.

Note ๐Ÿ“ The read_burst_mult and write_burst_mult parameters do not change the long-term average throughput, which remains limited by read_iops_limit/read_bw_limit and write_iops_limit/write_bw_limit respectively. Higher burst values only affect initial acceleration and recovery from idle periods. so don't get it twisted bestie ๐Ÿ’–

โญ VERSION โญ

This man page is part of version 4.24.7-Ubuntu-4.24.7+dfsg-1ubuntu1 of the Samba suite. ๐ŸŒธ


๐Ÿ‘‘ AUTHOR ๐Ÿ‘‘

The original Samba software and related utilities were created by Andrew Tridgell. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed. legends only, no cap ๐Ÿซถ๐ŸŒŸ


aaaand that's the whole page bestie!! this one came from Samba 4.24.7-Ubuntu-4.24.7+dfsg-1ubuntu1, dated 09/13/2026, and it's filed under VFS_AIO_RATELIMIT(8) in the System Administration tools section ๐Ÿ’– go rate-limit something responsibly, mwah ๐Ÿ˜ญ๐Ÿ’…

๐Ÿ“ฆ where this page comes from