2016-12-07 2 views
1

R에 자주 parallel::detectCores()을 사용하여 병렬 처리를 위해 호스트의 CPU 코어 수를 얻습니다. 의 수를 계산하고 싶습니다.유휴 코어를 계산할 수 있습니다. 코어 중 일부가 다른 사용자에 의해 사용되는 경우 내 프로그램을 위해 코어를 사용하고 싶지 않습니다. 프로그래밍 방식으로이 작업을 수행 할 수있는 방법이 있습니까?사용 가능한 코어 및 유휴 코어 감지 R

+0

나는 이것이 가능하다고 생각하지 않지만 나는 또한 그것을 알고 싶어합니다! – clemlaflemme

답변

1

여기에 시스템 명령어와 정규 표현식을 사용하여 각 프로세서의 유휴 시간을 얻는 방법이 있습니다. 이것은 다른 성능 메트릭 (예 : 시스템 시간)을 허용하는 옵션이있는 함수로 확장해야합니다.

library(doParallel) 

# total cores 
N_CORES <- detectCores() 

# create list for readable lapply output 
cores <- lapply(1:N_CORES, function(x) x - 1) 
names(cores) <- paste0('CPU', 1:N_CORES - 1) 

# use platform specific system commands to get idle time 
proc_idle_time <- lapply(cores, function(x) { 
    if (.Platform$OS.type == 'windows') { 
    out <- system2(
     command = 'typeperf', 
     args = c('-sc', 1, sprintf('"\\processor(%s)\\%% idle time"', x)), 
     stdout = TRUE) 
    idle_time <- strsplit(out[3], ',')[[1]][2] 
    idle_time <- as.numeric(gsub('[^0-9.]', '', idle_time)) 
    } else { 
    # assumes linux 
    out <- system2(
     command = 'mpstat', 
     args = c('-P', x), 
     stdout = TRUE) 
    idle_time <- as.numeric(unlist(strsplit(out[4], ' {2,}'))[12]) 
    } 
    idle_time 
}) 
+0

이 제안을 해주셔서 감사합니다. 그것은 작동합니다! –