| 
			| 
					
						| Aleck D.Shadow | 
								|  | «  : 10-02-2007 15:19 »  |  | 
 
 , и корректную работу в режиме нехватки ресурсов.
 Интересует следующее:
 Существуют ли тестирующие программы, которые, например, делают очень частое обращение к диску,
 или занимают на 100% процессор в случайные моменты времени или постоянно и т.п. ?
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #1 : 10-02-2007 15:27 »  |  | 
 
 Aleck D.Shadow, так сделай сам )  Особенно с 100% процессора - без проблем сделать например main(/*...*/) // не знаю, что тут пишется )){
 for(int i=0;i<100000;i++)
 {
 DWORD dwdRANDOM_PAUSE=...;
 DWORD dwdRANDOM_N=...;
 int iii;
 for(;dwdRANDOM_N;dwdRANDOM_N--){iii=iii*iii}; //100%
 Sleep(dwdRANDOM_PAUSE);//пауза случайная
 }
 return 0;
 }
 
 |  
						| 
								|  |  
								| « Последнее редактирование: 10-02-2007 15:30 от Алексей1153++ » |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| Aleck D.Shadow | 
								|  | « Ответ #2 : 11-02-2007 12:33 »  |  | 
 
 Это то без проблем, просто я думал что существуют какие нибудь тесты для проверки. А-ля Driver Verifier, но для программ.
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Scorp__) 
								Молодой специалист    Offline 
								Пол:    | 
								|  | « Ответ #3 :  11-02-2007 18:05 »   |  | 
 
 Как я понял, целых решений стресс-тестов не бывает. Или я их не нашел. Но можно найти утилиты россыпью. Например утилита Mem Eat ест память. CPU Burner грузит процессор. Для диска не нашел... Обычно стресс-тесты используются для определения устойчивости железа, но некоторые можно приспособить и для проверки устойчивости своей программы. Вот здесь http://www.benchmarkhq.ru/russian.html?/b_cpu.html  есть подборка, но там далеко не все будет тебе полезно. |  
						| 
								|  |  
								|  |  Записан | 
 
 - А Вы сами-то верите в привидения? - Конечно, нет, - ответил лектор и медленно растаял в воздухе.
 |  |  | 
	| 
			| 
					
						| nikedeforest | 
								|  | « Ответ #4 : 11-02-2007 18:28 »  |  | 
 
 Разрешите такой дилетантский вопрос. А есть ли смысл в таком тестировании ПО. По идеи все ресурсы в системе распределяет сама ОС. Т.е. получается, что тестируем-то мы ОС в данном случае. Да и к тому же, как программа отреагирует на длительную загрузку ЦП или винчестера? Да никак! Программа в течении работы неоднократно получает ресурс и опять отдает, спустя квант времени. Так какая же разница от того, что квант будет не наносекунды, а секунды, к примеру? |  
						| 
								|  |  
								|  |  Записан | 
 
 ещё один вопрос ... |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #5 : 11-02-2007 18:39 »  |  | 
 
 nikedeforest, если программа работает , скажем , с портом или сокетом, разницу заметно будет имхо |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| nikedeforest | 
								|  | « Ответ #6 : 11-02-2007 19:49 »  |  | 
 
 С этим, уже поспорить тяжелее   |  
						| 
								|  |  
								|  |  Записан | 
 
 ещё один вопрос ... |  |  | 
	| 
			| 
					
						| Dimka 
								ДеятельКоманда клуба    Offline 
								Пол:    | 
								|  | « Ответ #7 : 11-02-2007 20:47 »  |  | 
 
 Писать программу нужно с учётом приоритетов. Так, чтобы критические по производительности части ОС не откладывала в долгий ящик. При этом если нагрузку CPU создаёт своя программа, то придётся её параллелить. Часто возникает вопрос разработки более эффективных алгоритмов и требуемых структур данных для них.
 Стресс-тест целесообразен для определения:
 а) предельных возможностей программы при работе на конкретной платформе,
 б) требований к платформе для обеспечения требуемой производительности вычислительного комплекса.
 
 Это одно уравнение, только в каждом случае в качестве неизвестного берутся разные его части.
 |  
						| 
								|  |  
								| « Последнее редактирование: 11-02-2007 20:51 от dimka » |  Записан | 
 
 Программировать - значит понимать (К. Нюгард)Невывернутое лучше, чем вправленное (М. Аврелий)
 Многие готовы скорее умереть, чем подумать (Б. Рассел)
 |  |  | 
	| 
			| 
					
						| Aleck D.Shadow | 
								|  | « Ответ #8 : 12-02-2007 05:21 »  |  | 
 
 To Scorp__):Спасибо, посмотрим.
 
 To Nikedeforest:
 Если программа работает 24 часа в сутки, и 7 дней в неделю, то мне бы очень хотелось знать как себя ведет программа,
 в случаях критических для системы в целом. Ведь срабатывают разного рода таймауты, а это значит программа должна самостоятельно восстановить соединение, или заново инициализироваться, при этом умудриться не допустить утечек, и прочего
 сопутствующего добра.
 
 To Dimka:
 Согласен.
 
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #9 : 12-02-2007 17:48 »  |  | 
 
 Aleck D.Shadow, кстати, ты не один с такой прогой  ) Я тоже пишу и поддерживаю программу, которая должна работать круглый год (в теории) и вроде даже работает ) |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| Aleck D.Shadow | 
								|  | « Ответ #10 : 14-02-2007 06:41 »  |  | 
 
 Aleck D.Shadow, кстати, ты не один с такой прогой  ) Я тоже пишу и поддерживаю программу, которая должна работать круглый год (в теории) и вроде даже работает )
 Всё зависит от сложности её работы (не программирования!) связь с БД, сбор данных, исп.протоколы и т.п. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #11 : 14-02-2007 10:25 »  |  | 
 
 Как-то очень тяжело понять "нехватка ресурсов" на технологической машине. Если есть нехватка => неправильно построена схема процесса. Самый простой способ, и возможно, наиболее оптимальный, с точки зрения цена/надежность, разделение технологических задач на разные машины, соответсвенно оценив использование общих ресурсов, таких как сеть, базы данных, а тем более, если задачи на одной машинке, доступ к дисковым опреациям. Обслуживание/стоимость/надежность - на разделенных процессах, читай машинах, выше. Конечно, доказать это руководству/заказчику, задача не из легких. Offtopic: Вопрос к людям которые эту тему читают
 Как часто в своей практике используют технологические машины?
 И как к этому вопросу относится руководство/заказчик?
 
 Под это можно и темку спецательно открыть, с опросом
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #12 : 14-02-2007 16:41 »  |  | 
 
 Aleck D.Shadow, есть база, есть много инфы с порта и из сети ) Всё непрерывно сохраняется в базу, часть бызы сохраняется в файлы, дабы не замусоривать. Короче ещё та сказка ))) |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| Scorp__) 
								Молодой специалист    Offline 
								Пол:    | 
								|  | « Ответ #13 : 14-02-2007 21:54 »  |  | 
 
 Sla, а что ты имеешь в виду под технологической машиной? Распределенную систему труднее контролировать, так что утверждение, насчет надежности не бесспорно. К тому же не решает всех проблем. Пример: перегрузка сети, как ни разделяй рабочие процессы - это внешний фактор. Вот еще один: если ОС не реального времени, то возможен interrupt flood от неисправного устройства, который сожрет все процессорное время.
 
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 - А Вы сами-то верите в привидения? - Конечно, нет, - ответил лектор и медленно растаял в воздухе.
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #14 : 15-02-2007 10:43 »  |  | 
 
 Scorp__), есть задачи и есть задачи,  Зачем на "технологической машине", неисправное устройство? (неисправное устройство и в ОСРВ также принесет немало хлопот) Зачем "технологическую машину" включать в перегруженную сеть? Если уж возникает вопрос достоверности обработки или доставки, то соответственно, требуются протоколы, гарантирующие доставку/обработку.  И вообще, о чем речь? Вопрос  звучал: Проверка на живучесть при нехватке ресурсов Т.е заведомо ввести машинку в такой режим, но здесь ты вроде и сам дал ответ. Готовых инструментов, под все твои желания, вряд-ли найдется, а если и найдется - то будет стоить определенных много-много убиенных енотов. Я знаю, что такое нехватка ресурсов, что такое зависшие процессы, необработанные транзакции, неотправленные отчеты (упс, это уже из другой серии). Есть собственные методы борьбы с этим. Из личного опыта Ввод девайса в стресс - обязательное условие тестирования Ввод системы (программы) в стресс - перегрузка запросами, проверка реакции на прерывания и т.д. До тестирования ОС руки не доходили, хотя когда-то чего-то пытались сделать, но потом поняли, что скорее нам это не нужно. Хотелось бы спросить у Михалыча, у него есть опыт работы с QNX, как QNX успевает обработать такое большое количество прерываний и при этом не умереть?   |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Scorp__) 
								Молодой специалист    Offline 
								Пол:    | 
								|  | « Ответ #15 : 15-02-2007 18:11 »  |  | 
 
 Sla, погоди, я не очень понимаю твой термин. Вот машина рабочего места оператора в танке, это технологическая машина или нет? Там возможен просто выход устройства из строя в процессе эксплуатации, при этом необходимо, чтобы ПО не грохнулось, и вся система продолжала бы работать, пусть и с ограничениями. Но сначала все это хозяйство собирается на стенде, который не трясет, он никуда не едет и вообще живет в тепличных условиях. То есть при работе на стенде ПО будет показывать себя отлично, а в боевой работе может грохнуться, если его не проверить. Ааа, я понял, ты имел в виду, что, как может быть постоянная нехватка ресурсов в системе. Такого, конечно быть не должно, но речь то шла именно про стресс-тестирование, просто не было именно этого термина. Кстати, бывает и постоянная нехватка ресурсов, когда архитектор в самом начале наплевал на тщательный выбор параметров системы и запаса "прочности". Мы, как правило, сталкиваемся с недостаточной пропускной способностью канала. При этом: "никто ничего переделывать не будет", а виновато в конечном итоге получается ПО    Или вот перетирающиеся флешки, тоже хороший вариант   |  
						| 
								|  |  
								|  |  Записан | 
 
 - А Вы сами-то верите в привидения? - Конечно, нет, - ответил лектор и медленно растаял в воздухе.
 |  |  | 
	| 
			| 
					
						| sss 
								Специалист    Offline | 
								|  | « Ответ #16 : 16-02-2007 04:40 »  |  | 
 
 cpustress.exe из Platform SDK |  
						| 
								|  |  
								|  |  Записан | 
 
  while (8==8)  |  |  | 
	| 
			| 
					
						| Aleck D.Shadow | 
								|  | « Ответ #17 : 18-02-2007 07:35 »  |  | 
 
 Scorp__): В точку.
 Sla:
 У нас технологическая машина - это обычный или не обычный (в более бронированном корпусе) компьютер.
 Исторически у нас называют "технологическим" все что связанно с выполнением той или иной технологии производства.
 Проблема возникает не в проектировании, а заложенных изначально неучтенных(естественно) багов, т.е. вот если вот тут эта штука будет в этот момент времени здесь, а вот та штука будет вот тут, и еще человек включит тумблер то программа попадает в ловушку зацикливается и нагружает сеть, незначительно, но при этом начинает тормозить другая штука которая ни в коем случае не должна тормозить.
 PS:
 Нет предела совершенству.
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	|  |