【问题标题】:Set Niceness of PSOCK cluster in R在 R 中设置 PSOCK 集群的 Niceness
【发布时间】:2016-10-10 18:23:42
【问题描述】:

我想增加我的集群作业的友好度。以下代码成功:

> cl <- makePSOCKcluster(rep('localhost', 2))
> clusterEvalQ(cl = cl, rnorm(3))
[[1]]
[1] -0.6452848 -0.9899609  0.3083131

[[2]]
[1]  1.1687733 -0.1930413  1.1576510

然而,事实并非如此。

cl <- makePSOCKcluster(names = rep('localhost', 8), renice = 15)
nice: +15: No such file or directory

我可以在集群创建后使用以下代码设置 niceness:

clusterEvalQ(cl = cl, tools::psnice(value = 15))

阅读makePSOCKcluster 的文档后,我不确定我在集群创建步骤中做错了什么,并且无法追查问题。如何创建一个集群并同时设置工作线程的好坏?

【问题讨论】:

    标签: r parallel-processing renice


    【解决方案1】:

    我认为这是“并行”包中的一个错误。当您使用 makePSOCKcluster“renice”选项时,它使用一种形式的“nice”命令,它不适用于 bash,但我相信它适用于 csh/tcsh。您可以使用“manual=TRUE”选项查看生成的命令:

    > library(parallel)
    > cl <- makePSOCKcluster(2, renice=15, manual=TRUE)
    Manually start worker on localhost with
      nice +15 '/home/sw/R/sources/R-3.3.0/bin/Rscript' --default-packages=datasets,utils,grDevices,graphics,stats,methods -e 'parallel:::.slaveRSOCK()' MASTER=localhost PORT=11379 OUT=/dev/null TIMEOUT=2592000 XDR=TRUE 
    

    如果您尝试从 bash 执行此操作,您将收到与您报告的相同的错误消息。 bash 的语法应该是:

    $ nice -n 15 '/home/sw/R/sources/R-3.3.0/bin/Rscript' ...
    

    【讨论】:

    • 谢谢 - 我不知道“manual = TRUE”选项。以后我会用它来调试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 2020-04-22
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 2020-03-07
    相关资源
    最近更新 更多