Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Проверка программ на живучесть...  (Прочитано 21418 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Aleck D.Shadow
Опытный

tr
Offline Offline
Пол: Мужской

« : 10-02-2007 15:19 » 

, и корректную работу в режиме нехватки ресурсов.

Интересует следующее:
Существуют ли тестирующие программы, которые, например, делают очень частое обращение к диску,
или занимают на 100% процессор в случайные моменты времени или постоянно и т.п. ?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline 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
Опытный

tr
Offline Offline
Пол: Мужской

« Ответ #2 : 11-02-2007 12:33 » 

Это то без проблем, просто я думал что существуют какие нибудь тесты для
проверки. А-ля Driver Verifier, но для программ.
Записан
Scorp__)
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 11-02-2007 18:05 » 

Как я понял, целых решений стресс-тестов не бывает. Или я их не нашел. Но можно найти утилиты россыпью. Например утилита Mem Eat ест память. CPU Burner грузит процессор. Для диска не нашел...

Обычно стресс-тесты используются для определения устойчивости железа, но некоторые можно приспособить и для проверки устойчивости своей программы. Вот здесь http://www.benchmarkhq.ru/russian.html?/b_cpu.html есть подборка, но там далеко не все будет тебе полезно.
Записан

- А Вы сами-то верите в привидения?
- Конечно, нет, - ответил лектор и медленно растаял в воздухе.
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 11-02-2007 18:28 » 

Разрешите такой дилетантский вопрос. А есть ли смысл в таком тестировании ПО. По идеи все ресурсы в системе распределяет сама ОС. Т.е. получается, что тестируем-то мы ОС в данном случае. Да и к тому же, как программа отреагирует на длительную загрузку ЦП или винчестера? Да никак! Программа в течении работы неоднократно получает ресурс и опять отдает, спустя квант времени. Так какая же разница от того, что квант будет не наносекунды, а секунды, к примеру?
Записан

ещё один вопрос ...
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 11-02-2007 18:39 » 

nikedeforest, если программа работает , скажем , с портом или сокетом, разницу заметно будет имхо
Записан

nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 11-02-2007 19:49 » 

С этим, уже поспорить тяжелее Ага
Записан

ещё один вопрос ...
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 11-02-2007 20:47 » 

Писать программу нужно с учётом приоритетов. Так, чтобы критические по производительности части ОС не откладывала в долгий ящик. При этом если нагрузку CPU создаёт своя программа, то придётся её параллелить. Часто возникает вопрос разработки более эффективных алгоритмов и требуемых структур данных для них.

Стресс-тест целесообразен для определения:
а) предельных возможностей программы при работе на конкретной платформе,
б) требований к платформе для обеспечения требуемой производительности вычислительного комплекса.

Это одно уравнение, только в каждом случае в качестве неизвестного берутся разные его части.
« Последнее редактирование: 11-02-2007 20:51 от dimka » Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Aleck D.Shadow
Опытный

tr
Offline Offline
Пол: Мужской

« Ответ #8 : 12-02-2007 05:21 » 

To Scorp__):
Спасибо, посмотрим.

To Nikedeforest:
Если программа работает 24 часа в сутки, и 7 дней в неделю, то мне бы очень хотелось знать как себя ведет программа,
в случаях критических для системы в целом. Ведь срабатывают разного рода таймауты, а это значит программа должна самостоятельно восстановить соединение, или заново инициализироваться, при этом умудриться не допустить утечек, и прочего
сопутствующего добра.

To Dimka:
Согласен.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #9 : 12-02-2007 17:48 » 

Aleck D.Shadow, кстати, ты не один с такой прогой  ) Я тоже пишу и поддерживаю программу, которая должна работать круглый год (в теории) и вроде даже работает )
Записан

Aleck D.Shadow
Опытный

tr
Offline Offline
Пол: Мужской

« Ответ #10 : 14-02-2007 06:41 » 

Aleck D.Shadow, кстати, ты не один с такой прогой  ) Я тоже пишу и поддерживаю программу, которая должна работать круглый год (в теории) и вроде даже работает )
Всё зависит от сложности её работы (не программирования!) связь с БД, сбор данных, исп.протоколы и т.п.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 14-02-2007 10:25 » 

Как-то очень тяжело понять "нехватка ресурсов" на технологической машине.
Если есть нехватка => неправильно построена схема процесса.
Самый простой способ, и возможно, наиболее оптимальный, с точки зрения цена/надежность, разделение технологических задач на разные машины, соответсвенно оценив использование общих ресурсов, таких как сеть, базы данных, а тем более, если задачи на одной машинке, доступ к дисковым опреациям.
Обслуживание/стоимость/надежность - на разделенных процессах, читай машинах, выше.
Конечно, доказать это руководству/заказчику, задача не из легких.
Offtopic:

Вопрос к людям которые эту тему читают
Как часто в своей практике используют технологические машины?
И как к этому вопросу относится руководство/заказчик?

Под это можно и темку спецательно открыть, с опросом

Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #12 : 14-02-2007 16:41 » 

Aleck D.Shadow, есть база, есть много инфы с порта и из сети ) Всё непрерывно сохраняется в базу, часть бызы сохраняется в файлы, дабы не замусоривать. Короче ещё та сказка )))
Записан

Scorp__)
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #13 : 14-02-2007 21:54 » 

Sla, а что ты имеешь в виду под технологической машиной?
Распределенную систему труднее контролировать, так что утверждение, насчет надежности не бесспорно. К тому же не решает всех проблем. Пример: перегрузка сети, как ни разделяй рабочие процессы - это внешний фактор. Вот еще один: если ОС не реального времени, то возможен interrupt flood от неисправного устройства, который сожрет все процессорное время.

Записан

- А Вы сами-то верите в привидения?
- Конечно, нет, - ответил лектор и медленно растаял в воздухе.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #14 : 15-02-2007 10:43 » 

Scorp__), есть задачи и есть задачи,
Зачем на "технологической машине", неисправное устройство? (неисправное устройство и в ОСРВ также принесет немало хлопот)
Зачем "технологическую машину" включать в перегруженную сеть?

Если уж возникает вопрос достоверности обработки или доставки, то соответственно, требуются протоколы, гарантирующие доставку/обработку.

И вообще, о чем речь?
Вопрос  звучал: Проверка на живучесть при нехватке ресурсов
Т.е заведомо ввести машинку в такой режим, но здесь ты вроде и сам дал ответ.
Готовых инструментов, под все твои желания, вряд-ли найдется, а если и найдется - то будет стоить определенных много-много убиенных енотов.

Я знаю, что такое нехватка ресурсов, что такое зависшие процессы, необработанные транзакции, неотправленные отчеты (упс, это уже из другой серии). Есть собственные методы борьбы с этим.

Из личного опыта
Ввод девайса в стресс - обязательное условие тестирования
Ввод системы (программы) в стресс - перегрузка запросами, проверка реакции на прерывания и т.д.
До тестирования ОС руки не доходили, хотя когда-то чего-то пытались сделать, но потом поняли, что скорее нам это не нужно.

Хотелось бы спросить у Михалыча, у него есть опыт работы с QNX, как QNX успевает обработать такое большое количество прерываний и при этом не умереть? Улыбаюсь
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Scorp__)
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #15 : 15-02-2007 18:11 » 

Sla, погоди, я не очень понимаю твой термин. Вот машина рабочего места оператора в танке, это технологическая машина или нет? Там возможен просто выход устройства из строя в процессе эксплуатации, при этом необходимо, чтобы ПО не грохнулось, и вся система продолжала бы работать, пусть и с ограничениями. Но сначала все это хозяйство собирается на стенде, который не трясет, он никуда не едет и вообще живет в тепличных условиях. То есть при работе на стенде ПО будет показывать себя отлично, а в боевой работе может грохнуться, если его не проверить.

Ааа, я понял, ты имел в виду, что, как может быть постоянная нехватка ресурсов в системе. Такого, конечно быть не должно, но речь то шла именно про стресс-тестирование, просто не было именно этого термина. Кстати, бывает и постоянная нехватка ресурсов, когда архитектор в самом начале наплевал на тщательный выбор параметров системы и запаса "прочности". Мы, как правило, сталкиваемся с недостаточной пропускной способностью канала. При этом: "никто ничего переделывать не будет", а виновато в конечном итоге получается ПО Улыбаюсь Или вот перетирающиеся флешки, тоже хороший вариант Улыбаюсь
Записан

- А Вы сами-то верите в привидения?
- Конечно, нет, - ответил лектор и медленно растаял в воздухе.
sss
Специалист

ru
Offline Offline

« Ответ #16 : 16-02-2007 04:40 » 

cpustress.exe из Platform SDK
Записан

while (8==8)
Aleck D.Shadow
Опытный

tr
Offline Offline
Пол: Мужской

« Ответ #17 : 18-02-2007 07:35 » 

Scorp__):
В точку.
Sla:
У нас технологическая машина - это обычный или не обычный (в более бронированном корпусе) компьютер.
Исторически у нас называют "технологическим" все что связанно с выполнением той или иной технологии производства.
Проблема возникает не в проектировании, а заложенных изначально неучтенных(естественно) багов, т.е. вот если вот тут эта штука будет в этот момент времени здесь, а вот та штука будет вот тут, и еще человек включит тумблер то программа попадает в ловушку зацикливается и нагружает сеть, незначительно, но при этом начинает тормозить другая штука которая ни в коем случае не должна тормозить.
PS:
Нет предела совершенству.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines