Альтернатива 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"))

Надеюсь это поможет.