Estou tentando executar benchmarks multithread em um conjunto de CPUs isoladas. Para encurtar a história, tentei inicialmente com isolcpus
e taskset
, mas encontrei problemas . Agora estou jogando com cgroups / csets.
Eu acho que o cset shield
caso de uso "simples" deve funcionar bem. Eu tenho 4 núcleos, então eu gostaria de usar os núcleos 1-3 para o benchmarking (também configurei esses núcleos para estar no modo de tiques adaptáveis), para que o núcleo 0 possa ser usado para todo o resto.
Seguindo o tutorial aqui , deve ser tão simples quanto:
$ sudo cset shield -c 1-3
cset: --> shielding modified with:
cset: "system" cpuset of CPUSPEC(0) with 105 tasks running
cset: "user" cpuset of CPUSPEC(1-3) with 0 tasks running
Então agora temos um "escudo" que é isolado (o usuário cset) e o núcleo 0 é para todo o resto (o sistema cset).
Tudo bem, parece bom até agora. Agora vamos olhar htop
. Todos os processos devem ter sido migrados para a CPU 0:
Hã? Alguns dos processos são mostrados como sendo executados nos núcleos blindados. Para descartar o caso de o htop ter um bug, tentei usar também taskset
para inspecionar a máscara de afinidade de um processo mostrado como estando no escudo.
Talvez essas tarefas fossem imóveis? Vamos iniciar um processo arbitrário mostrado como sendo executado na CPU3 (que deve estar no escudo) htop
e ver se ele aparece no cgroup do sistema de acordo com cset
:
$ cset shield -u -v | grep 864
root 864 1 Soth [gmain]
vext01 2412 2274 Soth grep 864
Sim, isso está sendo executado no cgroup do sistema de acordo com cset
. Então, htop
e cset
discordo.
Então, o que está acontecendo aqui? Em quem eu confio: afinidades da CPU ( htop
/ taskset
) ou cset
?
Eu suspeito que você não deve usar cset
e afinidades juntos. Talvez o escudo esteja funcionando bem, e eu devo ignorar as máscaras de afinidade e a htop
saída. De qualquer maneira, acho isso confuso. Alguém pode lançar alguma luz?
numactl
eo cgconfig
e cgrules
/ cgred
para simplificar o que você está fazendo. Eles podem estar disponíveis para o Debian com algum trabalho.