VFS_AIO_RATELIMIT(8)
โจ 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 VFSREAD/WRITEoperation. 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 ofREADoperations-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 ofREADbandwidth (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 forREADoperations, 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 ofWRITEoperations-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 ofWRITEbandwidth (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 forWRITEoperations, 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 ๐ Theread_burst_multandwrite_burst_multparameters do not change the long-term average throughput, which remains limited byread_iops_limit/read_bw_limitandwrite_iops_limit/write_bw_limitrespectively. 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
- ubuntu stonking: samba 2:4.24.7+dfsg-1ubuntu1 ยท GPL-3.0-or-later
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms