Альтернатива R 'memory.size()' в linux?
R
memory.size()
только для Windows. Для других функций (таких как windows()
) страница справки дает указатель на не-оконные аналоги.
Но для memory.size()
я не смог найти таких указателей.
Итак, вот мой вопрос: есть ли функция, которая делает то же самое, что memory.size()
но в Linux?
Ответы
Ответ 1
Использование библиотеки pryr:
library("pryr")
mem_used()
# 27.9 MB
x <- mem_used()
x
# 27.9 MB
class(x)
# [1] "bytes"
Результат совпадает с ответом @RHertel, с помощью pryr мы можем присвоить результат переменной.
system('grep MemTotal /proc/meminfo')
# MemTotal: 263844272 kB
Чтобы присвоить переменной системный вызов, используйте intern = TRUE
:
x <- system('grep MemTotal /proc/meminfo', intern = TRUE)
x
# [1] "MemTotal: 263844272 kB"
class(x)
# [1] "character"
Ответ 2
Я думаю, что это должно быть обработано операционной системой. Нет встроенного ограничения, о котором я знаю; если необходимо, R будет использовать всю память, которую он может получить.
Чтобы получить информацию об итогах и/или в доступной памяти в Linux, вы можете попробовать
system('grep MemTotal /proc/meminfo')
или
system('free -m')
или
system('lshw -class memory')
Последняя команда будет жаловаться на то, что вы должны запускать ее как суперпользователя, и она даст предупреждение о том, что вывод может быть неточным; но по моему опыту он по-прежнему будет давать довольно полезный результат.
Чтобы получить информацию об использовании памяти используемого сценария R, можно либо контролировать используемые ресурсы, начиная top
в отдельном терминале, либо использовать, например, следующий системный вызов из сценария R:
system(paste0("cat /proc/",Sys.getpid(),"/status | grep VmSize"))
Надеюсь это поможет.