Использование памяти bhyve не соответствует конфигурации

636
GiantTree

В настоящее время я использую гипервизор bhyve в своей системе FreeNAS, но, имея только 16 ГБ ОЗУ, использование виртуальных машин более или менее перегружено системой.

У меня сейчас только одна виртуальная машина, на которой работает Debian.

Это его конфигурация:

Getting debianguest iohyve properties... bargs -A_-H_-P boot 1 con nmdm1 cpu 2 description Wed Feb 8 18:16:58 CET 2017 install no loader grub-bhyve name debianguest os debian persist 1 ram 3G size 50G tap tap0 template NO vnc NO vnc_h 600 vnc_ip 127.0.0.1 vnc_tablet NO vnc_w 800 vnc_wait NO 

Важным битом является то, ram=3Gгде он определяет объем виртуальной памяти, доступной для виртуальной машины.

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

Выход из ps aux -O %mem:

root 28769 9.1 32.2 7519108 5357236 - S 8:28PM 18:21.80 bhyve: ioh-debia 

Выход из htop:

PID USER PRI NI VIRT RES S CPU% MEM% TIME+ Command 28769 root 20 0 7342M 5233M S 7.0 32.2 18:30.40 bhyve: ioh-debianguest 

Выход из free -h:

 total used free shared buff/cache available Mem: 2.9G 1.1G 90M 71M 1.8G 1.6G 

В настоящее время используется 5,2 ГБ оперативной памяти, когда настроено только 3.

Он также имеет около 90 МБ свободного места, 1,6 ГБ для приложений и 0 КБ подкачки, что приводит меня к предположению, что гипервизор (bhyve) или ядро ​​каким-то образом теряют память.

РЕДАКТИРОВАТЬ:

Хотя я понимаю, что выделение большего объема памяти для повышения производительности - это хорошая вещь (и я ожидаю этого), заставляя сам процесс подкачки или, что еще хуже, убить OOM Killer, я задаюсь вопросом, насколько агрессивна эта цель для производительности.

Есть ли способ узнать, почему он использует больше оперативной памяти на хосте, чем выделено, и есть ли способ уменьшить объем оперативной памяти, используемой на хосте?

0
Вы не задавали вопрос. Но у вас нет причин подозревать, что какая-то память просочилась. Вы просили 3G внутри виртуальной машины, и именно это показывает виртуальная машина. David Schwartz 7 лет назад 0
Да, но почему на хосте используется 5.2G? Это в основном вопрос, который я задаю. GiantTree 7 лет назад 0
Потому что это может. Почему бы и нет? Это не так, как вы можете сохранить эту оперативную память на потом. David Schwartz 7 лет назад 0
Поэтому я прошу 3G оперативной памяти, и использование 2,2G дополнительно ни к чему не имеет смысла? Проблема в том, что ZFS * очень * чувствителен к ситуациям с нехваткой памяти и хранится в буфере (это означает, что его можно удалить, когда потребуется больше памяти), это может привести к случайным зависаниям (около 5 минут, так что * ничего * не работает) и я боюсь, что он заблокирован в этом состоянии, виртуальная машина даже сообщает о блокировке процессора). GiantTree 7 лет назад 0
Ааа, значит, вы задали не тот вопрос! Ваш вопрос заключается в том, почему память не освобождается при необходимости, а не почему она не используется, когда она свободно доступна. Понятно, что вы должны предпочесть, чтобы дополнительный 2.2G использовался, если это возможно, а не впустую. David Schwartz 7 лет назад 0
Ну, я даже не знаю правильный вопрос, это больше похоже на: он использует больше памяти, чем я его сконфигурировал, и вместо того, чтобы освобождать его, он просто выделяет больше, у меня были случаи, когда он использовал почти 9G, но доступны только 3G на виртуальную машину (использовалось около 1,5 ГБ + буферов). У него нет причин использовать * это * гораздо больше памяти, когда она даже недоступна для виртуальной машины. GiantTree 7 лет назад 0
Есть причина - единственные доступные варианты используют это или тратят это. Поэтому он предпочитает использовать его, так как его потеря не дает никакой выгоды, и его использование может избежать некоторых операций ввода-вывода. Он доступен для виртуальной машины в виде улучшенной производительности, помимо прочего, благодаря отсутствию задержек ввода-вывода. Настройка ОЗУ, которую вы настроили, это количество, которое гость видит как всегда гарантированно доступным. Гипервизор может использовать больше для повышения производительности и будет, если альтернатива тратит эту оперативную память. Но если вы видите проблемы с производительностью, это проблема, и вы должны сказать / спросить нас об этом. David Schwartz 7 лет назад 0
Я собираюсь более внимательно следить за этим, я понимаю, что достижение более высокой производительности, но форсирование использования памяти настолько большим, что его необходимо заменить, не кажется хорошей стратегией здесь. GiantTree 7 лет назад 0
Например, скажем, виртуальная машина записывает 1 ГБ данных на виртуальный диск. Гипервизор может заставить ВМ ждать, пока эти данные не будут записаны на физический диск. Но поскольку он имеет 1 ГБ оперативной памяти, которая в противном случае была бы потрачена впустую, он * должен * использовать эту память для хранения записей до тех пор, пока они не будут сброшены в хост-ОС. И, да, вы правы, если это нужно заменить, это будет проблемой. Но это не то, что вы сообщаете, а не то, о чем вы спрашивали. Если он находится в свободном доступе, его следует использовать. Не иначе, конечно. Но вы не сообщаете о каких-либо проблемах с производительностью или обмене. David Schwartz 7 лет назад 0
Нет, никакой реальной проблемы с производительностью, просто сбой всей виртуальной машины с помощью OOM Killer, потому что у меня недостаточно свободного места (сегодня такое случалось дважды). GiantTree 7 лет назад 0
Как я уже сказал, вы не задали правильный вопрос. Если у вас есть реальная проблема, первое, что вы должны сделать, это описать! David Schwartz 7 лет назад 0
Я не согласен. Хороший вопрос: почему он использует столько памяти? Гипервизор должен либо полагаться на кэширование хоста, либо вообще не кэшировать. Об этом позаботится гостевая ОС. Но на самом деле нет необходимости обсуждать это здесь, и нет необходимости размышлять о том, что происходит. Нужны конкретные факты. Daniel B 7 лет назад 0
@DanielB Я не думаю, что ему интересно, * почему * он использует так много памяти. Но если это так, то ответ таков: это бесплатно, и это может помочь производительности. Я привел конкретный пример выше, буферизацию записи. David Schwartz 7 лет назад 0

0 ответов на вопрос

Похожие вопросы