Detect available and idle cores in R
https://stackoverflow.com/questions/41024035/detect-available-and-idle-cores-in-r
library(parallel) N_CORES <- detectCores() CORES <- round(N_CORES*3/4)
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 })