I work on knapsack gem to split tests across parallel CI nodes. To do optimal balancing I developed a dynamic test suite split with Queue approach.
Here is example for Travis CI https://docs.knapsackpro.com/2018/how-to-run-travis-ci-paral...
And this is the graph showing the difference if you compare knapsack_pro dynamic tests split with what CircleCI does which is basically only time-based split. https://docs.knapsackpro.com/2018/improve-circleci-paralleli...