HFSC(8)
✨ HFSC ✨
okay so bestie, this is the manual page for HFSC 🦋 (manual section 8, the admin stuff), and it's all about the Hierarchical Fair Service Curve scheduler on Linux 🌸
✨ NAME ✨
HFSC - Hierarchical Fair Service Curve's control under linux 💖
✨ SYNOPSIS ✨
okay the vibe here is you use tc to set up the qdisc and classes 💅
tc qdisc add ... hfsc [ default CLASSID ]
tc class add ... hfsc [ [ rt SC ] [ ls SC ] | [ sc SC ] ] [ ul SC ]
here's what the little words mean 🧚
rt: realtime service curvels: linkshare service curvesc: rt+ls service curveul: upperlimit service curve
some rules you NEED to know, no cap 🙈
- at least one of
rt,lsorscmust be specified ulcan only be specified withlsorsc
there are two ways to write a service curve (SC), so pick your fighter 🎀
SC := [ [ m1 BPS ] d SEC ] m2 BPS
m1 : slope of the first segment
d : x-coordinate of intersection
m2 : slope of the second segment
SC := [ [ umax BYTE ] dmax SEC ] rate BPS
umax : maximum unit of work
dmax : maximum delay
rate : rate
for what BYTE, BPS and SEC actually mean, go check the UNITS section of tc(8) 🫶
✨ DESCRIPTION (qdisc) ✨
the HFSC qdisc only has ONE optional parameter, and it's default 💜 CLASSID sets the minor part of the default classid, which is where packets that weren't classified some other way (like a u32 filter or the CLASSIFY target of iptables) get queued up ✨
if you don't set default, any unclassified packets get dropped 😭
✨ DESCRIPTION (class) ✨
HFSC classes are how you build a class hierarchy for the HFSC scheduler 🌈 for the actual algorithm, and what rt, ls, sc and ul service curves mean, read tc-hfsc(7), it's giving detailed and I love it 🤓
like the SYNOPSIS showed, a service curve (SC) can be given in two ways. Either as a maximum delay for a certain amount of work, or as a bandwidth assigned for a certain amount of time 🍓 Obviously, m1 is simply umax/dmax 🧠
both m2 and rate are mandatory, bestie 🫶 and if you leave out the other parameters, you end up with a linear service curve ✨
✨ SEE ALSO ✨
if you find bugs or have patches, send them to <netdev@vger.kernel.org> 🐛💌
✨ AUTHOR ✨
this manpage was created by Michal Soltys (soltys@ziu.info) 👑
bestie, this page is from the iproute2 project, last updated 31 October 2011, and it's the HFSC(8) manual, so it's all set 🌸💅✨
📦 where this page comes from
- alpine 3.22: iproute2-doc 6.15.0-r0 · GPL-2.0-or-later
- alpine 3.23: iproute2-doc 6.17.0-r0 · GPL-2.0-or-later
- alpine 3.24: iproute2-doc 7.0.0-r0 · GPL-2.0-or-later
- arch rolling: iproute2 7.2.0-1
- arch rolling: iproute2 7.3.0-1 · GPL-2.0-or-later
- centos-stream 10: iproute-tc 7.0.0-2.el10 · GPL-2.0-or-later
- centos-stream 9: iproute-tc 6.17.0-3.el9 · GPL-2.0-or-later
- debian bookworm: iproute2 6.1.0-3 · GPL-2.0-only
- debian trixie: iproute2 6.15.0-1 · GPL-2.0-only
- fedora 43: iproute-tc 6.14.0-2.fc43 · GPL-2.0-or-later
- fedora 44: iproute-tc 6.17.0-2.fc44 · GPL-2.0-or-later
- nixos 26.05: iproute2 7.0.0
- nixpkgs unstable: iproute2 7.2.0
- opensuse-leap 16.0: iproute2 6.12-160000.4.1 · GPL-2.0-only
- opensuse-leap 16.0: iproute2 6.12-160000.4.1 · GPL-2.0-only
- opensuse-leap 16.0: iproute2 6.12-160000.4.1 · GPL-2.0-only
- opensuse-leap 16.0: iproute2 6.12-160000.4.1 · GPL-2.0-only
- ubuntu jammy: iproute2 5.15.0-1ubuntu2 · GPL-2.0-only
- ubuntu jammy: iproute2 5.15.0-1ubuntu2.2 · GPL-2.0-only
- ubuntu noble: iproute2 6.1.0-1ubuntu6 · GPL-2.0-only
- ubuntu noble: iproute2 6.1.0-1ubuntu6.4 · GPL-2.0-only
- ubuntu questing: iproute2 6.16.0-1ubuntu2
- ubuntu questing: iproute2 6.16.0-1ubuntu2.1 · GPL-2.0-only
- ubuntu questing: iproute2 6.16.0-1ubuntu2.2
- ubuntu resolute: iproute2 6.19.0-1ubuntu1 · GPL-2.0-only
- ubuntu resolute: iproute2 6.19.0-1ubuntu1.1 · GPL-2.0-only
- ubuntu stonking: iproute2 7.2.0-1ubuntu1 · GPL-2.0-only
- 💖 girlified by anthropic/claude-haiku-5.5 on : a language model's rewrite of the original, under its terms