Como as cargas da CPU são balanceadas? [fechadas]

3

Eu tive um problema com o Firefox no Xubuntu. Às vezes, o Firefox ocupa um núcleo da CPU, enquanto todos os outros núcleos estão inativos. O acúmulo de sites foi muito lento e muito chato.

Percebi que, quando deixo meu computador em paz por algum tempo (sem reinicializar), algo mágico acontece e, em seguida, o Firefox usa novamente todos os núcleos da CPU igualmente.

Em algum lugar, eu li que os núcleos da CPU estão anexados a itens no cache / buffer e, portanto, é melhor quando um programa (multi-core) usa temporariamente um núcleo da CPU, em vez de liberar os outros núcleos do cache / buffer empregos.

Alguém pode dar mais explicações sobre como as cargas de CPU são balanceadas?

    
por user258532 14.06.2018 / 16:43

1 resposta

2

Em geral, o planejamento do UNIX e Linux assume muitos programas curtos (pense em ls , ps , grep ...) para iniciar um programa em uma CPU. Conforme os programas rodam mais (pense no Firefox, ou no Chrome), o kernel percebe que a carga está desbalanceada e migrará os processos para CPUs diferentes. Isso é feito pela tarefa de migração (conforme visto executando ps ).

link

Para entender como a migração é feita, consulte: link

 * This is how migration works:
 *
 * 1) we invoke migration_cpu_stop() on the target CPU using
 *    stop_one_cpu().
 * 2) stopper starts to run (implicitly forcing the migrated thread
 *    off the CPU) 
 * 3) it checks whether the migrated task is still in the wrong runqueue.
 * 4) if it's in the wrong runqueue then the migration thread removes
 *    it and puts it into the right queue.
 * 5) stopper completes and stop_one_cpu() returns and the migration
 *    is done.

Para entender como a carga é determinada, consulte: link e veja os comentários em torno de migration . Mas no geral, o agendador precisa analisar:

  • quão ocupada a CPU é
  • o custo para migrar o processo
  • o número de falhas do sistema geradas

Em seguida, ele deve determinar qual processo migrar e para qual CPU migrar.

Isso tudo é bastante complicado e, portanto, se você quiser entender isso, recomendo que você olhe para: link e o papel original: The Linux Scheduler: uma década de núcleos perdidos .

    
por 14.06.2018 / 22:45