LINUX.ORG.RU
ФорумAdmin

pg_basebackup забирает память ProxMox

 ,


1

1

Добрый день. Поставил на VM centos 8, решил использовать для репликации postgres 12. Но при

sudo -u postgres pg_basebackup -h 10.254.252.15 -p 5432 -U replicators -D /ssd/pgdata/data/ -Fp -Xs -R --progress
. Начинает потреблять ОЗУ на физической машине, на виртуалке htop никакой загрузки не показывает. Память переполняется, VM падает. Такая же беда если просто пробую сделать
sudo -u postgres pg_basebackup -h 10.254.252.15 -p 5432 -U replicators -D /data/backups/ -Ft -z -v 
Бэкап делается, но оперативка ProxMox так же остается загруженной на размер бэкапа, до перезагрузки VM.

Ответ на: комментарий от kerby

Спасибо. Так репликация прошла на 100%, но должна ли так вести себя оперативная память при pg_basebackup, забиваться и не освобождаться после? Не великий мастер администрирования СУБД, но решил, почему бы не начинать потихоньку осваивать. И если можно еще один глурый вопрос про postgres.Должна ли после перезагрузки сервера репликация продолжаться или нужно будет каждый раз запускать процесс.

el_vago ()
Ответ на: комментарий от el_vago

Сложно сказать, что нормально, а что нет. Мало информации. Надо знать сколько ОЗУ доступно Proxmox, сколько выделено для VM c Centos. Есть ли еще виртуалки. Какие.

По поводу продолжения репликации после перезагрузки сервера ничего не скажу. Надо просто пробовать и потом делать какие-то выводы.

kerby ()
Ответ на: комментарий от kerby

Выделено 30Гб памяти из 48Гб, Есть еще две виртуалки с 12Гб и 4Гб. Сервер перезагрузил. Ночью прошел pg_basebackup, сейчас снова вижу, что занято оперативки по величине получившегося бэкапа.

el_vago ()

ProxMox забирает память (при работе с сетью)

Кстати интересный вопрос… Есть похожий случай proxmox 6.2. Под KVM выделена почти вся физическая оперативная память. Во время работы, не связанной с сетью (только короткие запросы), КSM прекрасно работает и высвобождает дублирующую память. Как только запускается процесс передачи по сети (на другую физическую машину) файла большого размера (например, созданный локально бекап) выделяется оперативная память и в последующем не высвобождается.

Есть задумка, что раз процесс работы с сетью - это виртуальное устройство, то под него выделяется память и потом это устройство не уничтожается по причине возможного его использования в дальнейшем.

Есть варианты на куда смотреть?

usvad ()
Ответ на: комментарий от usvad

Сравнил со своей конфигурацией. У меня по умолчанию контроллер оставлен Virtio SCSI (без Single). Большие файлы по сети гонял, но проблем с ОЗУ не замечал. Напишите какой объем файлов вызывает проблему. Попробую у себя. И еще бы скрины ДО и ПОСЛЕ, где видно, что происходит с памятью.

kerby ()
Последнее исправление: kerby (всего исправлений: 1)
Ответ на: комментарий от kerby

https://disk.yandex.ru/i/OP0uOGduD0RdIg https://disk.yandex.ru/i/ERiXtCL2Hd_Q7A

Пояснения: Если никаких дисковых операций не производится, хотя производится бекап силами MSSQL в виртуалке, автоматическое удаление старых архивов, обычная работы MSSQL, то память варьируется от 100Гб до 130Гб (возрастает до 130 при подсчете статистики и бекапировании и потом возвращается на 100 Гб). Однако если производится копирование по сети либо с винта на винт (в виртуалку подаются как отдельные физические), то порог занятости памяти возрастает, KSM немного уменьшает её, но все равно в первоначальное состояние не возвращается и дальше начинает варьироваться от нового состояния, пока не достигнет предела памяти.

usvad ()
Ответ на: комментарий от usvad

Обратил внимание на [balloon = 0] в свойствах memory. По идее это принудительное отключение. Эта штука должна отвечать за автоматическое распределение свободной памяти между хостом и виртуалками. То есть за ее высвобождение также.

Не могу нагуглить сейчас, но когда-то наткнулся на статью, где не рекомендовалось использовать эту технологию на vm c windows. И я целенаправлено не использовал это.

Чтобы balloon работал, с диска virio должен быть установлен драйвер. После установки в винде появляется соответствующая служба. Она должна быть запущена. Тогда если установить галку Ballooning Device и указать диапазон выделяемой памяти, то это все должно заработать.

Но так как я не пользуюсь этим, то я просто не устанавливаю драйвера balloon и служба у меня не создается. Все работает хорошо.

Проверьте у себя это. Установлены ли драйвера и служба balloon. Работает ли она. Попробуйте сравнить результаты когда служба запущена/остановлена/не существует.

kerby ()
Последнее исправление: kerby (всего исправлений: 1)
Ответ на: комментарий от kerby

Ballon в 0 постевлен был, т.к. в противном случае неадекватно память в виртуалке отображалась и выделялась.

«Чтобы balloon работал с диска virio должен быть установлен драйвер. После установки в винде появляется соответствующая служба. Она должна быть запущена. Тогда если установить галку Ballooning Device и указать диапазон выделяемой памяти, то это все должно заработать.»

Ок, спасибо, посмотрим в эту сторону.

usvad ()
Ответ на: комментарий от kerby

ProxMox забирает память (при работе с сетью)

Проблема решена и не связана с proxmox.

При копировании файла по сети и не только (любое копирование с диска на диск или в другую папку) на госте kvm windows растет память из категории standby. Данный рост не отображается через Task manager, однако прекрасно виден через стандартный инструмент windows Resource manager.

После очистки памяти Standby через дополнительные инструменты, например, через RAMMap из инструментария sysinternals Руссиновича, KSM proxmox в дальнейшем прекрасно отрабатывает и дедублицирует освободившую память.

Кому интересно - растет память standby из категории mapped file.

Всем спасибо.

usvad ()
Ответ на: комментарий от kerby

Balloning only for RAM

https://pve.proxmox.com/wiki/Dynamic_Memory_Management#Ballooning

«Полеты на воздушном шаре» Расширение памяти (только KVM) позволяет гостю динамически изменять использование памяти, удаляя неиспользуемую память во время выполнения. Это уменьшает влияние, которое ваш гость может оказать на использование памяти вашим хостом, возвращая хосту неиспользуемую память.

Хост Proxmox VE может ссужать увеличенную память занятой виртуальной машине. Виртуальная машина решает, какие процессы или страницы кэша нужно выгрузить, чтобы освободить память для балуна. Виртуальная машина (Windows или Linux) лучше всех знает, от каких областей памяти она может отказаться, не влияя на производительность виртуальной машины."

https://translate.google.com/translate?sl=en&tl=ru&u=https://pve.proxmox.com/wiki/Dynamic_Memory_Management%23Ballooning

anonymous ()