Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Priorities (число прочтений - 4517 )
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Priorities
07. Ноября 2006 :: 05:08
Печать  
Попробовал потестить компоненту Priorities...

В ГМ вставил фрагмент по совету fez'а (нашел на IT-Land'е):
Код
Выбрать все
	Попытка
	   ЗагрузитьВнешнююКомпоненту("priorities.dll");
	   Приоритеты1Са = СоздатьОбъект("Приоритеты");
	   Приоритеты1Са.ПриоритетПроцесса("IDLE_PRIORITY_CLASS");
	   Приоритеты1Са.ПриоритетПроцессаВТранзакции("IDLE_PRIORITY_CLASS");
	   Приоритеты1Са.ПриоритетПроцессаВнеТранзакции("IDLE_PRIORITY_CLASS");
	   Приоритеты1Са.ПриоритетПотокаВТранзакции("THREAD_PRIORITY_NORMAL");
	   Приоритеты1Са.ПриоритетПотокаВнеТранзакции("THREAD_PRIORITY_BELOW_NORMAL");
	   Приоритеты1Са.ПриоритетПотока("THREAD_PRIORITY_BELOW_NORMAL");
	   Приоритеты1Са.ВремяОжиданияЗахвата(15); // здесь сделал 15, чтобы оценить эффект от изменения приоритетов
	Исключение
	КонецПопытки;
 



В модуль проведения одного документа вставил цикл:

Код
Выбрать все
Пока 1 = 1 Цикл КонецЦикла;
 



Запустил проведение этого документа в первом экземпляре 1С. Зашел во второй 1С и попытался провести документ. Начался 1С-ный цикл попытки захвата таблицы. В это время смотрю Диспетчер задач на предмет распределения ресурсов процессора между процессами 1С. Наблюдаю странную вещь: поток, который пытается захватить таблицу ест почти 100% процессора. Я ожидал, что ресурсы будут распределяться хотя бы 50/50, а тут все ресурсы отнимаются у процесса, который проводит документ... Может быть, я неправильно смотрю? Как оценить эффект от изменения приоритетов?

Тестирование проводилось на однопроцессорной машине. Гипертрединг отсутствует как класс.
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Priorities
Ответ #1 - 07. Ноября 2006 :: 05:56
Печать  
Да, без компоненты наблюдается такой же эффект. Получается ожидание захвата по любому жрет сильно больше, чем проведение документа, независимо от приоритетов.
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Priorities
Ответ #2 - 07. Ноября 2006 :: 06:37
Печать  
Продолжаю эксперименты. Изменил загрузку Приоритетов следующим образом:
Код
Выбрать все
	Попытка
	   ЗагрузитьВнешнююКомпоненту("priorities.dll");
	   Приоритеты1Са = СоздатьОбъект("Приоритеты");
	   Приоритеты1Са.ПриоритетПроцесса("IDLE_PRIORITY_CLASS");
	   Приоритеты1Са.ПриоритетПроцессаВТранзакции("NORMAL_PRIORITY_CLASS");
	   Приоритеты1Са.ПриоритетПроцессаВнеТранзакции("IDLE_PRIORITY_CLASS");
	   Приоритеты1Са.ПриоритетПотокаВТранзакции("THREAD_PRIORITY_NORMAL");
	   Приоритеты1Са.ПриоритетПотокаВнеТранзакции("THREAD_PRIORITY_BELOW_NORMAL");
	   Приоритеты1Са.ПриоритетПотока("THREAD_PRIORITY_BELOW_NORMAL");
	   Приоритеты1Са.ВремяОжиданияЗахвата(15);
	Исключение
	КонецПопытки;
 



Т.е. немного повышен приоритет процесса/потока в транзакции. Благодаря этому, теперь можно смотреть на изменение приоритета 1С в и вне транзакции. В обычном режиме приоритет в Диспетчере задач "Низкий". При выполнении транзакции - "Средний".

Итак, запускаю проведение документа с бесконечным циклом. Наблюдаю загрузку 100% и приоритет - "Средний". Открываю 2-й 1С. У него приоритет - "Низкий". Пытаюсь провести документ - опять у 2-го 1С загрузка 100%. Смотрю приоритеты: У ОБОИХ 1С-ОВ приоритет - "Средний"! Получается, компонента считает, что транзакция началась даже в том случае, когда 1С просто ожидает захвата таблиц. Это что же получается? Игра с приоритетами ничего не даст? Т.к., что при проведении, что при захвате таблицы приоритет одинаковый? Выгода получается разве что только, если СКЛ-сервер совмещен с терминалом...
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: Priorities
Ответ #3 - 07. Ноября 2006 :: 06:45
Печать  
Да, это давно известная трабла.
Ожидание разблокировки таблиц жрет процессор со всей дури.
Именно потому в терминале рекомендуется устанавливать всем время ожидания захвата как можно меньше, дабы ждущий не мешал проводящему.
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Priorities
Ответ #4 - 07. Ноября 2006 :: 07:09
Печать  
orefkov писал(а) 07. Ноября 2006 :: 06:45:
Да, это давно известная трабла.
Ожидание разблокировки таблиц жрет процессор со всей дури.
Именно потому в терминале рекомендуется устанавливать всем время ожидания захвата как можно меньше, дабы ждущий не мешал проводящему.


А смысл? Если у всех 1С-ов одинаковый приоритет будет, то неважно, какой он вообще Улыбка Нет, конечно у 1С-ов, которые не проводят и не пытаются провести документ, он будет ниже, но и мешают они гораздо меньше.
  
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Priorities
Ответ #5 - 07. Ноября 2006 :: 07:43
Печать  
http://www.kb.mista.ru/article.php?id=179
Я пользовал на DBF-версии - полет нормальный Улыбка
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Priorities
Ответ #6 - 07. Ноября 2006 :: 07:49
Печать  
steban писал(а) 07. Ноября 2006 :: 07:43:
http://www.kb.mista.ru/article.php?id=179
Я пользовал на DBF-версии - полет нормальный Улыбка


Я пробовал. Клиент сказал, что иногда стали вылезать дикие тормоза в отчетах. Пришлось убрать (компоненту). Теперь смотрю альтернативные варианты. Чувствую, придется делать закат солнца вручную... Улыбка
  
Наверх
 
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Priorities
Ответ #7 - 22. Марта 2007 :: 10:35
Печать  
Uzhast писал(а) 07. Ноября 2006 :: 07:49:
steban писал(а) 07. Ноября 2006 :: 07:43:
http://www.kb.mista.ru/article.php?id=179
Я пользовал на DBF-версии - полет нормальный Улыбка


Я пробовал. Клиент сказал, что иногда стали вылезать дикие тормоза в отчетах. Пришлось убрать (компоненту). Теперь смотрю альтернативные варианты. Чувствую, придется делать закат солнца вручную... Улыбка


Тема старая, поэтому может быть.... Закат солнца РУЧНЫМ не оказался ???....
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
nvg
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 72
Местоположение: Киев
Зарегистрирован: 14. Сентября 2006
Пол: Мужской
Re: Priorities
Ответ #8 - 22. Марта 2007 :: 11:23
Печать  
Uzhast писал(а) 07. Ноября 2006 :: 07:49:
steban писал(а) 07. Ноября 2006 :: 07:43:
http://www.kb.mista.ru/article.php?id=179
Я пользовал на DBF-версии - полет нормальный Улыбка


Я пробовал. Клиент сказал, что иногда стали вылезать дикие тормоза в отчетах. Пришлось убрать (компоненту).


У меня в одной из баз около двадцати пользователей в терминале, база ДБФ. Может несколько и замедлилось формирование отчетов, но чтоб дикие тормоза - такого не было...
При этом общая скорость работы серьезно возросла - загрузка процессора значительно упала. Раньше оба проца были серьезно загружены, и дикие тормоза были именно при работе с документами.
Так что мне эта компонента реально помогла.

Из замеченных минусов - на другом сервере, к другой базе подключали эту компоненту. Иногда 1с уходила с экрана тихо, не прощаясь...
  
Наверх
ICQ  
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Priorities
Ответ #9 - 23. Марта 2007 :: 02:44
Печать  
lustin писал(а) 22. Марта 2007 :: 10:35:
Тема старая, поэтому может быть.... Закат солнца РУЧНЫМ не оказался ???....

Практически, оказался Улыбка Сделал гибрид из Priorities и VK_Terminal_Sleep.

Prior: понижение приоритета для основной работы и повышенный для транзакций. Время ожидания захвата в 0.

Кнопку "ОК" в документах переопределил на свою процедуру:
В цикле пытается сделать запись/проведение, если не удается, то ожидает несколько миллисекунд (для пауз использовал VK_Terminal_Sleep). Цикл выполняется некоторое заданное время (свой аналог времени ожидания захвата таблицы). Так что документ пытается провестись те же 30 секунд, но без загрузки ЦП.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать