我正在运行一个multithreading的R程序,但由于主机系统内存不足而导致某些节点崩溃。 有没有办法让每个节点在继续运行之前检查整个系统的可用内存? (机器正在运行Windows Server 2012 R2)
也许下面的一个会帮助(我也在Windows server 2012 R2上):
也许这将是最有用的:
> system('systeminfo') #the output is too big to show but you can save into a list and choose the rows you want
或者只是使用以下具体的内存之一
> system('wmic MemoryChip get BankLabel, Capacity, MemoryType, TypeDetail, Speed') BankLabel Capacity MemoryType Speed TypeDetail RAM slot #0 8589934592 2 512 RAM slot #1 4294967296 2 512
可用内存:
> system('wmic OS get FreePhysicalMemory /Value') FreePhysicalMemory=8044340
可用内存总量
> system('wmic OS get TotalVisibleMemorySize /Value') TotalVisibleMemorySize=12582456
基本上,你甚至可以运行任何你想要的其他命令,你知道它可以帮助你通过system
功能。 R会在屏幕上显示输出,然后你可以保存到一个data.frame,并使用你想要的。
我把LyzandeR的答案包装在一个以千字节(1024字节)为单位返回物理内存的函数中。 测试在Windows 7上。
get_free_ram <- function(){ if(Sys.info()[["sysname"]] == "Windows"){ x <- system2("wmic", args = "OS get FreePhysicalMemory /Value", stdout = TRUE) x <- x[grepl("FreePhysicalMemory", x)] x <- gsub("FreePhysicalMemory=", "", x, fixed = TRUE) x <- gsub("\r", "", x, fixed = TRUE) as.integer(x) } else { stop("Only supported on Windows OS") } }