Я сталкиваюсь с двумя проблемами с памятью в R:
Я не могу достаточно отслеживать использование памяти во время моего сеанса r на сервере Linux внутри моей определенной функции. Я использую gc()
и pryr:mem_usage()
для отслеживания загрузки памяти (поэтому я читаю SO вопросы: Q1 , Q2 ), но это не соответствует фактическому использованию памяти, когдаЯ проверяю это в терминале с помощью команды top
. gc()
и pryr:mem_usage()
показывают мне, например, 8 ГБ или 20 ГБ, но на самом деле это 115 ГБ, когда я проверяю его в терминале ... Где может быть проблема?
Внутри моей функцииЯ запускаю несколько моделей повышения подряд как lightgbm
или xgboost
, которые используют несколько ядер, создают прогнозы, работают с данными и сохраняют их на data.table
(fread
и fwrite
). Во время этих процессов резко возрастает нагрузка на память, я также использую gc()
для освобождения сборщика мусора, но это не помогло. Я обычно запускаю эту функцию несколько раз (ничего не возвращая, все сохраняется в файлах), но всегда с разными предметами для прогнозирования. Моя логика подсказывает мне, что при многократном запуске функции загрузка памяти должна быть постоянной, но она увеличивается до тех пор, пока память не переполнится. Сеанс останавливается, и когда я останавливаю процесс, сеанс выдает предупреждение: Warning message:
In system(cmd, wait = FALSE) : system call failed: Cannot allocate memory
. Только перезапуск сеанса r помогает исправить загрузку памяти, больше ничего не помогает. Есть ли другой способ справиться с возрастающей загрузкой памяти, который не связан с сохраненными объектами в памяти во время сеанса?
Спасибо