Disclaimer
The Author of this posting offers the information contained within this posting without consideration and with the reader's understanding that there's no implied or expressed suitability or fitness for any purpose. Information provided is for informational purposes only and should not be construed as rendering professional advice of any kind. Usage of this posting's information is solely at reader's own risk.
Liability Disclaimer
In no event shall Author be liable for any damages whatsoever (including, without limitation, damages for loss of use, data or profit) arising out of the use or inability to use the posting's information even if Author has been advised of the possibility of such damage.
Posting
Generally, "ordinary" CBWFQ bandwidth settings set a guaranteed minimum, they do not limit. For example, your 16% transaction could use 100%.
Also on most CBWFQ platforms (ASRs being an exception?), "bandwidth" classes containing for bandwidth will split it in the ratios of their bandwidth statement assignments. For example if your transactional, general and default classes were contending for bandwidth, they would split it 16:4:1.
BTW, your 16% is defined as "remaining", so it doesn't guarantee 16% of the 4 Mbps because you've also defined a LLQ class with 2 Mbps. I.e. you've "guaranteed" 16% of the remaining 2 Mbps.
PS:
Also BTW, unless you're a QoS expert I would recommend you NOT use random-detect.