Ускорение запуска конфигуратора и DFSS

24.04.15

База данных - Инструменты администратора БД

Известный и уважаемый Вячеслав Гилёв опубликовал рекомендации по ускорению запуска конфигуратора - http://www.gilev.ru/dfss и http://infostart.ru/public/348963 https://plus.google.com/114728939911168275213/posts/96v6bNvnLJP. При все моем уважении к автору, я тем не менее не соглашусь с приведенными рекомендациями. Точнее не самими рекомендациями - они как раз приводят к нужному результату, а к постановке вопроса и самому решению.

Собственно, у меня два замечания к указанной статье:

1. Подача в общем-то низкоуровневых исправлений без малейшего объяснения побочных эффектов и каких-либо ссылок на документацию. Для автора такого уровня компетенции это выглядит странно.

2. Решения задачи можно добиться и менее радикальными методами, чем изменение опций ядра Windows.

Для начала немного лирики.

Работа в терминальной многопользовательской среде, безусловно, имеет свою специфику. К сожалению, далеко не все приложения эту специфику учитывают. Здесь и использование ресурсов сверх необходимости - режим "я дома один" см. 1С:Предприятие 7.7 и ВК Terminal Sleep, и непродуманные визуальные эффекты - та же заставка 1С:Преприятие 7.7 и градиентная заливка 1С:Предприятие 8.2 Турбо-милк.

С другой стороны, не всем приложениям учет такой специфики требуется - для них вполне достаточно стандарных требований к разработке Windows приложений. К числу последних я отнесу и обсуждаемый Конфигуратор.

Теперь про DFSS.

Возьмем гипотетический пример. Имеем терминальный сервер с 4 процессорами, имеющими производительность 1000 попугаев каждый. Итого 4000 попугаев. Запускать на серверах мы будем только программы 1С. Поскольку 1С однопоточное приложение (строго говоря это не так, но на практике влиение остальных потоков малозначительно), то каждое 1С приложение может использовать только один процессор и максимально сможет работать со скоростью 1000 попугаев.

На терминал заходит мега-разработчик и открывает Конфигуратор. При запуске Конфигуратор получит свои 1000 попугаев. Все нормально. Закроем приложение. И запустим одновременно 4 Конфигуратора. Что произойдет? А ничего, все получат свои 1000 попугаев. Опять все закрываем. 

Теперь в терминал зашел пользователь и запустил в Предприятии отчет с большой постобработкой результата встроенным языком. ОК. Получит 1000 попугаев. Пока все как обычно.

А если запустить формировать отчет и открывать Конфигураторы? Выделить 5000 попугаев операционка уже не сможет, поэтому выдаст всем поровну - по 800 попугаев каждому. Это стандарное поведение системы, опять же ничего необычного. Но все ли здесь нормально? Нет, не все. Получается, что чем больше пользователь запустит ресурсоемких операций тем больше он будет мешать другим пользователям работать.

Для исправления ситуации Microsoft начиная с Windows Server 2008 R2 на уровне ядра выделила еще один разрез для распределения ресурсов - сессию. Соответственно, появился механизм DFSS - Dynamic Fair Share Scheduling (вольн. -Динамическое честное распределение ресурсов).

Что произойдет при включенном DFSS в третьем сценарии? Система отработает уже по другому - сначала поделит ресурсы пополам (у нас две сессии), т.е. каждый пользователь получит 2000 попугаев. Теперь формирование отчета получит 1000 попугаев, а каждый конфигуратор 500. Все по честному (fair) - у каждого пользователя одинаковое количество ресурсов, а дальше уже его право распоряжатся выделенными ему ресурсами как угодно (можно даже запускать 1С:Предприятие 7.7 без ВК Terminal Sleep). Теперь никакая нагрузка пользователя не повлияет на работу других пользователей.

Как это выглядит в документации, можно посмотреть здесь: https://technet.microsoft.com/en-us/library/dd560667(v=ws.10).aspx#BKMK_4

Windows Server 2008 использовал DFSS только для регулирования ресурсами процессора, но идея оказалась столь хороша, что в Windows Server 2012 DFSS рулит еще и дисковыми операциями и полосой пропускания сети. 

Замечу также, что DFSS включается по умолчанию при установке роли Remote Desktop Services и явлется опцией ядра - т.о. его изменение требует перезагрузки ОС.

Решение проблемы.

Вернемся в медленному запуску конфигуратора. Можем ли мы как-то ускорить его запуск без отключения DFSS? Конечно, можем! Вспомним, что DFSS для управления использует сессии пользователей, т.е. если мы можем выделить мега-разработчиков из сонма пользователей, то, возможно, для них получится более "честно" настроить политику выделения ресурсов. Ну а если не можем (да у нас каждый второй запускает конфигуратор), то, возможно, получится выделить процесс конфигуратора из всех остальных.

Для решения задачи используем WSRM - Windows System Resource Manager https://technet.microsoft.com/en-us/library/cc755056.aspx (Q&A на русском: https://technet.microsoft.com/ru-ru/windowsserver/bb405954.aspx )

В оснастке WSRM есть раздел "Process Matching Criteria". При создании нового критерия отбора процессов можно указать конкретное приложение (можно даже просто имя файла 1cv8.exe) и пользователей (группы пользователей) входящих в критерий. В разделе "Resource Allocation Plolicies" можно установить, что для определенного критерия (например 1cv8.exe и i.petrov) установить выделение 50% процессорной мощности системы. И мы решили проблему медленного запуска конфигуратора у пользователя i.petrov. Правда под критерий попадает еще и толстый клиент, но это скорее бонус для i.petrov.

К сожалению, в Windows Server 2012 WSRM признана устаревшей, и заменена Hyper-V имеющий схожую функциональность. https://technet.microsoft.com/library/hh831568.aspx Здесь Microsoft лукавит - Hyper-V не занимается регулированием процессов, но оставим это на совести Microsoft. Возможно, эта функция будет полезна в Windows Server Next, гда появится поддержка Docker, но это будет уже завтра. http://news.microsoft.com/2014/10/15/dockerpr/

Но и здесь есть выход. Вспомним, что DFSS рулит еще и дисковыми ресурсами, а конфигуратор при открытии как раз и занимается усиленной работой с диском. Т.е. вполне достаточно установить в "0" TSFairShare (п. 2 в статье). Кстати появится еще один полезный эффект - повысится скорость работы с локальными файловыми базами 1С:Предприятия 8, и с базами 1С:Предприятия 7.7 (ну вдруг!) как для файлового, так и для SQL-варианта.

Теперь подойдем с другой стороны. Есть ли необходимость изменения опций ядра для запуска Конфигуратора 1С?

Скорее всего, нет. Сценарий, когда есть терминальный сервер или терминальная ферма, на которой разработчик будет работать наравне с пользователями, нарушает как минимум принцип разделения рабочей и тестовой среды. Если же запуск конфигуратора является эпизодическим (например, для удаленного внесения изменений), то такое решение носит избыточный характер, см. "от головной боли помогает топор". Особенно на фоне выгоды в 30 секунд.

Окончание.

Вернемся обратно к озвученным мной замечаниям:

1. Необходимо добавить ссылки:

1.1. про DFSS https://technet.microsoft.com/en-us/library/dd560667(v=ws.10).aspx#BKMK_4

1.2. Фрагмент "(gwmi win32_terminalservicesetting -N "root\cimv2\terminalservices").enabledfss" заменить на полный формат

Get-WmiObject -Class win32_terminalservicesetting -Namespace root\cimv2\terminalservices | 
	Format-List EnableDFSS,EnableDiskFSS,EnableNetworkFSS

и дать ссылку на https://msdn.microsoft.com/en-us/library/aa383640(v=vs.85).aspx

1.3. Дополнить п.1 возможностью устанавливать значение групповой политикой: Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Connection\Turn off Fair Share CPU Scheduling https://technet.microsoft.com/ru-ru/library/ee791922(v=ws.10).aspx

2. Достаточно выполнить только п.2 из статьи.

DFSS Конфигуратор

См. также

SALE! 15%

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 7140 руб.

20.08.2024    7763    55    22    

66

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 18.09.2024, версия 1.2

16800 руб.

06.12.2023    8839    42    5    

73

SALE! 15%

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8500 руб.

10.11.2023    10412    36    20    

61

SALE! 35%

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

4800 3120 руб.

14.01.2013    187969    1138    0    

912

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    32665    106    152    

73

Инструменты администратора БД Системный администратор Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием Платные (руб)

Конфигурация Комплексная автоматизация 1.1 (и УПП 1.3 тоже) хранит файлы и изображения в справочнике Хранилище дополнительной информации в реквизите Хранилище типа ХранилищеЗначений. Та же история с ВложениямиЭлектроннойПочты. Но при этом присоединенные файлы в Электронном документообороте хранит в томах на диске. Эта доработка позволяет использовать стандартный механизм хранения файлов, изображений и вложений электронных писем в томах на диске. При этом можно разделить тома хранения по объектам конфигурации.

4200 руб.

10.11.2015    62814    94    59    

79

Архивирование (backup) Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Данная разработка позволит решить вопрос с резервным копированием Ваших баз в автоматическом режиме, расположенных на сервере 1С. Система умеет ставить блокировки на вход, блокировать фоновые задания, принудительно отключать сеансы пользователей. И все это система делает в автоматически при создании бэкапа (или через команду). Выгрузка происходит в родной формат 1С - .dt. Так же система умеет архивировать данные выгрузки с установкой пароля. Умеет менять расширение файла zip или dt на любое указанное вами, что позволит сохранить выгрузки от шифровальщика. Может удалять старые копии выгрузок, оставляя указанное количество резервных копий, начиная с самой поздней. Только для WINDOWS!

6000 руб.

06.11.2012    72787    625    45    

84

Инструменты администратора БД Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Многие сталкиваются с проблемой когда изображения, находящиеся в базе разные по объему и размерам. Менеджеры могут добавить файлы в очень высоком разрешении, объемом свыше 20 Мегабайт. База данных становится слишком большой, выгрузка на сайт идёт медленно и требуется много место на хостинге. Как сжать картинки и уменьшить размер базы 1С? Это можно сделать с помощью данной обработки. Существует возможность выбрать различные варианты для того чтобы уменьшить картинки: в разы, в процентах от первоначального объема, а также сделать картинки одинаковой ширины. В результате размер базы 1С значительно сократится (в зависимости от количества и размера картинок), а изображения станут небольшого объема, равными по ширине, почти без потери качества. Работает на управляемых формах для УТ 11, КА, ERP.

3000 руб.

21.07.2022    9831    7    4    

15
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. nSpirit2 24.04.15 12:57 Сейчас в теме
Спасибо автору отличная статья!
Redokov; Infactum; +2 Ответить
2. zhenyat 8 24.04.15 22:40 Сейчас в теме
Тем не менее отключение dfss на server 2012r2 с ролью remote app полностью решило проблему с 1с 7.7 - порядка 70 пользователей работают совершенно спокойно, в то время как с настройками по умолчанию после 25 все начинали тормозить со страшной силой...
Gilev.Vyacheslav; KilloN; ffgnebel; +3 Ответить
3. Гость 25.04.15 09:23
(2) zhenyat, Вячеслав, перелогиньтесь
PLAstic; Silmariil; +2 2 Ответить
4. yukon 153 27.04.15 11:11 Сейчас в теме
(2) zhenyat,
в то время как с настройками по умолчанию после 25 все начинали тормозить со страшной силой

И вы конечно, провели расследование, сняли показатели производительности и т.п., и начали аккуратно настраивать сервер и отслеживать изменения?
Если возможно, расскажите подробнее.

В общем ожидаемое поведение для 1С:Предприятия 7.7 - т.к. идет интенсивный обмен с диском - mlg-файл, временные файлы, чтение/запись dbf "по дефолту" в WS2012R2 квотируются по сессиям. Необходимо в первую очередь посмотреть на дисковые операции, и раз уж дело дойдет до механизмов DFSS, то постараться ограничится только отключением квотирования дисковых операций.

А вот по процессорам интересно, у вас ВК Terminal Sleep (или аналог) используется?
5. zhenyat 8 27.04.15 11:31 Сейчас в теме
(4) Переход с 2003 на 2012 производили на новогодние праздники, когда 11 января народ вышел на работу и все просто колом встало, было очень не весело. При этом настроили работу с временными файлами на быстрый массив RAID0. Сломали голову что же происходит - диски простаивали, процессорное время занимали "фейковые" процессы, уже сейчас не вспомню, как они там назывались, на каждую сессию - по процессу, по ним вышли на описание этой самой DFSS и рекомендации как ее отключить...
Да, 1С патченная, сервер 8-и процессорный, один процесс 1С при максимальной загрузке занимает максимум 15% времени одного процессора, так что сейчас даже при 60+ пользователях 100% загрузка всех процессоров достигается очень редко
Gilev.Vyacheslav; KilloN; yukon; +3 Ответить
6. yukon 153 27.04.15 12:07 Сейчас в теме
(5) zhenyat,
Переход с 2003 на 2012 производили на новогодние праздники, когда 11 января народ вышел на работу и все просто колом встало, было очень не весело.


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

При вводе новых серверов в эксплуатацию протестируйте только отключение DFSS в части дисковых операций, возможно, для вас, этого будет достаточно.
7. insurgut 208 28.04.15 11:30 Сейчас в теме
Если честно, непонятно, чем ваша статья принципиально отличается от статьи Гилёва. То, что вы ее дополнили ссылками и описанием DFSS? Google с Яндексом вроде еще никто не запрещал, и кому надо легко найдут всю необходимую информацию.
Gilev.Vyacheslav; +1 Ответить
8. yukon 153 28.04.15 12:30 Сейчас в теме
(7) insurgut,
Если честно, непонятно, чем ваша статья принципиально отличается от статьи Гилёва.

Вы же и ответили: "Дополнили ссылками и описанием DFSS"

Google с Яндексом вроде еще никто не запрещал, и кому надо легко найдут всю необходимую информацию.

Собственно, основную причину я написал в самом начале "Подача в общем-то низкоуровневых исправлений без малейшего объяснения побочных эффектов и каких-либо ссылок на документацию". Ключевые слова "низкоуровневую" и "без объяснений". В таком виде статья типичное техножречество - сделай вот эти пассы руками и получишь результат. А почему, зачем - "нет времени объяснять" ™. Для автора уровня Вячеслава подобная подача выглядит несколько странно, а учитывая, что меняются параметры ядра Windows еще и опасно.

Когда было готово уже порядка 80% текста появилась и вторая причина - Вячеслав попросил конкретные дополнения в статью и одновременно забанил, видимо для добавления конструктивности в дискуссии. Так что статья получилась "двойного назначения".
bladeson; GreenDragon; FreZZZeR; segatron; JohnyDeath; tormozit; Mick2iS; ToTMoM; DitriX; zhenyat; qwinter; Evil Beaver; MRAK; +13 Ответить
9. plastyr 23.05.19 09:27 Сейчас в теме
Есть решение проблемы для серверов под Linux?
Оставьте свое сообщение