Я испытываю медлительность при создании кластеров с использованием пакета parallel
.
Вот функция, которая только создает, а затем останавливает кластер PSOCK, с узлами n
.
library(parallel)
library(microbenchmark)
f <- function(n)
{
cl <- makeCluster(n)
on.exit(stopCluster(cl))
}
microbenchmark(f(2), f(4), times = 10)
## Unit: seconds
## expr min lq median uq max neval
## f(2) 4.095315 4.103224 4.206586 5.080307 5.991463 10
## f(4) 8.150088 8.179489 8.391088 8.822470 9.226745 10
Моя машина (достаточно современная 4-ядерная рабочая станция под управлением Win 7 Pro) занимает около 4 секунд, чтобы создать два кластера node и 8 секунд для создания четырех кластеров node. Это показалось мне слишком медленным, поэтому я попробовал одно и то же профилирование на коллеге, идентично обработанной машиной, и потребовалось одну/две секунды для двух тестов соответственно.
Это предполагает, что у меня может быть некоторая нечетная конфигурация, установленная на моей машине, или что есть еще одна проблема. Я прочитал страницы справки ?makeCluster
и socketConnection
, но не видел ничего, связанные с улучшением производительности.
Я смотрел в диспетчере задач Windows во время работы кода: не было очевидных помех антивирусному или другому программному обеспечению, а только процесс Rscript, работающий на ~ 17% (менее одного ядра).
Я не знаю, где искать источник проблемы. Существуют ли какие-либо известные причины медленности с созданием кластера PSOCK под Windows?
Является ли 8-секундное создание кластера 4- node на самом деле медленным (по стандартам 2014 года), или мои ожидания слишком высоки?