OK.. I have a similar Cable situation, where, on a good day or hour, I get up to 350/32 on my "300/30" connection. But, I also need to bring it down to 300-320 on the ingress/download and maybe 30-28 on the egress/upload, before I get a consistent low latency. It's worth playing around and looking closely at the latency graphs.
There was a long back post on setting up and using DSLReports Speedtest, which is still the best tool for this kind of tuning. Enabling the high speed bloat graph and finding the details tells you a lot about what's going on. There had been usability problems with it, but it seems to be usable now, though you have to use http, and you may have to trial and error edit which servers it picks out of the list. If one isn't fully functional, the test will not work.
https://forum.openwrt.org/t/sqm-qos-recommended-settings-for-the-dslreports-speedtest-bufferbloat-testing/2803
Looking at the detailed, 10 per second latency results hidden in the graph makes it easy to find the threshold of fully managing the latency on your link. I get a lot of various tiny bursts of high latency, or sometimes ramps. Getting the speed enough below that "noise" level and they all are pretty much flattened out. Hard to see it, otherwise.
And, I would highly recommend the above mentioned "dangerous" Advanced Option strings that enable the per host behavior, as well as a few other things that cake can do, but need to be enabled. The per host flow control behavior might help your scheduling, somewhat.