Estou fazendo uma análise estatística usando R no sistema operacional Ubuntu 15.10. Meu script R leva muito tempo para ser concluído. Cerca de 2 a 3 horas.
Enquanto isso, verifiquei a carga de minhas CPUs. Acabei de notar que todas as CPUs estão quase inativas, exceto uma. Na figura abaixo, como você pode ver, apenas a CPU 8 está em 100%.
Por que o kernel Linux não equilibra a carga de trabalho em todas as CPUs?
linux
cpu
r
scheduling
frogatto
fonte
fonte
Respostas:
O Linux equilibra a carga de trabalho em todas as CPUs. No entanto, para fazer isso, a carga de trabalho deve ser multithread. Não é possível distribuir uma carga de trabalho de thread único em várias CPUs e, de fato, é mais eficiente manter uma tarefa de thread único em uma única CPU.
O problema aqui é que o script R em questão não foi escrito para ser multiencadeado.
fonte
Se seu processo render ao mapReduce, você poderá dividir o script em partes e executar cada parte em uma CPU diferente.
fonte
Não é
kernel
quem decide como usarCPU
. Se o seu script for projetado para ser multiencadeado, somente ele usará outros encadeamentos.fonte