Eu recebi uma explicação inicial sobre este caso de teste de Stefan Seyfried, que escreveu o artigo do qual este exemplo foi retirado. O problema aqui é que as partes do cgroups do planejador de CPU sempre visam manter qualquer CPU disponível ocupada; ele nunca aplica um limite rígido se tudo se encaixar de uma só vez.
No caso em que dois processos (alto e baixo aqui) estão sendo executados em > = 2 núcleos, ele continuará alto em um núcleo e baixo em outro. Ambos serão executados o tempo todo, com cerca de 100% de uso, porque podem fazê-lo sem atingir a situação em que o agendador não lhes dá tempo suficiente na CPU. O agendamento do cpu.share só acontece se houver uma falta.
No segundo caso, ambos os processos são fixados na mesma CPU. Em seguida, a lógica de compartilhamento da CPU precisa fazer algo útil com os números relativos de cpu.shares para equilibrá-los, e faz isso como esperado.
Os limites rígidos de uso da CPU provavelmente não aparecerão até depois do patch do Controle de Largura de Banda CFS ser atingido. Nesse ponto, pode ser possível obter algo mais parecido com o que eu esperava.