Имя: Пароль:
1C
Админ
Как заставить 1с использовать все ресурсы многоядерного процессора
0 krasnojrov
 
06.11.10
18:58
Есть задачка написанная на 1с8. Пытался использовать многоядерные процессоры, чтобы быстрее щелкала. Прогресса нет, запускал на одно ядерном(в файловом варианте) - диспетчер задач показывает загрузку ЦП 100%, на 4-х и 8 ядерном(двух процессорном) соответственно 25% и 13%, и диспетчер показывает примерно равномерную загрузку ядер ЦП. Пытался манипулировать, задавал соответствия (диспетчер задач>процессы>1cv8.exe>задать соответствие>ставил флажок на одно ядро)- на графике одно ядро работает по максимуму Загрузка процессора (в целом) не меняется. Что надо делать в в такой ситуации? Тот же RAR прекрасно работает с многоядерными и дает прирост в скорости.
1 ДенисЧ
 
06.11.10
18:59
купи/укради у 1с исходники и перепиши.
Тот же 1с-сервер вполне себе использует многоядерность.
2 Irbis
 
06.11.10
19:00
>> Пытался использовать многоядерные процессоры, чтобы быстрее щелкала.
Вот это как делал? С бубном танцевал?
3 krasnojrov
 
06.11.10
19:05
Остряки местные, или как?
4 ДенисЧ
 
06.11.10
19:06
(3) или клюв у кое-кого отитанился.
5 Капитан Смоллет
 
06.11.10
19:07
(0) Чувак, ты нас в выходные решил посмешить?
6 DES
 
06.11.10
19:07
Тут главное не мешать операционке.
7 krasnojrov
 
06.11.10
19:07
Ставил на сервер(db2 экспресс) - негде посмотреть настройку, в итоге скорость та-же, даже чуть меньше
8 Irbis
 
06.11.10
19:08
(3) Куда уж нам, просто в 1С ни в клюшках ни в снеговике не припомню никаких инструкций по этому поводу
9 ДенисЧ
 
06.11.10
19:08
(7) ты бы ещё на акссесс поставил...
10 krasnojrov
 
06.11.10
19:10
Что тогда ставить надо и как настроить?
11 МихаилМ
 
06.11.10
19:11
(0)
1) напишите внешнюю компоненту

2) перенесите проект на другой ЯП с многоПоточностью .  

скоро будет вопрос, что тот же  рар умет задествовать
мощности видеоускорителей.
как задействовать в 1с.
12 Irbis
 
06.11.10
19:12
(10) Смирись, лучше вылизывай код. Большинство тормозов из-за неверно заточеных рук программистов.
13 Капитан Смоллет
 
06.11.10
19:12
(7) Пиши слезливое письмо генеральному конструктору 1с с просьбой переписать платформу на многопоточность. Единственно тебе уже посоветовали в (1)2
14 ДенисЧ
 
06.11.10
19:12
(10) Ставь кошерный мссиквел и на сервере 1с настраивай количество рабочих процессов соответственно количеству процессоров. На ИТС есть соответствующие статьи.
Вкратце - количество процессов == количество процессоров - 2
15 ДенисЧ
 
06.11.10
19:12
А клиентская часть не будет работать с многими процессами, пока не сделаешь (1)
16 krasnojrov
 
06.11.10
19:14
Михаил, что такое ЯП?
17 krasnojrov
 
06.11.10
19:15
То есть в файловом варианте не сделать такое?
18 ДенисЧ
 
06.11.10
19:15
оймать... Ты программист или куда?
19 МихаилМ
 
06.11.10
19:16
(16) язык программирования.
20 krasnojrov
 
06.11.10
19:17
Спасиб
21 КМ155
 
06.11.10
19:21
(17) [То есть в файловом варианте не сделать такое]
запусти 8 1с.Exe по шт. на ядро
и распараллель задачку
22 krasnojrov
 
06.11.10
19:23
Ну запустить то я запущу, а как распаралелить?
23 krasnojrov
 
06.11.10
19:25
(21)Все, догнал КМ. В принципе можно попробовать.
24 Капитан Смоллет
 
06.11.10
19:26
(21) Ага. Поставь Windows Server 2008 R2 HPC. Сделай клауд-вычисления по сетке.. :)
25 КМ155
 
06.11.10
19:33
(22) [а как распаралелить]
Оооооо
про это тома написаны
26 Капитан Смоллет
 
06.11.10
19:37
(25) Как однопоточное приложение собираемся распараллеливать? пид-процесс один и тот же. Запись и чтение в базу данных может вызвать конфликт, поскольку система не может отличить пид-процесс, как в лучае клиент-серверного приложения. Для многоядерных процов надо писать спецприложения.

И не надо путать распределение нагрузки с увеличением производительности.
27 krasnojrov
 
06.11.10
19:37
(25) Спасибо КМ, идея весьма нетривиальная, прикидываю какие задачки распаралелить можно.
28 hhhh
 
06.11.10
19:48
можно 1с и rar пустить на разные ядра - вот уже и распараллеливание.
29 КМ155
 
06.11.10
19:50
(26) почитай про конвейерные ЭВМ
30 Капитан Смоллет
 
06.11.10
20:11
(29) Что читать-то? ОС Винда поддерживает эту архитектуру?
31 Живой Ископаемый
 
06.11.10
20:13
(7) божечки, ну и почему же ты подумал что виноват rphost и процессоры? вернее их неиспользование?
32 КМ155
 
06.11.10
20:13
(30) не надо путать архитектуру ОС с архитектурой вычислений
33 Капитан Смоллет
 
06.11.10
20:16
(32) Тогда что ты предлагаешь человеку в (21)?
34 Живой Ископаемый
 
06.11.10
20:17
2(33) над одной базой или разными? если над одной, то что они должны будут делать? ну вот реально, чтобы это пригодилось?
35 krasnojrov
 
06.11.10
20:20
(34)над одной, к примеру: документ с 20000 строками разбивать на 4.
36 Irbis
 
06.11.10
20:22
(35)А зачем делать документ на 20000 строк, с тем расчетом чтобы потом его разбивать на 4 по 5000. Может сразу делать 4 документа?
37 Капитан Смоллет
 
06.11.10
20:22
(34) Да ничего не надо делать, пока однопоточное приложение. ))
в (21) человек предложил РАСПРЕДЕЛИТЬ нагрузку на многоядерном процессоре.

Реально увеличить производительность системы можно либо переписав его на многопоточность либо использовать cloud-вычисления (типа фермы Цитрикса).
38 КМ155
 
06.11.10
20:27
(35)[документ с 20000 строками разбивать на 4]
неудачный пример
всё упрётся в блокировки
39 krasnojrov
 
06.11.10
20:36
(38)Что за блокировки? Я предложил каждый документ обрабатывать на своем ядре в отдельном 1cv8.exe одновременно.
40 КМ155
 
06.11.10
20:39
(39) [Что за блокировки]
Рг
41 krasnojrov
 
06.11.10
20:41
Как расшифровывается Рг?
42 Капитан Смоллет
 
06.11.10
20:42
43 КМ155
 
06.11.10
20:42
(41) Регистры
44 Капитан Смоллет
 
06.11.10
20:44
45 КМ155
 
06.11.10
21:07
(44) bing забыл
46 Живой Ископаемый
 
06.11.10
23:13
2(35) И? - ну вот ты разбил такой документ на 4 и что дальше? в какой момент тебе поможет то, что приложение будет использовать 4 процессора вместо 1?
47 Живой Ископаемый
 
06.11.10
23:15
В момент записи их в базу? Так о какой производительности ты говоришь применительно к базе данных? Что в 1С выполняется дофига чисто математических вычислений без записи в базу? Разве что в каком-нибудь РАУЗе?
48 Живой Ископаемый
 
06.11.10
23:23
2(39) вот что произойдет когда все четыре "Я предложил каждый документ обрабатывать на своем ядре в отдельном 1cv8.exe одновременно." документа обработаются? Ты уже замерял на что расходуется время при обработке документов?
49 krasnojrov
 
13.11.10
20:09
Попробовал, вот что получилось: Система-Win2008, двухпроцессорный сервер с 8 ядрами. Документ 20809 строк. Запускал 4 копии документа на 4 приложениях(на каждое приложение свой документ). Первая попытка с заданными соответствиями(каждое приложение на своем ядре) - время работы: 10:36:24 10:32:02 10:37:38 10:45:00, в среднем 10:37:46. вторая попытка без задания соответствий время работы: 11:54:26 11:32:44 12:39:47 11:45:33, в среднем 11:58:08, то есть используя соответствия получаем 11% быстродействия. Быстродействие по сравнению с запуском задачи на одном приложении увеличивается кратно!!!
Эта задачка(10 часов работы) не сильно напрягала меня, на ночь оставишь - утром все сделалось. Следующая задачка - в справочнике 188000 элементов надо найти каждому элементу соответствие в других справочниках(10, к-во элементов 16000), без "мероприятий" грозится работать за 90 часов, оптимизацией кода должно быть 24 часа(не успею доделать), вся надежда на распаралеливание и большую "считалку"
50 Immortal
 
13.11.10
20:38
мне кажется про справочники - один, ну максимум 2 запроса
90 часов - много.
51 krasnojrov
 
13.11.10
20:56
от 30 до 300
52 Immortal
 
13.11.10
20:59
(51)это перебором что ли?
53 krasnojrov
 
13.11.10
21:03
4 запроса крутятся
54 Immortal
 
13.11.10
21:07
жираф большой, ему видней,)
55 krasnojrov
 
13.11.10
21:19
И не говори, кума...
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший