У нас есть выделенный сервер, на котором запущено несколько небольших гостевых виртуальных машин, содержащих, например, HTTP-сервер, MySQL и некоторые приложения реального времени.
Однако мы обнаружили, что JBD внутри гостевых систем часто достигает 100% использования диска примерно каждые 5-10 секунд. Это приводит к зависанию приложений реального времени на ~ 500-1000 мс при попытке доступа к диску, потому что он слишком занят.
В файлах журналов и использовании noatime, nobarrier нет значительной активности, и мы не можем отключить журнал. MySQL и HTTP-сервер выполняют некоторые операции ввода-вывода, но не на 100%.
В данном конкретном случае высокая загрузка операций ввода-вывода была вызвана заданием cron, регулярно выполняющим набор команд chmod и chown. На невиртуальном хосте эти команды выполнялись намного быстрее, но внутри виртуального хоста эти команды выполнялись намного медленнее и вызывали большое время ожидания диска.
После удаления этого набора команд производительность вернулась к норме, и мы больше не испытывали странных зависаний.