Линукс, 1С и HYPER-V

1. smaharbA 17.06.17 17:14 Сейчас в теме
Решил побаловаться 1с на линуксе, сервер.
Исходные:
Железка - ASUS P9D-M Series
Памяти - 32 Гб 1600
Диск - WDC WD1004FBYZ-01YCBB1
Процессор - Intel® Xeon® CPU E3-1220L v3 @ 1.10GHz

Гипервизор - Hyper-V 2016
Операционка - Debian jessie 8.8 x86_64
Ядро - 4.9.25 (uksm)

Памяти выделил - 16 Гб
Виртуальных процессоров - 4 (в соответствии с железкой)
Системный раздел/Подкачка - файл vhdx 30 Гб
Системный раздел - 27 Гб, ФС - ext4
Подкачка - 3 Гб

СУБД - PostgreSQL 9.4 (адинесовский)
Отдельный диск для баз - файл vhdx, 127 ГБ
ФС диска СУБД - btrfs zlib

Все опции монтирования для снижения затрат на разделах указаны.

Настройки PostgreSQL - так скажем усредненные из массы источников. Всякие схммакс и схммалл заданы.

Тест Гилева показал "Колоссальный" результат - 1.62 !!! )

В чем цимус ?


ПС: Пока небыло времени проверить не на btrfs, а на ext4, но думается не спасет.
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
12. collider 19.06.17 07:24 Сейчас в теме
(1) А можно было процессор ещё помедленнее найти? А то, 1.1 гигагерц в 2017 году чёт многовато.
И это всё в гипервизор обёрнуто. Ещё и диск на 7200 оборотов!
Это сервер не для 1С и точка. Ты тут хоть заоптимизируйся, он всё равно будет работать медленно.
Так, вкратце подскажу по-секрету, что при выборе серверов для 1С надо смотреть в первую очередь на тактовую частоту процессора, во вторую на скорость дисков.
На остальном уже можно экономить, если уж совсем мало денег.
+
2. smaharbA 17.06.17 22:24 Сейчас в теме
Да, еще вопрос к фрагстеру в том числе.
+
3. starik-2005 3036 17.06.17 22:43 Сейчас в теме
1.1 Гигагерц говорят сами за себя. Также гипервизор мог докучи не иметь настроек аппаратной поддержки виртуализации, что еще раз в пять может
снизить производительность.

Чтобы по-простому затестить бенч железки можно поставить редис и дернуть его бенчмарк для set и get. Если меньше 100к - это просто нехорошо.

У мну на рабочем ноуте с 7-й виндой виртуалбокс + убунту + постгрес 9.5 + 1с-сервер 8.3.9 на железе i7-5500u с двумя выделенными ядрами в гилеве выдает до 20 попугаев. Настройки постгреса обычные с pgtune для датаварехауса.
+
5. smaharbA 18.06.17 15:46 Сейчас в теме
(3) Спасибо конечно за рекомендации, но видимо Вы не внимательно прочли параметры железки.
+
7. starik-2005 3036 18.06.17 18:04 Сейчас в теме
(5)
но видимо Вы не внимательно прочли параметры железки
А что за параметры такие? Процессор явно слабый, если пишите, что он 1,1 ГГц. Ни для кого не секрет, что 1С требовательна к частоте. Есть реальная зависимость частоты процессора и теста Гилева. Например, процессор I7 3GHz в бусте будет в файловой версии показывать где-то 50-55 попугаев. В серверной, если клиент и сервер на одной машине, то в районе 20, если включен режим максимальной производительности в винде (без него - 12-15). В итоге имеем 1,1 ГГц процессор, который в бусте может гнаться и до 1,5 ГГц, если в БИОС это все включено. Получаем примерно в 2-3 раза меньший показатель производительности, т.е. без включенного буста и в режиме сбалансированного электропитания где-то 4-5 попугаев. Аппаратную виртуализацию проц поддерживает, но, на сколько я знаю, в Hiper-V не все так хорошо с поддержкой Linux-систем:
Hyper-V обеспечивает базовую поддержку виртуализации гостевых Linux-систем в режиме эмуляции устройств, не требуя никаких изменений. Эмулируются контроллеры дисков IDE PIIX4 и PCI Ethernet адаптер DEC 21140 Tulip, однако скорость работы может быть невысокой и существует ограничение 128Гб на диск.

Паравиртуализация достижима при включении модулей ядра Linux или при установке дополнительных компонентов интеграции (Integration Components). Ранние версии компонентов интеграции функционировали как прослойка между интерфейсом гостевого ядра Xen и Hyper-V (Hypercall Translator). Позднее была реализована прямая поддержка шины VMBbus без Xen. 20 июля 2009 Microsoft опубликовала эти драйверы под лицензией GPL, и они были официально включены в ядро Linux (опция STAGING/HYPERV). В процессе работы над драйверами различные компоненты постепенно покидали ветку STAGING и начиная с версии ядра Linux 3.4 были перенесены в основное дерево[14]. Таким образом, дистрибутивы с ядрами новее, чем 2.6.32 могут включать встроенную поддержку паравиртуализации Hyper-V (однако, как правило, не включают). Данные драйвера содержат поддержку шины VMbus и позволяют гостевой операционной системе Linux работать c устройствами в режиме Enlightened I/O. Поддерживаются устройства Synthetic IDE, Synthetic SCSI и Synthetic Ethernet. Поддерживаются SMP до 4 ядер и такие функции, как синхронизация времени (в RHEL5 только для 32-битных систем), остановка системы (shutdown) и проверка активности (heartbeat).

При тесте на I7-7700K (4,2-4,5GHz) в серверной винде, в которой Linux идет "искаропки" посредством команды bash того-же редиса (set,get) получили весьма убогую производительность (в 2 раза меньшую, чем на AMD Ryzen 5 1600 3,2GHz), что говорит о том, что Windows режет производительность гостевых Linux-систем.

Исходя из этого получаем 4-5 попугаев деленное минимум на 2 => 2-2,5. Что и демонстрирует Ваша система.
+
8. smaharbA 18.06.17 18:22 Сейчас в теме
(7)
Аппаратная виртуализация поддерживается более чем полностью.
Частота конечно не высокая, но это версия 3, у них частоты меньше как минимум вдвое от предшественников.
Все же как то маловато 2.64

Испытаю микрокоды загрузить в дебиан от интела.

А так спасибо за раскладку.
+
9. starik-2005 3036 18.06.17 18:29 Сейчас в теме
(8)
Испытаю микрокоды загрузить в дебиан от интела.
Если Вы это о пропиетарных драйверах для процессора, то это не поможет, ибо отвечает за некоторым образом другое.
+
4. starik-2005 3036 17.06.17 22:46 Сейчас в теме
Да, все эти chmmax - это для 32-битных систем. В 64 бита вэтом нет никакого смысла.
+
6. smaharbA 18.06.17 15:49 Сейчас в теме
Да еще попутно вопрос - обязательно нужен сервер x86_64 или пойдет и 32х разрядный ?
Исходные - клиентов порядка 15 в пределе, баз около 20 штук, базы БП, БСО (основные штук 12) и пара тройка ЗУП.
Оборот документов можно сказать - ну очень маленький, штук 100 - 200 в месяц на базу.
Да, еще - возможность сделать сервер 1С x86, а PostgreSQL x86_64 - существует, разнести на разные виртуалки так же не составляет затруднений (правда прироста в тестах нет, при работе может и разгрузит).

ПС: Проверил тест Гидева, без активных других базах (до этого на другой базе шло ТИИ - длительность которого и смутила заставив прогнать тест), вышло небольшое улучшение, но все равно ну очень слабо - 2.64.
Конечно не надеялся даже и на 30-40 попугаев, но на 10-15 расчитывал ((
+
10. smaharbA 18.06.17 20:28 Сейчас в теме
Не дриверы это, помоч конечно радикально не поможет, но несколько оптимизирует выполнение.
+
11. ansh15 19.06.17 00:27 Сейчас в теме
(10) online_analyze выключи, он уменьшает на 5-6 баллов результат.
fsync и full_page_writes тоже можно выключить, раз SATA диск просто.
При принудительном уменьшении тактовой посредством cpupower до 1.2 ГГц( на процессорах с 3.4.-3.6 ГГц) результат теста уменьшался с 46-50 до 10-11. Это на физ. сервере с CentOS+PostgreSQL+1C.
Может баллов 6-8 и получится.
+
13. smaharbA 19.06.17 13:26 Сейчас в теме
(11) Спасибо за советы.

(12) А чем этот медленный ?
Вы считаете - производительность процессора прямо пропорциональна частоте ?
Заверю Вас - это часто не так.
+
14. smaharbA 19.06.17 13:35 Сейчас в теме
(11)
Вот и вопрос о том, связка 1с + линукс (сервер), практически не имеет права на существования ?
На той же железке и гиперв - файловый неустает.

(+ железка с ссд и прочими 3600 и т.п. эксплуатируется терминалом)
+
15. starik-2005 3036 19.06.17 13:56 Сейчас в теме
(14)
Вот и вопрос о том, связка 1с + линукс (сервер), практически не имеет права на существования ?
Как раз имеет и показывает, обычно, несколько более высокую производительность., чем 1С + мастдай. Но на данном конкретном экземпляре оборудования и в той виртуальной среде данная связка нежизнеспособна. Вы измеряли на этой машине производительности файловой базы на винде? Предположу, что может и 20-25 показать баллов, что очень неплохо, но при клиент-серверном варианте скорость уменьшится до 8-10 баллов при правильной настройке железа и софта. У меня масса клиентов, у которых винда + скул + сервер на ксеоне с частотой 2.0 ГГц показывают результат в районе 8-9. После перевода в режим высокой производительности и тюнинга настроек скульного сервера (вынос логов на рам-диск или на SSD) скорость взлетает до 18-20. И если у Вас в системе не включен режим высокой производительности и выключен турбобуст, то выше 2,5 будет сложно получить (9 для 2.0 ГГц => 5 для 1.1 ГГц => виртуализация => 2,5 попугаев).

Т.е. в данном случае при таких "скоростях" малосущественно, что у Вас - Linux или MustDie, ибо упирается все в C-State, который, по-сути, является механизмом повышения частоты отдельного ядра процессора для режима высокой нагрузки. 1С работает так: такт на интерпретацию байт-кода и преобразование данных для запроса в SQL, такт выполнения запроса на SQL. В итоге сначала на одном ядре начинает работать 1С, ядро медленно лезет вверх по частоте с 0.5ГГц до 1.1ГГц (с бустом и до 1.5ГГц), но не доползает, ибо 1С уже передает мячик на сторону SQL, который на другом ядре начинает выполнять запрос - запускает планировщик, читает данные - это вообще через DMA работает и не требует процессорного участия совсем, - собирает результат и передает его 1С, после чего ядро SQL курит бамбук, что до этого делало ядро 1С. В итоге частоты этих ядер в некоторый квант времени прыгают от 0.5 до 1,1 (1,5). И какую скорость Вы при этом хотите получить? Если переведете в режим высокой производительности, то ядра зафиксирутся на частоте 1,1 и будут буститься (если включите его в BIOS) до 1,5 в моменты высокой нагрузки,что даст примерно двукратное увеличение производительности. Но большего ждать от этой системы в текущей архитектуре не стоит.

Пример из личной жизни: у меня дома Ubuntu 17.04 + 1c 8.3.10.299 + Postgres 9.6.2. Все это крутится на Ryzen 5 1600 (3,2 GHz). Файловая на виртуалбоксе на винде показывает 59-62,5, файловая в Linux (клиент под Linux) - до 65-70. Клиент-серверная показывает 36-38. Отсюда как бы возникает вопрос о том, что Вы лично считаете нежизнеспособной связкой.
+
22. collider 20.06.17 06:12 Сейчас в теме
(13) Неужели обратно пропорциональна или не зависит вообще? :)

Я 5 лет в конторе 1С-франче подбирал, настраивал, обслуживал сервера 1С и СУБД. У меня за это время сложилось очень чёткое мнение, что тактовая частота больше всего влияет на производительность.
Конечно, есть частота шины и объём кэша. Они тоже влияют. Но не так ощутимо, как тактовая частота.
Если для тебя мой опыт не авторитет, то может быть ты охотнее поверишь 1С:Эксперту.
+
16. smaharbA 19.06.17 16:30 Сейчас в теме
(15)
6 попугаев уже есть, файловый не проверял на этом.
Просто есть указанная железка, эксплуатировалась как шлюз-прокси-почта, файловая помойка - рабочие столы и мои документы пользователей.
Решил испытать серверный вариант на ней, более приличный сервер пока не хотелось дербанить, надеялся, что и на этом 10-15 очков поднимется, чего вполне достаточно для наших условий.

Если добью на этом варианте до 10, то вопрос будет исчерпан.
+
23. smaharbA 20.06.17 12:55 Сейчас в теме
(22) Мне ничей опыт не авторитет, у самого стаж три десятилетия.
+
25. AntonSm 30 20.06.17 13:44 Сейчас в теме
(22) По ссылке очень любопытная информация.
Спасибо.
+
17. starik-2005 3036 19.06.17 18:39 Сейчас в теме
(16)
Если добью на этом варианте до 10
Буст включите, статистику в 5000, лог на рамдиск, остальные параметры по pgtune. Если перенесете виртуалку на VBox, то, предположу, почувствуете некоторое увеличение скорости (чисто для теста).
+
18. ansh15 19.06.17 19:25 Сейчас в теме
(16) https://wiki.debian.org/HowTo/CpuFrequencyScaling
GOVERNOR="performance" надо чтобы было. И убедиться, что во время выполнения теста тактовая поднимается до 1.5 ГГц или около того.
Совсем нет возможности поставить туда что-нибудь побыстрее из E3-12xx?
https://ark.intel.com/ru/products/75052/Intel-Xeon-Processor-E3-1220-v3-8M-Cache-3_10-GHz , например. На таком сразу в космос можно.
+
24. collider 20.06.17 13:06 Сейчас в теме
(23) Смотря что за стаж. Глядя на то, какой ты сервер устраиваешь под 1С, смею предположить, что ты 30 лет программировал, консультировал или ещё что-то, но не администрировал сервера.
В виду этого можно и прислушиваться к тому, что говорят специалисты более опытные в других областях знаний.

А вообще, это оскорбительно по отношению ко всем, кто тут пытался тебе помочь. Мне, вот, точно неприятно было.
Если ничей опыт тебе не авторитет, то зачем вообще просить помощи у зелёных юнцов на форуме?
+
19. smaharbA 19.06.17 21:06 Сейчас в теме
(17)
Буст уже включил на хосте, разнес базу, лог и вынес стат_тмп на рамдиск, увеличилось пока до 7,58.

Спасибо, буду смотреть разное кэширование и прочие параметры.
+
20. smaharbA 19.06.17 21:07 Сейчас в теме
(18)
Тактовая поднялась до 1300, буду смотреть.
Может перенесу терминал на этот, а 1с + постгрес на e3-1240 3.300, там и ссд есть.
+
21. starik-2005 3036 19.06.17 23:37 Сейчас в теме
(19)
увеличилось пока до 7,58
Ну по сравнению с 1,62 - это прогресс - в 4,7 раз! Отличный результат.
+
26. smaharbA 24.06.17 17:36 Сейчас в теме
В общем пока все что могу, "спасибо за подбитые танки"
При всех 1100 "герцах"
легонько делается и десять баранов.
Прикрепленные файлы:
+
27. smaharbA 24.06.17 17:42 Сейчас в теме
И еще пылкие юноши заметьтея. впараллелб еще два десятка баз фонят и делают всякие осв.
+
28. smaharbA 24.06.17 17:47 Сейчас в теме
+ а теперь вопрос, сколько памяти хватит для перечисленного ?
3 6 8 12 ?
Или 128 ?
+
29. smaharbA 24.06.17 18:20 Сейчас в теме
Маленькое добавление, может кто и дурканет

создаем
/etc/sysconfig/srv1cv83

пишем что нипопадя

далее
echo $action | /bin/grep -q start ] && {
        [ -z $SRV1CV8_USER ] && SRV1CV8_USER=usr1cv8
        SRV1CV8_GROUP=`id -gn $SRV1CV8_USER`

        [ -z $SRV1CV8_GROUP ] && SRV1CV8_GROUP=grp1cv8

        if [ -z $SRV1CV8_DATA ]; then
                datadir=`getent passwd $SRV1CV8_USER | /bin/sed 's/.\+:\(\/.\+\):.*/\1/g'`/.1cv8/1C/1cv8
        else
                datadir=$SRV1CV8_DATA
        fi
        /usr/bin/install -o $SRV1CV8_USER -g $SRV1CV8_GROUP -d "${datadir}" > /dev/null 2>&1

        echo ${datadir} > /tmp/SRV1CV8_DATA
        /usr/bin/find "${datadir}" -type d -name "snccntx*" | while read x; do
                /usr/bin/install -o $SRV1CV8_USER -g $SRV1CV8_GROUP -d "$x"
#               /bin/rm "${x}/"*
                /bin/mount | /bin/grep -q "${x}" || /bin/mount -t tmpfs -o noatime,nodiratime,uid=$SRV1CV8_USER,gid=$SRV1CV8_GROUP tmpfs "${x}"
                /bin/mount > /tmp/SRV1CV8_DATA
        done
} > /dev/null 2>&1
Показать


Кому как нравится...
Для небольшого перфоманса плюсиком.

Это без фанатизма и прочих правильностей...
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот