2016-11-26 10 views
3

My R은 "상단"에서 100 % 이상의 CPU를 사용하는 것으로 나타났습니다. 이는 1 개 이상의 코어를 사용한다는 의미입니까? 알다시피, R은 특정 병렬 컴퓨팅 패키지를 사용하지 않는 한 기본적으로 CPU 코어 1 개를 사용합니다. 하지만 그냥 단계() 함수를 사용하고 있습니다. Dell T410 + 우분투 서버 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 컴퓨터에서 실행하면 두 개의 프로세서가 제대로 작동하지 않습니다.

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) 

컴퓨터가 동일한 논리 프로세서를 고수하려고하는 상황에 대해 더 자세히 알고 싶으면 "프로세서 선호도"를 찾아보십시오.