Não Multi-Threading com R no Linux

2

Estou fazendo uma análise estatística usando o R no sistema operacional Ubuntu 15.10. Meu script R demora muito tempo para ser concluído. Cerca de 2 a 3 horas.

Enquanto isso, verifiquei a carga de minhas CPUs. Eu notei que todas as CPUs estão quase inativas, mas apenas uma. Na imagem abaixo, como você pode ver, apenas a CPU 8 está em 100%.

Por que o kernel do Linux não equilibra a carga de trabalho em todas as CPUs?

    
por Hi I'm Frogatto 16.11.2015 / 16:20

3 respostas

4

O Linux equilibra a carga de trabalho em todas as CPUs. No entanto, para fazer isso, a carga de trabalho deve ser multithreaded. Não é possível distribuir uma carga de trabalho de encadeamento único em várias CPUs e, na verdade, é mais eficiente manter uma tarefa de encadeamento único em uma única CPU.

O problema aqui é que o script R em questão não foi escrito para ser multi-threaded.

    
por 16.11.2015 / 16:22
0

Se o seu processo resultar em mapReduce, você poderá dividir o script em partes e executar cada peça em uma CPU diferente.

    
por 15.04.2016 / 20:54
-1

Não é kernel quem decide como usar CPU . Se o seu script é projetado para ser multi-threaded, então apenas usará outros threads.

    
por 16.11.2015 / 16:30