为什么我的R在运行step()等函数时会使用所有CPU内核?

时间:2016-11-26 22:56:25

标签: r cpu cpu-usage ubuntu-server cpu-cores

我的R经常显示在" top"中使用超过100%的CPU,是否意味着它使用超过1个核心?据我了解,除非使用某些并行计算软件包,否则R默认使用1核CPU。但我只是使用step()函数。它的戴尔T410 + Ubuntu服务器14.04 + R 3.3.2。

R 3.3.2或Dell服务器或Ubuntu Server 14.04是否有帮助?或者它只是" top"?

的错误
top - 17:42:39 up 11:09,  2 users,  load average: 16.00, 16.01, 15.98
Tasks: 282 total,   3 running, 279 sleeping,   0 stopped,   0 zombie
%Cpu(s): 14.9 us, 85.1 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:  24668964 total, 23472468 used,  1196496 free,   229884 buffers
KiB Swap: 25145340 total,       60 used, 25145280 free.  1117020 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                             
17704 can       20   0 21.495g 0.020t  13016 R  **1540** 87.1   4458:52 rsession                            
17748 can       20   0   26632   1780   1172 S   0.7  0.0   0:50.62 top                                 
 2528 can       20   0  105660   2276   1260 S   0.3  0.0   0:00.01 sshd   

1 个答案:

答案 0 :(得分:1)

即使您的代码在技术上是单线程的,R经常看起来使用多个核心。这经常发生,因为R在不同处理器之间切换太快而无法注意到。我创建了下面的代码作为示例。当我在Windows 10机器上运行它时,我看到有两个处理器在努力工作。

library(microbenchmark)

pb <- txtProgressBar(min = 0, max = 100, style = 3)

for(i in 1:100) {
  microbenchmark(rnorm(10000), runif(10000), rpois(10000, 1))
  setTxtProgressBar(pb, i)
}
close(pb)

如果您有兴趣了解计算机将尝试使用相同逻辑处理器的情况的更多信息,请查看“处理器亲和力”。&#34;