R
에 자주 parallel::detectCores()
을 사용하여 병렬 처리를 위해 호스트의 CPU 코어 수를 얻습니다. 의 수를 계산하고 싶습니다. 및 유휴 코어를 계산할 수 있습니다. 코어 중 일부가 다른 사용자에 의해 사용되는 경우 내 프로그램을 위해 코어를 사용하고 싶지 않습니다. 프로그래밍 방식으로이 작업을 수행 할 수있는 방법이 있습니까?사용 가능한 코어 및 유휴 코어 감지 R
1
A
답변
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
이 제안을 해주셔서 감사합니다. 그것은 작동합니다! –
나는 이것이 가능하다고 생각하지 않지만 나는 또한 그것을 알고 싶어합니다! – clemlaflemme