Sem multiencadeamento com R no Linux

2

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%.

insira a descrição da imagem aqui

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

frogatto
fonte
1
parece que seu script R foi escrito para ser de thread único. É importante que o programador determine e defina qual o grau de paralelismo que sua aplicação possui, para evitar as muitas armadilhas da programação paralela, para que nenhum sistema operacional execute apenas bits de um processo em qualquer instalação de processamento livre. o programa deve ser escrito para explicar quais bits podem ser executados separadamente.
22415 Frank M. Thomas
@FrankThomas Parece que os scripts R não podem ser escritos por natureza multiencadeada. Então, existe alguma solução alternativa para acelerar minha análise?
Frogatto
@ HiI'mfrogatto, você está enganado. O link que o choroba já postou mostra como escrever scripts R multiencadeados.
ChrisInEdmonton

Respostas:

4

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.

ChrisInEdmonton
fonte
0

Se seu processo render ao mapReduce, você poderá dividir o script em partes e executar cada parte em uma CPU diferente.

tkg
fonte
-1

Não é kernelquem decide como usar CPU. Se o seu script for projetado para ser multiencadeado, somente ele usará outros encadeamentos.

Amit Singh
fonte