FAQ - Frequently Asked Questions
1. Kilobits or kilobytes ?
Units used in Prometheus hosts configuration file and in prometheus.conf are kilobits, not kilobytes. 1 byte = 8 bits. There is plan to permit usage of some unit-specifying keyword as number suffix later (as built-in HTB).
2. Why using complicated QoS tool, if we already have HTB module in kernel ?
HTB QoS algorithm implemented in Linux kernel works well for users with approximately identical data transfer patterns. But our statistics (generated using Prometheus QoS tool anyway) reveal, that more then 50% of all traffic is generated by less then 10% users and more then 80% of all traffic is generated by less then 20% users. Without any kind of FUP, this ratio would get even worse. While you can use HTB rate, HTB ceil and perhaps also HTB prio parameters to setup minimum and maximum bitrate for individual users for smaller amounts of transfered data, and HTB will prefer users who have transfered less data recently, this approach just won't work for chronic heavy downloaders: they are simply going to get significant portion of their HTB ceil bitrate anyway. There are only two workarounds around this problem: the hard approach is to restrict their HTB ceil completely and make it equal to HTB rate. The soft approach is to reduce HTB prio.
Prometheus QoS implements both soft (reducing priority) and hard (reducing bandwitdh) approach to FUP (Fair Use Policy).
3. Why did you wrote it using C language ?
Well, it runs even on systems, where Perl or Python is not installed. It also shifts balance of power from sysadmins back to the programmers.
4. Why using C<<1 dialect instead of plain C ?
Well, ehm... please don't start flamewars :-) For me, C<<1 it is quite straightforward and simple to use dialect of C - and it just compiles and runs anywhere.