Установка процессорных квот #299249


#0 by Морозов Александр
Установка процессорных квот Опубликовано: cepik , Включено: Feb-14-2006 Автор статьи Александр Маляев Вступление Наверное, все владельцы терминал-серверов рано или поздно сталкиваются с проблемой постоянной и полной загрузки процессора (процессоров) и существенного замедления работы всех пользователей. Причин этому может быть несколько. Это и большое количество пользователей в целом, и несовершенство 1С в части механизма транзакций, и "тяжелые" отчеты. Решений проблемы тоже может быть несколько. Оптимизация сервера в целом (апгрейд, настройка ОС), разнесение отдельных баз на разные терминал-сервера, оптимизация алгоритмов отчетов и модулей, хранение баз на SQL-сервере. Как оказалось, есть еще один способ продлить жизнь вашей технике - задание квот на использование процессорного времени. Поиски истины Мысль эта мне пришла давно. Полгода я мучился вопросом: почему нельзя сделать квотирование процессорного времени на Windows 2000 Server в то время, когда на UNIX-системах это делается без проблем? Копал интернет, спрашивал системных администраторов. В ответ одно - нельзя этого сделать принципиально, можно лишь задавать приоритеты процессам. Однажды наткнулся на статью, где оговаривалось, что возможно задание процессорных квот с использованием продуктов сторонних производителей. Больше никакой информации не давалось, указывался лишь перечень программных продуктов, справляющихся с этой задачей, и предлагалось опробовать каждый из них, чтобы выбрать для себя подходящий. На всякий случай приведу этот перечень: Appsense Optimizer RES PowerFuse CPUShield TAME TMuLimit ThreadMaster Лично я опробовал все программы из этого списка. Одни из них были чересчур тяжелыми пакетами-монстрами типа MS Office, весьма сложными в освоении и настройке, другие решали узконаправленную задачу и не позволяли решить проблему "на корню". А самое главное - все они были платными, без поддержки отечественными дилерами и без русской документации. Очень жаль, что та программа, которая действительно оказалась нужной, стояла в самом конце списка. Иначе бы я сумел сэкономить уйму времени. Ну что же, надеюсь, эта статья поможет сэкономить время вам. Период удивлений Итак, в итоге я остановился на программе ThreadMaster. Скачивание программы с сайта разработчика ввело меня поначалу в состояние ступора. Уже привыкший к дистрибутивам размером несколько десятков мегабайт, я не мог поверить в эффективность программы, чей архив занимал 27 килобайт. Я даже не заметил, как она скачалась - очень уж быстро промелькнуло окошко загрузки. Но ничего, глянув на диск, я обнаружил, что там действительно лежит маленький архив, а в нем - желанный плод. Вторая стадия удивления настала после рассмотрения фразы "Freeware License". Как оказалось, не все, что бесплатно - плохо. Linux и материалы сайта 1c.proclub.ru яркий тому пример. Ну и наконец, третья стадия настала тогда, когда я понял, что инсталлятора и GUI-интерфейса у этой программы нет и не предвидится. Установка Программа ThreadMaster устанавливается после распаковки архива запуском командного файла "Install.cmd". При этом создается папка программы в каталоге "System32", создаются ключи реестра и сразу же запускается служба "ThreadMast.exe". Никакой перезагрузки компьютера при этом не требуется. Для того, чтобы остановить работу программы, достаточно остановить соответствующую службу. Для деинсталляции программы необходимо запустить командный файл "Uninst.cmd", который можно скачать с сайта разработчика. Настройка Так как ThreadMaster не имеет GUI-интерфейса, все настройки производятся изменением тех или иных ключей реестра в ветке HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesThreadMaster. Все изменения вступают в силу только после перезапуска службы. Рассмотрим наиболее важные настройки. Глобальные настройки. HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesThreadMaster ParametersCPUThresholdPct Этот ключ задает отрезок времени, в течение которого будет производиться усредненный анализ загрузки процессора процессом. Значение параметра определяется в интервале от 10 до 100 (секунды). HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesThreadMaster ParametersThreadOverloadActionStart Этот ключ задает команду (приложение, командный файл), которая будет выполняться в случае принудительного снижения процента загрузки процессом. Можно применять для создания своих систем статистики, для настройки оповещений, для принудительного снятия или перезагрузки процесса и в других случаях. Пример создания командных файлов с использованием переменных контекста ThreadMaster (простите за такое изложение понятий - по другому не могу, слишком долго с 1С работаю) можно посмотреть в файлах "ThreadSaveLog.cmd" и "ThreadLog.cmd". HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesThreadMaster ParametersThreadOverloadActionStop Этот ключ задает команду (приложение, командный файл), которая будет выполняться в случае снятия процесса с принудительного снижения процента загрузки. Локальные настройки. Производятся путем создания дополнительных ключей строкового типа в ветке реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesThreadMaster ParametersApplications. Каждый новый ключ определяется именем значения, представляющего собой имя процесса (например "1cv7.exe"), и самим значением, определяющим максимально допустимый процент загрузки процессора этим процессом (аналогично глобальным настройкам). Значение параметра определяется в интервале от 1 до 100 (проценты). Исключения Производятся путем создания дополнительных ключей строкового типа в ветке реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesThreadMaster ParametersExceptions. На процессы, перечисленные в данной ветке реестра, не будут распространятся квоты. Изначально эта ветка уже содержит ряд ключей, соответствующих системным процессам. Но можно добавлять и свои. Ключ задается только именем значения, представляющего собой имя процесса (например "Termsrv.exe"). Статистика При своей работе программа ThreadMaster собирает статистическую информацию о количестве примененных к каждому процессу ограничений, а также о времени, которое процесс провел в состоянии ограничения. Эту информацию можно использовать для того, чтобы разобраться, какие пользователи и какими процессами наиболее грузят сервер, и принять соответствующие меры. Опишу те ветки реестра, где эта статистика хранится. HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesThreadMaster StatisticsCount В этой ветке хранятся счетчики ограничений для каждого процесса. HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesThreadMaster StatisticsTime В этой ветке хранятся счетчики времени, которое процесс провел в состоянии ограничения. Хитрости Вот чего нет в программе ThreadMaster, так это разделение настроек на разные категории пользователей. Возможность классического определения настроек для конкретного пользователя тоже отсутствует. Возникает вопрос: как быть? Я все-таки нашел способ осуществить эту операцию. И пусть меня назовут извращенцем, пусть твердят, что это неправильно и криво, но все таки это СПОСОБ. А те неудобства, которые возникают вследствие использования этого метода, это лишь малая плата за бесплатность и уникальный функционал программы. Объясню суть. Задача: Установить пользователю "П1" , который активно пользуется "тяжелыми" отчетами, квоту 10%, пользователю "П2", который интенсивно проводит документы, квоту 50%, а пользователю "П3", который занимается конфигурированием 1С, отменить квоту на 1С. Решение: Создаем 3 копии файла "1cv7.exe" для каждого пользователя в том же каталоге, где находятся программные файлы 1С. Первую копию переименуем в "1cv7_П1.exe", вторую - в "1cv7_П2.exe", третью - в "1cv7_П3.exe". При необходимости установим соответствующие права на доступ пользователей к этим файлам. Ярлыки запуска 1С настроим для каждого пользователя свои, ведущие к тому или иному файлу. А дальше все просто - в ветке "Applications" добавляем ключи для первой и второй копий, устанавливаем им значения 10 и 50 соответственно, а в ветку "Exceptions" добавляем ключ для третьей копии. Таким образом можно устанавливать квоты как для конкретного пользователя, так и для групп пользователей. Заключение Использование процессорных квот, к сожалению, не является универсальным и единственно правильным способом стабилизировать работу терминал-сервера. Как я уже говорил во вступлении, существует целый ряд методов увеличить быстродействие 1С и решить проблему "узких мест". Но квотирование процессорного времени поможет на первых порах тем, кто уже начал задумываться о вложении денежных средств в апгрейд техники и программного обеспечения, и тем самым обеспечить большую отдачу капитальным вложениям в информационные технологии. Также эта методика практически во всех ситуациях решит проблему загрузки процессора "тяжелыми" отчетами, обеспечив более оперативное проведение документов и работу со списочными данными. Грамотно подобранные и протестированные параметры ThreadMaster позволят увеличить число одновременных пользовательских сеансов, справедливо разделить ресурсы между работниками и программами в зависимости от их реальных потребностей и степени важности оперативного получения и ввода информации. Кроме того, эта статья является практически уникальной в своем роде, полезной для администраторов серверных операционных систем, так как доказывает, что использование процессорных квот возможно и в Windows 2000 Server, а не только в Linux. Использованные материалы и технические средства Программа ThreadMaster версии 1.12 сборки 182 для операционных систем Windows 2000/2003 Server . Статья "Настройка производительности терминального сервера" . Сервер P4 2400 / 1Гб / 2*80Гб IDE / 1*18Гб SCSI / Windows 2000 Server / TSE / 20 users.
#1 by ildus
баян
#2 by Морозов Александр
конечно... если статья 2006 года
#3 by ildus
не 2006, а 2004 а может даже раньше
#4 by Ангел-Хоронитель
интересно.... надо будет попробовать.....
#5 by Морозов Александр
Выложено по просьбе.
#6 by dk
так и не понял, а как реализован механизм-то? Процессу превышающему квоту посылается suspend или все же приоритет меняется?
#7 by ildus
приоритет не меняется
#8 by SPV82
Если сервер терминалов = Windows Server 2003 Enterprise, то для него существует технология Windows System Resource Manager (WSRM), которая выложена для свободного скачивания с сайта MS. Windows System Resource ManagerWindows System Resource Manager is a feature of Microsoft® Windows® Server 2003, Enterprise Edition and Windows Server 2003, Datacenter Edition. With Windows System Resource Manager, administrators can control how CPU and memory resources are allocated to applications, services, and processes. Managing resources in this way improves system performance and reduces the chance that applications, services, or processes will interfere with the rest of the system. It also creates a more consistent and predictable experience for users of applications and services running on the computer. You can use Windows System Resource Manager to manage multiple applications on a single computer or users on a computer on which Terminal Services are installed.
#9 by ildus
патч ромикса для 1С лучше подходит чем ThreadMaster, для ThreadMaster применительно к 1С важно правильно подобрать значение временного интервала и процента загрузки в зависимости от времени проведения документов и возможного количества пользователей, одновременно попадающих в ожидание блокировки на протяжении временного интервала. т.е. %огр. < 100%/N. если %огр >= 100/N, то ограничение не сработает, при слишком малом % и если время проведения большого документа превысит установленный временной интервал- сработает ограничение и проведение документа замедлится в 100/%огр раз. ИМХО лучше для 1С использовать патч ромикса, а если в терминале выполняются другие программы, например офис, то только для них использовать ThreadMaster.
Тэги: Админ
Ответить:
Комментарии доступны только авторизированным пользователям