2016-11-26 52 views
3

我的R通常顯示在「頂部」使用超過100%的CPU,這是否意味着它使用了超過1個內核?據我所知,默認情況下,R使用1個CPU核心,除非使用某些並行計算軟件包。但我只是使用step()函數。它是戴爾T410 + Ubuntu服務器14.04 + R 3.3.2。爲什麼我的R在運行step()之類的函數時使用所有的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機器上運行它時,我看到兩個處理器正在努力工作。

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) 

如果您想了解更多關於在其中一臺計算機將試圖堅持使用同樣的邏輯處理器,擡頭看情況「處理器關聯。」

相關問題