I'm wondering if compaction can be isolated as a separate processing task and it's own memory budget that separates it's processing from the memory pages utilized by request serving
Because compaction is about generating a new set of better optimized stables and then discarding the old
Cassandra is was full of all these tasks limped into the same problematic single jfm heap, even though the data could be partitioned into hundreds of jvms with smaller /easier to to gc heaps
Iirc scylla utilizes this fact with cpu pinning across cpus and other tricks that the older Cassandra could not.