Ускорение запуска конфигуратора и 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 Конфигуратор

См. также

Автоподбор ролей для профилей и групп доступа в любых типовых базах 1С УТ 11, КА 2, ERP2, Розница 2/3, УНФ 16/3, БП 3, ЗУП 3 и подобных (УФ, Платформа 8.3.14+)

Инструменты администратора БД Роли и права 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, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 15.12.2023, версия 1.1.

12000 руб.

06.12.2023    2967    13    1    

34

SALE! 20%

Infostart УДиФ: Управление данными и формами

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

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

10000 8000 руб.

10.11.2023    3507    11    1    

33

SALE! 30%

PowerTools

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

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

3600 2520 руб.

14.01.2013    177728    1073    0    

849

Ускоренное проведение документов (x4), устранение ошибок 60/62 счетов и зачет авансов (Бухгалтерия 3.0)

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

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

14400 руб.

29.04.2020    27372    79    146    

59

Система хранения присоединенных файлов в томах на диске

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

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

4200 руб.

10.11.2015    61311    88    59    

73

"Менеджер потоков 2.1": УПП: "Восстановление партий"

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

Как оптимизировать то, что, считалось, не поддается оптимизации? Как повысить доступность базы данных? Как проводить самую «времяемкую» операцию не по паре раз в неделю, а по несколько раз в день*? Ответ есть!

20000 руб.

12.09.2019    11744    5    9    

7

Брандмауэр для сервера 1С Предприятие 8 - внешнее управление сеансами

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

Управление возможностью начала и возобновления сеансов пользователей по различным условиям, ограничение общего числа возможных сеансов для работы с информационной базой, резервирование возможности работы с информационной базой определенных польззователей, запрет запуска нескольких сеансов для пользователя, журнализация событий начала (возобновления) и завершения (гибернации) сеансов, ведение списка активных сеансов для информационных баз кластера серверов

3600 руб.

06.02.2017    31106    31    18    

47

Хранилище файлов на SQL

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

Привязка файлов / сканов к объектам 1С с сохранением их на SQL-сервере

12000 руб.

09.10.2019    10978    5    8    

9
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. nSpirit2 24.04.15 12:57 Сейчас в теме
Спасибо автору отличная статья!
Redokov; Infactum; +2 Ответить
2. zhenyat 6 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 143 27.04.15 11:11 Сейчас в теме
(2) zhenyat,
в то время как с настройками по умолчанию после 25 все начинали тормозить со страшной силой

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

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

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


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

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