Можно ограничить контейнер до 512 МБ ОЗУ и 4 ГБ подкачки. Однако, если этот контейнер часто использует память, которая была выгружена, не будет ли он доминировать над ресурсами ввода-вывода запоминающих устройств, содержащих файл (ы) подкачки? Чего я хочу избежать, так это того, чтобы один контейнер закрепил запоминающее устройство со 100% -ным использованием и истощил другие контейнеры, у которых более скромные требования к свопу. В идеале каждый контейнер должен получать свою справедливую долю под нагрузкой и иметь возможность взорваться сверх этого, когда нагрузка позволяет.
Теперь я знаю, что существуют ограничения blkio, и кажется довольно простым ограничить их, но технически это ядро выполняет подкачку, поэтому я не знаю, соблюдает ли оно эти ограничения или подсчитывает ли ошибки страниц в соответствии с этими пределами.
Кто-нибудь знает, возможно ли такое или как настроить, если есть?
редактировать: В OpenVZ есть что-то, называемое vswap, которое будет ограничивать контейнер, который обменивается, даже если на самом деле в системе достаточно свободного места, чтобы страницы «подкачки» находились в ОЗУ, и на самом деле он не собирается для них на диск. Кажется, это то, что мне нужно. Есть ли способ сделать это с «ванильными» контейнерами Linux?
Если у вас регулярно заканчивается ввод-вывод на ваших гипервизорах ... вы сделали это неправильно. Это всегда битва. Ошибки страниц не являются чем-то, что можно ограничить ... поскольку они являются результатом нехватки ресурсов. Единственный способ уменьшить / устранить ошибки страниц - это добавить больше физической ОЗУ или уменьшить / удалить пространство подкачки. Ошибки страницы (несмотря на название) не всегда означают, что произошла «ошибка». Это просто означает, что когда приложение пыталось получить доступ к сегменту виртуальной памяти из ОЗУ ... он больше не был доступен, и ему необходимо повторно прочитать его с диска.
Похоже, что у ваших экземпляров недостаточно оперативной памяти ... и вы пытаетесь решить проблему с помощью файла подкачки. На своп-файлы полагаться не стоит. Они полезны только в тех случаях, когда вам иногда нужно выйти за пределы ограниченной физической памяти в течение короткого периода времени.
Единственный способ уменьшить задержки при вводе-выводе ... - предоставить больше операций ввода-вывода ... или уменьшить / ограничить использование ввода-вывода. Уменьшение / ограничение приведет к тому, что экземпляры будут работать ужасно ... и могут создать дополнительные узкие места в процессоре, пытающемся реализовать квоты для ввода-вывода.