PostgreSQL 12-1C проведение документов в ~3 раза медленнее на Linux

Lists: pgsql-ru-general
From: Taras Savchuk <taras(at)1adm(dot)ru>
To: "pgsql-ru-general(at)lists(dot)postgresql(dot)org" <pgsql-ru-general(at)lists(dot)postgresql(dot)org>
Subject: PostgreSQL 12-1C проведение документов в ~3 раза медленнее на Linux
Date: 2021-06-04 12:01:43
Message-ID: A2530EEBE32D30489F836E3816E9631384D99BA9@EXCH.o.1adm.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

Доброго дня всем.

Есть тестовый стенд с Hyper-V 2019 (2xIntel E5-2650v2, 256GB RAM, Intel SSDs in RAID):
* Одна VM с сервером 1C
* Две VM c PostgreSQL c идентичными базами (~56Gb, Бухгалтерия 3.0):
1. CentOS 7 c postgresql_12.6_6.1C_x86_64 (интеграция стоит
2. Windows Server 2019 с тем же postgresql_12.6_6.1C_x86_64

Для теста провожу 10 одних и тех же документах в каждой базе 1C/PostgreSQL. Базы идентичны и прямо перед тестом загружаются из ДТ.
На Windows Server проводится за 20 - 30 seconds, на Linux занимает 1м - 1м10с. Виртуалки PostgreSQL крутятся на одном и том же гипервизоре с одинаковыми ресурсами (16 vCPU, 90Гб, места с запасом).
Тюнинг конфига PostgreSQL и/или CentOS результата не дает. На Windows напротив - вижу почти в 3 раза лучшую производительность на дефолтном конфиге.

Что может быть не так?

--
Тарас Савчук


From: Evgenii <itlimited(dot)supp(at)gmail(dot)com>
To: Taras Savchuk <taras(at)1adm(dot)ru>
Cc: pgsql-ru-general(at)lists(dot)postgresql(dot)org <pgsql-ru-general(at)lists(dot)postgresql(dot)org>
Subject: Re: PostgreSQL 12-1C проведение документов в ~3 раза медленнее на Linux
Date: 2021-06-04 12:09:58
Message-ID: 2013FDCA-EC7E-4034-8B4D-219A0DD9D5A8@getmailspring.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

я бы начал с теста на баред-метал инсталяции Win и linux, чтобы сразу исключить путь до диска в VM и особености обработки системных вызовов ядра ОС в виртуальной машине. Сейчас у вас "путь" до процессора, RAM, диска и сети по сути непредсказуем и известен только коду гипервизора.

On июнь 4 2021, at 3:01 дня, Taras Savchuk <taras(at)1adm(dot)ru> wrote:
>
> Доброго дня всем.
>
>
> Есть тестовый стенд с Hyper-V 2019 (2xIntel E5-2650v2, 256GB RAM, Intel SSDs in RAID):
> * Одна VM с сервером 1C
> * Две VM c PostgreSQL c идентичными базами (~56Gb, Бухгалтерия 3.0):
> 1. CentOS 7 c postgresql_12.6_6.1C_x86_64 (интеграция стоит
> 2. Windows Server 2019 с тем же postgresql_12.6_6.1C_x86_64
>
> Для теста провожу 10 одних и тех же документах в каждой базе 1C/PostgreSQL. Базы идентичны и прямо перед тестом загружаются из ДТ.
> На Windows Server проводится за 20 - 30 seconds, на Linux занимает 1м - 1м10с. Виртуалки PostgreSQL крутятся на одном и том же гипервизоре с одинаковыми ресурсами (16 vCPU, 90Гб, места с запасом).
> Тюнинг конфига PostgreSQL и/или CentOS результата не дает. На Windows напротив – вижу почти в 3 раза лучшую производительность на дефолтном конфиге.
>
> Что может быть не так?
>
> --
> Тарас Савчук
>
>
>


From: Sergei Kornilov <sk(at)zsrv(dot)org>
To: Evgenii <itlimited(dot)supp(at)gmail(dot)com>, Taras Savchuk <taras(at)1adm(dot)ru>
Cc: "pgsql-ru-general(at)lists(dot)postgresql(dot)org" <pgsql-ru-general(at)lists(dot)postgresql(dot)org>
Subject: Re: PostgreSQL 12-1C проведение документов в ~3 раза медленнее на Linux
Date: 2021-06-04 12:25:47
Message-ID: 2021421622808868@mail.yandex.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

Привет

> я бы начал с теста на баред-метал инсталяции Win и linux, чтобы сразу исключить путь до диска в VM и особености обработки системных вызовов ядра ОС в виртуальной машине. Сейчас у вас "путь" до процессора, RAM, диска и сети по сути непредсказуем и известен только коду гипервизора.

Поддержу.
Я бы сходу даже предложил гипотезу, что для своей родной системы MS автоматически включает паравиртуальный режим и соответственно выкидывает существенную часть эмуляции железа. А вот для generic виртуалок это весьма вероятно нужно включать явно где-то в настройках.

regards, Sergei


From: Taras Savchuk <taras(at)1adm(dot)ru>
To: Sergei Kornilov <sk(at)zsrv(dot)org>, Evgenii <itlimited(dot)supp(at)gmail(dot)com>
Cc: "pgsql-ru-general(at)lists(dot)postgresql(dot)org" <pgsql-ru-general(at)lists(dot)postgresql(dot)org>
Subject: RE: PostgreSQL 12-1C проведение документов в ~3 раза медленнее на Linux
Date: 2021-06-04 13:11:35
Message-ID: A2530EEBE32D30489F836E3816E9631384D99E9F@EXCH.o.1adm.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

> Привет
>
> > я бы начал с теста на баред-метал инсталяции Win и linux, чтобы сразу
> исключить путь до диска в VM и особености обработки системных
> вызовов ядра ОС в виртуальной машине. Сейчас у вас "путь" до
> процессора, RAM, диска и сети по сути непредсказуем и известен только
> коду гипервизора.
>
> Поддержу.
> Я бы сходу даже предложил гипотезу, что для своей родной системы MS
> автоматически включает паравиртуальный режим и соответственно
> выкидывает существенную часть эмуляции железа. А вот для generic
> виртуалок это весьма вероятно нужно включать явно где-то в
> настройках.

Железное железо под тест быстро организовать - это, конечно, проблема сейчас ) А вариантов кроме "гипервизор виноват" не видно. Попробую на KVM ту же базу посмотреть, такой вариант есть под рукой. Пока прогнал тест сети (iperf): win-win на 40% быстрее win-linux (5,97Gbps vs 3,6Gbps). 40% там, 30% там - так может и набраться на 2 раза.

--
Тарас


From: Taras Savchuk <taras(at)1adm(dot)ru>
To: Sergei Kornilov <sk(at)zsrv(dot)org>, Evgenii <itlimited(dot)supp(at)gmail(dot)com>
Cc: "pgsql-ru-general(at)lists(dot)postgresql(dot)org" <pgsql-ru-general(at)lists(dot)postgresql(dot)org>
Subject: RE: PostgreSQL 12-1C проведение документов в ~3 раза медленнее на Linux
Date: 2021-06-08 09:25:36
Message-ID: A2530EEBE32D30489F836E3816E9631384DA0D6A@EXCH.o.1adm.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

> Привет
>
> > я бы начал с теста на баред-метал инсталяции Win и linux, чтобы сразу
> исключить путь до диска в VM и особености обработки системных
> вызовов ядра ОС в виртуальной машине. Сейчас у вас "путь" до
> процессора, RAM, диска и сети по сути непредсказуем и известен только
> коду гипервизора.
>
> Поддержу.
> Я бы сходу даже предложил гипотезу, что для своей родной системы MS
> автоматически включает паравиртуальный режим и соответственно
> выкидывает существенную часть эмуляции железа. А вот для generic
> виртуалок это весьма вероятно нужно включать явно где-то в
> настройках.
>
> regards, Sergei

А какую из вашего опыта стоит ожидать разницу виртуализация vs железо на том самом оборудовании? Десятки процентов или все же разы?


From: Evgenii <itlimited(dot)supp(at)gmail(dot)com>
To: Taras Savchuk <taras(at)1adm(dot)ru>
Cc: Sergei Kornilov <sk(at)zsrv(dot)org>, pgsql-ru-general(at)lists(dot)postgresql(dot)org <pgsql-ru-general(at)lists(dot)postgresql(dot)org>
Subject: Re: PostgreSQL 12-1C проведение документов в ~3 раза медленнее на Linux
Date: 2021-06-08 09:40:16
Message-ID: 14D311B4-783C-4EA0-90BD-D8BDC483E7FD@getmailspring.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general


Субъективно - разы (может быть даже десятки раз), но для объективного ответа на этот вопрос надо тестировать.
Очень зависит от всех составляющих: и гипервизора, и железа, и настройки самого приложения, и данных в нем, и настройки ядра ОС даже, сетевой стек тоже, если вы гоняете данные по сети (даже если не гоняете - то сетевой стек влияет, т.к. конечная цель пакетов tcp/ip - быть обработанными процессором и попасть в свое приложение, т.е. соседнее приложение тоже занимает процессорное время)

Я говорил про то, что если вы хотите протестировать в равных условиях - то надо избавиться от прослойки в виде гипервизора, а потом крутить настройки дальше.
On июнь 8 2021, at 12:25 дня, Taras Savchuk <taras(at)1adm(dot)ru> wrote:
> > Привет
> >
> > > я бы начал с теста на баред-метал инсталяции Win и linux, чтобы сразу
> > исключить путь до диска в VM и особености обработки системных
> > вызовов ядра ОС в виртуальной машине. Сейчас у вас "путь" до
> > процессора, RAM, диска и сети по сути непредсказуем и известен только
> > коду гипервизора.
> >
> > Поддержу.
> > Я бы сходу даже предложил гипотезу, что для своей родной системы MS
> > автоматически включает паравиртуальный режим и соответственно
> > выкидывает существенную часть эмуляции железа. А вот для generic
> > виртуалок это весьма вероятно нужно включать явно где-то в
> > настройках.
> >
> > regards, Sergei
>
> А какую из вашего опыта стоит ожидать разницу виртуализация vs железо на том самом оборудовании? Десятки процентов или все же разы?


From: Sergei Kornilov <sk(at)zsrv(dot)org>
To: Taras Savchuk <taras(at)1adm(dot)ru>, Evgenii <itlimited(dot)supp(at)gmail(dot)com>
Cc: "pgsql-ru-general(at)lists(dot)postgresql(dot)org" <pgsql-ru-general(at)lists(dot)postgresql(dot)org>
Subject: Re: PostgreSQL 12-1C проведение документов в ~3 раза медленнее на Linux
Date: 2021-06-08 09:50:03
Message-ID: 465951623145063@mail.yandex.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

привет

> А какую из вашего опыта стоит ожидать разницу виртуализация vs железо на том самом оборудовании? Десятки процентов или все же разы?

На внятных дисках - а intel делать SSD умеют и весьма хорошо - запросто в разы разница бывает на IO. Довольно много вещей всё ещё не рассчитано на хорошие быстрые диски. Взять даже аппаратные raid-контроллеры - без аккуратного чтения документации к нему можно легко просесть в 2 раза по IO относительно глупого HBA с программным рейдом. Что уж говорить о виртуализации? Эмуляция периферии никогда не была быстрой. А у вас я всё так же предполагаю причину именно в разнице эмуляции периферии для одного гостя и паравиртуализации в другом госте.

regards, Sergei