Как ведет себя 1с на многоядерном процессоре (Проблема) #594378


#0 by Nikulin
А проблема в том, что нужно понять вот что. Есть 4 ядра (8 виртуальных процессоров). Есть 1с сервер предприятия и СКЛ сервер на другом компе (другой комп не рассматриваем) Есть другая учетная система которой пользуются половина пользователей 1с Ворос. На одном ядре крутится сервер предприятия, 1 клиентская 1с и один экземпляр второй учетной системы. Если на клиентской 1с запускают отчет и она начинает отжирать весь ресурс этого ядра то что будет с другими процессами? т.е. они заткнутся, или переместятся на другое ядро? т.е. может ли экземпляр 1с перемещаться на другие ядра в зависимости от балансной нагрузки? Может ли процесс сервера предприятия перемещатся. Умеет ли виндоус (биос... или еще чтото) распределять процессы интерактивно?
#1 by Nikulin
В продолжение. Запускается сервер. Стартует сервер предприятия. Фактически все новые процессы стартуют на 1 процессоре? Как в дальнейшем распределяются приложения? т.е. в течении дня сервер предприятия все более нагружен, и те кто по несчастью попали с ним на 1 процессор начинают тормозить все сильнее? Нужны какие либо ссылки на анализ ситуации и на авторитетные мнения =) Выскажите пожалуйста собственное мнение.
#2 by acsent
тебе рассказать о принципах многозадачности в винде?
#3 by Lama12
+1 В правильно написанной программе (не в специализированной), процессами управляет ОС.
#4 by Живой Ископаемый
2 "Умеет ли виндоус (биос... или еще чтото) распределять процессы интерактивно?" умеет?
#5 by Живой Ископаемый
а (Проблема) в чем?
#6 by H A D G E H O G s
А я тогда написал приблуду, которая раскидала мне 2 calc.exe по 2 моим ядрам :-)
#7 by H A D G E H O G s
Но я ниасилил - че делать с 4 calc.exe и 2 ядрами.
#8 by Живой Ископаемый
2 а я об этом не знаю...
#9 by Живой Ископаемый
Но то есть Таск Менеджер сам не умеет
#10 by Nikulin
"Проблема" в том, что возникли некоторые терки между разработчикам этой самой второй учетной системы, и нужно аргументированно вести диалог. Делим производительность сервера.
#11 by Живой Ископаемый
2 засуньте его в виртуалку или в песочницу.
#12 by Nikulin
это доступность процессоров для процесса? Я не могу понять, может ли приложение переклчаться интерактивно между свободными процессорами.
#13 by acsent
винда не умеет перекидывать уже работающий процесс, только новый
#14 by acsent
ели приложение порождает новый процесс, нить, то ос автоматом выбирает для него менее нагруженный процессор
#15 by acsent
так же можно закрепить некотоые приложения за определеными процессами
#16 by Живой Ископаемый
2 а как?
#17 by acsent
ключевое слово affinity
#18 by Живой Ископаемый
2 а есть такое же, но для служб?
#19 by acsent
понятия не имею, да и этой то утилитой ни разу не пользовался ))
#20 by acsent
#21 by Alexmtx
Привет всем! Ситуация следующая. Имеем сервер - 2 процессора по 2 ядра и гипертрейдинг, - итого по 4 виртуальных ядер = 8 виртуальных ядер всего. Процесс 1cv8.exe - это однопоточное приложение 1С82, то есть имеет только ОДИН поток! При запуске как понимаю этот поток распределяется на первое ядро если оно не загружено или на более свободные, если первое сильно загружено Так понимаю, что ОС может создать однопоточное приложение на каком-то из ядер, но перекидывать его не будет после старта. Так вот, потом подвисает процесс Try.exe базы, написанной на VC++ и загружает первое ядро на полную и в итоге 1С тормозит.
#22 by Alexmtx
По мнению программистов VC++ ОС в таком случае поток процесса 1cv8.exe может перекинуть на другое свободное ядро. В реальности же этого не происходит, 1С тормозит. ОС W2k3 Server x86 Enterprise Edition 16 Гб ОЗУ
#23 by Lama12
С чего это 1С однопоточное? У меня сейчас на разных сессиях от 9 до 11 потоков.
#24 by Alexmtx
Есть линка, в которой досконально расписывается ротация потоков приложения и невозможность ротации однопоточного приложения?
#25 by Alexmtx
Не надо путать потоки с процессами!
#26 by Alexmtx
Читаем в конце статьи.
#27 by Lama12
Вот я как раз и не путаю. :) Один процесс. У него 10 потоков. Сколько нитей, не скажу. Process explorer не показывает.
#28 by Alexmtx
из этих потоков потоков самих 1С (не ntdll.dll) сколько?
#29 by acsent
поток - это и есть нить
#30 by Lama12
Хм... один :)
#31 by Alexmtx
вот-вот - поток, он же нить всего один у 1с!
#32 by Lama12
Блин... разрушаете розовые очки. :)
#33 by Alexmtx
Никак не могу найти хорошее описание ротации потоков по ядрам в ОС...
#34 by Rovan
ты на сервере запускаешь сеанс КЛИЕНТА 1С ?
#35 by Rovan
я счес через FAR посмотрел: у клиента 1С (1cv8.exe) 10 нитей
#36 by Rovan
"Так вот, потом подвисает процесс Try.exe базы, написанной на VC++ и загружает первое ядро на полную и в итоге 1С тормозит." *** это вопрос к разрабочикам Try.exe  !
#37 by Жан Пердежон
запускать try.exe и 1с на разных ядрах тулзой из - не вариант?
#38 by Alexmtx
С Try.exe побороли, вот только сами разработчики говорят что Try.ee не мог влиять, так как ОС распределяет потоки по ядрам. Они неправильно понимают как работает однопоточное приложение. Вот мне и нужно весомое доказательство со ссылкой на авторитетный источник. Запускается на сервере через Citrix.
#39 by GreyK
1С по жизни однопоточная, ей эти "многопроцессорные процы" до фени, ей скорость записи на диск важна и скорость проца.
#40 by Раттенфангер
Кстати да. Виртуалка- лучший выход из сложившейся ситуации, т.к. игрой с аффинити и назначением памяти все равно практически невозможно создать равные условия для двух приложений. А в виртуалке - легко. Да и переезд на разные сервера виртуалкам сделать гораздо проще.
#41 by mdocs
А бывают многопоточные базы данных?
#42 by smaharbA
афинутни
#43 by Torquader
Во-первых, никто не мешает системе переносить процессы между ядрами, так как после выгрузки процесса с процессора его можно загрузить в другое ядро точно также, как и в предыдущее, только нужно понимать, что один поток может быть загружен только в одно ядро одновременно. Во-вторых, система обрабатывает системные вызовы для операций с диском, памятью и другими системными ресурсами, которые тоже выполняются последовательно, так как к одному устройству в один момент времени может иметь доступ только один процесс. Поэтому, если у сервера тормозит дисковая подсистема (а это самое частое явление, так как нехватка памяти тоже приводит к возрастанию использования диска), то сколько бы процессоров в системе не наблюдалась, все процессы будут ждать выполнения дисковых операций и даже один однопоточный процесс, который полностью загрузил обмен с диском может очень сильно повлиять на производительность всей системы в целом. Конечно, распределение процессов по процессорам (SetProcessAfinityMask) позволяет распределить нагрузку, но только в пределах вычислительной мощности, а в случае проблем с диском может даже сильно затормозить работу, так как ограниченный процесс будет медленнее обрабатывать ответы от диска.
#44 by Alexmtx
В однопоточном приложении поток один и как при запуске занимает одно ядро, так уже его система перенести на другие ядра не сможет!
#45 by smaharbA
правда ?
#46 by MaxS
Проводил эксперимент с десктопной виртуалкой. У гостя 2 ядра, у хоста 4. Когда гость загружает 2 ядра на 100%, хост периодически перекидывает нагрузку то на одну пару, то на другую.
#47 by Neco
Большинство современных СУБД многопоточные
#48 by Фрэнки
СУБД многопоточные, но при этом внутри СУБД должен быть свой собственный планировщик, иначе вся многопоточность СУБД обернется всего лишь запуском каждого сеанса подключения к СУБД в отдельном одиночном потоке. Т.е. далеко не все СУБД для винды умеют делить сеансы на несколько потоков. МС СКЛ умеет. Но его при этом глючит и клинит. Причем, глюки и клины выскакивают в разных ситуациях, в зависимости от версии сборки 1С. На некоторых сборках 1С попадаются рекомендации по использованию параметра управления разрешенным количеством потоков на один коннект к СУБД
#49 by Фрэнки
параметр нужно указывать для МС СКЛ
#50 by pectopatop
Если в аспекте СУБД говорить, то больше важна, и нужна, и используется (1С это не весь ИТ еще) - не многоПОТОЧНОСТЬ, а параллельные запросы. Читай параллельные чтения/записи в дата-файлы. Т.к. у СУБД чаще узкое место - HDD. Для параллельных чтений/записи необязательно нити отдельные создавать.
Тэги: Админ
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С