| 
			
			 | 
		#1 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
			
			
			AOS и многопроцессорная машина
			 
			
			Влияет ли существенно наличие нескольких процессоров на машине на быстордействие AOS. Т.е. машина работает в одной и той же конфигурации с одним процессором, затем добавляют еще процессор, как измениться скорость работы приложения (3-х уровневое, база на другой машине)? Поделитесь опытом.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Теоритически никак. AOS не использует второй процессор. Для AOS важна частота процессора.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от lagr221374
			
			 
Влияет ли существенно наличие нескольких процессоров на машине на быстордействие AOS. ... 
		
	Если средняя нагрузка на один процессор сервера [AOS] более 50 % - имеет смысл увеличить их количество, если есть такая возможность. Последний раз редактировалось Serge Kotov; 08.11.2005 в 12:19.  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Очень рекомендую выключить HyperThreading режим на AOS машине. Это отключает виртуализацию процессоров и фактически увелививает быстродействие каждого физического процессора.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Gelios
			
			 
Очень рекомендую выключить HyperThreading режим на AOS машине. Это отключает виртуализацию процессоров и фактически увелививает быстродействие каждого физического процессора. 
		
	 | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Не повлияет, AOS почти всегда использует только 1 процессор, если только вы не хотите запустить 2-й экземпляр AOS-а на одной и той же машине. Общее правило №1: AOS-ы масштабируются "box"-ами, ставите рядом еще одну машину и разводите по ним пользователей.  
		
		
		
		
		
		
		
	2 Serge Kotov что такое "клиентский процесс" применительно к 3-х звенке?  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Без сомнения, она это делает, но только это нам не поможет aos - это один единственный процесс и с точки зрения ОС, поделать с ним ничего нельзя. 
		
		
		
		
		
		
		
	С уваженим, itfs.  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Совершенно верно. Если не привязывать процесс к определенным процессарам (процессору), то потоки будет выполняться параллельно на разных процессорах в соответствии с приоритетом. Так как Axapata на каждое подключение к AOS'у создает свой поток, то это правило действительно и для нее
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			2 itfs 
		
		
		
		
		
		
			Ваше сообщение увидел после того, как отправил свое, по-этому уточняю. Процесс сам по себе ничего не выполняет. Все дейсвтвия в программе выполняются потоками. Если приложение разбивает свою работу на 2 два и более потока, то они могут быть распараллелены операционкой для выполнения на разных процессорах 
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Модератор 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от itfs
			
			 
Без сомнения, она это делает, но только это нам не поможет aos - это один единственный процесс и с точки зрения ОС, поделать с ним ничего нельзя. 
		
	соответственно, одной сессии (одному потоку) наличие HT или дополнительных процессов как-либо заметно помочь не может, а вот если сессий (пользователей) много - очень даже в принципе, я недавно рисовал сферического коня в вакууме - одна сессия запускает дополнительные потоки через AOSLoadGen и грузит все доступные процессоры, но как это применить на практике, еще не придумал  
		 | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Модератор 
		
			
	 | 
	
	
	
		
		
		
		 
			
			... Как говорил Великий Рихтер  
		
		
		
		
		
		
		
	![]() Да, у нас такая же ситуация. Второй процессор пригодится, если на машине крутиться несколько АОСов (рабочий/тестовый/разработчиков) С Уважением, Георгий  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Vadik
			
			 
...  
		
	в принципе, я недавно рисовал сферического коня в вакууме - одна сессия запускает дополнительные потоки через AOSLoadGen и грузит все доступные процессоры, но как это применить на практике, еще не придумал ![]()  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Модератор 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от lagr221374
			
			 
Можно на эту тему поподробнее если не затруднит + код 
		
	Изначально задача формулировалась примерно так "Допустим, у нас есть достаточно 'тяжелая' сессия, которая на многопроцессорном сервере приложений интенсивно использует один процессор, но не использует остальные. Это в принципе возможно?" Так вот "в принципе" ответ будет "да, если..". Если мы можем разбить нашу задачу на несколько мелких задач, разбросать их по нескольким потокам в принципе несложно. Я не стал использовать Thread (был когда-то нехороший опыт), а взял AOSLoadGen, благо к нему претензий по стабильности работы не было В итоге получился, как я уже говорил, сферичейский конь в вакууме: - обходя план счетов (LedgerTable), по каждому счету запускаем отдельный поток, обегающий проводки по счету (LedgerTrans) Разумеется, сам алгоритм практической ценности не имеет, он нужен только для демонстрации Дальше появляются вопросы - как узнать о том, что созданный нами поток завершил свою работу? - как вернуть из него результаты в основной (родительский) поток? - как вообще организовать синхронизацию этих потоков? Пока нормального решения, которое действительно можно было использовать, я не нашел. Я точно не хочу использовать для обмена сообщениями таблицы, я не уверен, что хочу использовать глобальные переменные. Если у кого-то есть идеи, с радостью их выслушаю  | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Thanks. а что то ГЛОБАЛЬНОЕ использовать все же придется (как мне кажется)
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			По-моему можно использовать стандартные Виндовые средства для синхронизации потоков - события, семейство функций WaitFor*.
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от AndyD
			
			 
По-моему можно использовать стандартные Виндовые средства для синхронизации потоков - события, семейство функций WaitFor*. 
		
	 
		 | 
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от itfs
			
			 
Не повлияет, AOS почти всегда использует только 1 процессор, если только вы не хотите запустить 2-й экземпляр AOS-а на одной и той же машине. Общее правило №1: AOS-ы масштабируются "box"-ами, ставите рядом еще одну машину и разводите по ним пользователей.  
		
	2 Serge Kotov что такое "клиентский процесс" применительно к 3-х звенке? Под "клиентским процессом" я имел в виду один пользовательский коннект в 3-хзвенке, которому ax32serv выделяет собственный поток. Поэтому, собственно говоря, он и исполняется на одном процессоре. Т.е. разницу между процессом ОС и его потоками я знаю.   Любопытно откуда есть полное убеждение сразу у трех разных участников этой ветки, что AOS умеет работать только с одним процессором? Ведь это может, например, привести к рекомендации начинающему предприятию - клиенту поставить два однопроцессорных физических сервера вместо одного двухпроцессорного, что не есть хорошо. Проверить корректность работы AOS с несколькими процессорами очень просто. Достаточно запустить Performance Monitor с просмотром нагрузки раздельно по каждому процессору. ИМХО лучше не связываться с попыткой "расщепить" один поток на несколько процессоров. В реальной ситуации в трехуровневой конфигурации для двухпроцессорного сервера AOS одновременно работает обычно больше двух пользователей.  
		 | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Serge Kotov
			
			 
 Ведь это может, например, привести к рекомендации начинающему предприятию - клиенту поставить два однопроцессорных физических сервера вместо одного двухпроцессорного, что не есть хорошо. 
		
	Но если речь идет о том чтобы выбрать между 2-х и 4-х процессорной конфигурацией, то ... я на своих выводам настаиваю. to AndyD Теоритчески я согласен, существуют предпосылки для того, чтобы процесс отдавал на исполнение потоки различным процессорам. Допустим, что проблема синхронзации так или иначе решена. Но как факт, архитектура AOS-а такова, что не отдает выполнение пользовательских потоков другим процессорам, за исключением исполнения batch-ей. С уважением, itfs. С уважением, itfs.  | 
| 
	
 | 
| 
			
			 | 
		#19 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Ок спасибо за информацию,  в принципе логично, а с подтверждением опытом еще боле
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#20 | 
| 
			
			 ---------------- 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от itfs
			
			 
AOS почти всегда использует только 1 процессор.. 
		
	2-х и 4-х процессорной конфигурацией, то ... я на своих выводам настаиваю Я проводил такой опыт. Создал классик, который занимается вечным вычислением и исполняется на AOS-е. Запустил несколько клиентов и смотрел загрузку 4х процессорного сервера. 1 сеанс - 25% (1 проц 100%) 2 сеанса - 50% (2 проц 100%) 3 сеанса - 75% (3 проц 100%) и 4 сеанса - 100%  | 
| 
	
 |