Для OpenVZ, реализации виртуализации на основе контейнеров, кажется, что хост и все гости совместно используют кеш файловой системы. Если говорить о виртуализации, это звучит парадоксально, но на самом деле это особенность OpenVZ.
Это тоже имеет смысл. Поскольку работает только одно ядро, можно использовать одни и те же страницы кеша файловой системы в памяти. И хотя это звучит выгодно, я думаю, что производительность здесь на самом деле страдает от этого. И вот почему: на самом деле мои машины не обмениваются файлами на диске, поэтому я не могу извлечь из этого пользу.
На нескольких машинах OpenVZ работает MySQL с таблицами MyISAM. MyISAM полагается на кеш файловой системы системы для кэширования файлов данных, в отличие от пула буферов InnoDB. Также известно, что некоторые виртуальные машины выполняют тяжелые и большие операции ввода-вывода в одной и той же файловой системе на хосте. В целях тестирования я запустил cat *.MYD > /dev/null
на какой-то большой базе данных на одном компьютере я видел снижение кеша файловой системы на другом, за которым следил htop
. По сути, это очищает весь полезный кеш файловой системы в гостевых системах (FIFO) и, таким образом, очищает кеши MySQL в гостевых системах. Прав ли я в своем анализе до этого момента?
Теперь пользователи жалуются, что MySQL работает очень медленно. И это. Некоторые простые SELECT
запросы занимают несколько секунд, если дисковый ввод-вывод интенсивно используется другими машинами.
Итак, проще говоря:
Есть ли способ избежать уничтожения кеша файловой системы другими виртуальными машинами при виртуализации на основе контейнеров?
Вместо того, чтобы переходить на KVM или InnoDB (см. Ниже), может быть опция конфигурирования, которую я упускаю.
Некоторые мысли:
man vzctl
)Если нет, я думаю, что мои альтернативы:
balloon
Водитель.Системное программное обеспечение: Proxmox (сейчас 1.9, можно обновить до 2.x). Для виртуальных машин назначен один большой LV.
Помимо идей, которые у вас уже были, вы можете добавить больше оперативной памяти, хотя это кажется дорогостоящим краткосрочным повязкой.
В долгосрочной перспективе лучше всего будет отказаться от OpenVZ.