Память показывает девяносто процентов: она заполнена или только кажется
Свободная память, это потраченная впустую память, поэтому высокий процент сам по себе не признак беды. Правильный вопрос не в том, насколько заполнено, а в том, кто держит.
AtlasPVE ·
Эта статья отвечает на
- proxmox память заполнена
- proxmox высокое использование памяти
- proxmox zfs потребление ram
- что такое ballooning в proxmox
- сколько ram нужно proxmox
Вы смотрите на панель, и память на девяноста процентах. Первый порыв, немедленно добавить оперативной памяти. Чаще всего этого не требуется.
Свободная память, это потраченная впустую память. Операционная система использует незанятую память под кэш и отдаёт её, когда она нужна. Значит, высокий процент сам по себе не признак неисправности.
В Proxmox эту картину замутняют ещё два источника.
Первый источник: кэш хранилища
Если вы используете ZFS, он держит прочитанные данные в памяти для быстрого доступа, и эта доля может быть большой. Под давлением он её освобождает. Но до тех пор она выглядит «занятой».
Это не утечка, это сам замысел. На системе, которая раз за разом читает одни и те же данные, такой кэш, самое дешёвое ускорение из возможных, и он ещё снижает износ диска.
Тонкость вот в чём: освобождая, он может освободить не мгновенно. То есть внезапный запрос памяти может встретить короткую задержку. Поэтому в очень тесных установках разумно ограничить кэш сверху; но делайте это по измерению, а не в панике «память заполняется».
Второй источник: память, которую держат гости
Если вы дали виртуальной машине восемь гигабайт, эта машина может выглядеть занимающей восемь гигабайт со стороны сервера, даже когда внутри простаивает. Причина проста: однажды затронутая память остаётся выделенной, пока гость не умеет её вернуть.
Возврат работает, только если гость сотрудничает. Если внутри гостя нет составной части, которая это обеспечивает, отданная память ушла в одну сторону. Ждёте возврата обещанной памяти, сначала убедитесь, что эта часть установлена.
Правильный вопрос: не насколько заполнено, а кто держит
Процент сам по себе не говорит ничего. Значимое разделение такое: какая часть этой заполненности, ваши гости, а какая, сам сервер?
Если гости, положение нормальное; они используют память, которую вы им дали. Если серверная сторона и она неуклонно растёт, тогда там есть на что посмотреть.
Настоящий тревожный знак не процент, а подкачка
Если сервер начал использовать область подкачки, вот это настоящий сигнал. Девяносто процентов заполненности могут не быть проблемой, но сервер, который постоянно подкачивает, медленный и вдобавок изнашивает свой диск.
Проверка: не паникуйте из-за процента, действуйте по активности подкачки.
Обещать больше, чем есть
Вы можете пообещать своим виртуальным машинам в сумме больше памяти, чем у сервера есть на деле. Обычно это работает, потому что все они не достигают пика одновременно.
Но есть правило без исключений: не включайте в обещание собственную долю сервера. Когда у сервера кончается память, падает не одна машина, а всё сразу, включая панель. Между гостями дележ может быть гибким; собственный запас воздуха у сервера, нет.
Что делает Atlas
Atlas показывает график памяти не одним процентом, а делит его на три: что использует сам сервер, что используют гости, и подкачка.
И это деление делается расчётом, а не на глаз: из общей занятой памяти вычитается сумма гостей, а остаток считается долей сервера. Так вы одним взглядом отвечаете на настоящий вопрос выше: эта заполненность, мои машины или сам сервер?
Небольшая, но значимая деталь: для потолка графика берётся последнее известное значение общей памяти, а не то, что в начале ряда. Причина: на длинных отрезках общая память может измениться, и старое значение в качестве потолка показывает график не таким, каков он есть. То есть в день, когда вы добавили машине памяти, график не продолжает рисовать старый потолок и не вводит вас в заблуждение.
Источники
Собственная документация Proxmox. На английском, и последнее слово в этом вопросе за ней.