=== Hierarchical rate limits for OpenZFS

Links: +
link:https://github.com/openzfs/zfs/pull/16205[Pull request] URL: link:https://github.com/openzfs/zfs/pull/16205[]

Contact: Pawel Dawidek <pawel@dawidek.net>

Rate limits allow to limit bandwidth and number of metadata operations per dataset.

Hierarchical rate limits allow for granular resource control especially in shared environments, eg. when a single ZFS pool serves data to multiple, independent virtual machines or jails.

Because the limits are hierarchical, they are enforced like the quota property: the children datasets must obey the limits of the parent dataset.

The limits can be configured using six new properties:
limit_bw_read, limit_bw_write, limit_bw_total, limit_op_read, limit_op_write, limit_op_total
The limit_bw_* properties limit the read, write, or combined bandwidth, respectively, that a dataset and its descendants can consume.
Those limits are in bytes per second.
The limit_op_* properties limit the read, write, or both metadata operations, respectively, that a dataset and its descendants can generate.
Those limits are in number of operations per second.

Limits are applied to file systems and ZFS volumes (and their snapshots).

The initial work is done and the pull request is up for review.

Sponsor: Klara Systems
Sponsor: FreeBSD Foundation
