Поведение при распределении общей памяти в Linux

#linux #shared-memory

#linux #разделяемая память

Вопрос:

Сначала немного предыстории: мы использовали это руководство, чтобы поместить нашу папку Minecraft world (размер которой с нашими настройками не превысит 150 МБ или около того) в папку общей памяти Linux. Мы создаем резервные копии каждые 10 минут на жесткий диск с помощью rsync. Это должно уменьшить количество операций ввода-вывода, которые приходится выполнять жесткому диску (одному диску емкостью 1 ТБ).

Мы настроили это вчера вечером, но забыли, что каждый вторник вечером также запускается наша программа резервного копирования (которая создает резервные копии всего сервера на другой компьютер в сети). Обычно это не проблема, но на этот раз наш сервер впал в кому. Он начал заменять память, потому что у него закончилась оперативная память.

Теперь я нахожу это немного странным, поскольку я думаю, что общая память выделит только 150 МБ в ОЗУ для хранения данных. Можно подумать, что при установленном 4 ГБ это не имеет большого значения.

Мой вопрос: действительно ли общая память выделяет столько места в ОЗУ, сколько объем данных, которые вы в нее помещаете, или она ведет себя по-другому (например, резервирует большие блоки)? Мне трудно найти информацию об этом в сети.

Если бы вы могли дать несколько других советов о том, почему сервер мог взбеситься, пожалуйста, сделайте это.

Комментарии:

1. Очевидное предложение, но почему бы не попробовать отслеживать использование памяти вашими процессами?

Ответ №1:

Вероятно, вы можете узнать, что вам нужно, используя

 df /dev/shm
du -shc /dev/shm/minecraft/world/*
  

Или вы можете использовать лучший способ и создать отдельное подключение и ограничить его:

 mkdir /tmp/minecraft
sudo mount -o size=150M,noexec,nodev -t tmpfs none /tmp/minecraft
  

HTH

PS: это монтирование вполне возможно настроить из fstab, например

 none  /mnt/minecraft tmpfs   auto,size=400M,noexec,nodev 0 0