Je fais une analyse statistique en utilisant R sur le système d'exploitation Ubuntu 15.10. Mon script R prend beaucoup de temps à terminer. Environ 2 à 3 heures.
En attendant, j'ai vérifié la charge de mes processeurs. Je viens de remarquer que tous les processeurs sont presque inactifs, sauf un. Dans l'image ci-dessous, comme vous pouvez le constater, seule la CPU 8 est à 100%.
Pourquoi le noyau Linux n'équilibre-t-il pas la charge de travail de tous les processeurs?
linux
cpu
r
scheduling
Frogatto
la source
la source
Réponses:
Linux équilibre la charge de travail entre tous les processeurs. Cependant, pour ce faire, la charge de travail doit être multithread. Il n'est pas possible de répartir une charge de travail à un seul thread sur plusieurs processeurs et il est en effet plus efficace de conserver une tâche à un seul thread sur un seul processeur.
Le problème ici est que le script R en question n'a pas été écrit pour être multithread.
la source
Si votre processus cède la valeur mapReduce, vous pouvez fractionner le script et exécuter chaque élément sur une CPU différente.
la source
Ce n'est pas
kernel
qui décide comment utiliserCPU
. Si votre script est conçu pour être multi-thread, il utilisera uniquement d'autres threads.la source