2016-11-26 4 views
3

私のRは、 "トップ"で100%以上のCPUを使用していることがよくありますが、それは1つ以上のコアを使用しているということですか?私が理解するように、特定の並列コンピューティングパッケージを使用する場合を除き、Rはデフォルトで1コアのCPUを使用します。しかし、私はちょうどステップ()関数を使用しています。それはDell T410 + Ubuntu Server 14.04 + R 3.3.2です。step()のような関数を実行しているときにRがすべてのCPUコアを使用するのはなぜですか?

R 3.3.2ですか、Dell ServerまたはUbuntu Server 14.04が役立つのですか?それとも、「トップ」のバグですか?

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 
+0

万が一Revolution R/Microsoft Rを使用していますか? –

答えて

1

Rは、コードが技術的にシングルスレッドの場合でも、複数のコアを使用することがよくあります。これは、Rが異なるプロセッサ間で切り替えるのが速すぎるために頻繁に発生します。以下のコードを例として作成しました。 Windows 10マシンで実行すると、2つのプロセッサーが動作しているのがわかります。

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) 

コンピュータが同じ論理プロセッサを使用しようとする場合の詳細については、「プロセッサアフィニティ」を参照してください。

関連する問題