Pull to refresh

Comments 34

Было бы также интересно тестирование в условиях высокой нагрузки/нестабильно работы локальной сети.
Это проще. Идём на рутрекер и лёгким движением руки обеспечиваем высокую нагрузку и нестабильную работу локальной сети.
А интересная мысль про рутрекер, но как придать на рутрекере этой нестабильности какой-то определнный характер: сильная загрузка… слабая загрузка… сильная загрузка и т.п. Да и интернет не везде есть.

Однако такой вопрос про сеть в своей программе я тоже не решил. Я просто по полной загружал сеть. сначала сделал в несколько потоков отправку пингов в бешеном количестве, но потом вспомнил, что «убить» машину отправляя на неё пинги почти невозможно. Если времени на пинг нету — машина просто не реагирует на них.
После этого сделал отправку/прием пакетов по UDP в несколько потоков. Это решило проблему по сильной нагрузки на сеть, а менять нагрузку со временем я уже не стал.
iperf позволяет получить линейную скорость, у меня получалось выжать примерно 8.5Гбит/с в один поток по TCP.
iperf действительно хорошая штука, жаль я узнал о ней на моного позже.
d-itg тоже неплохая штука для создания нагрузки, причем дает большую повторяемость результатов
у iperf-а при тех же условиях в сети показания между соседними тестами отличались на 15-20%
Рутрекер не даст хорошей нагрузки, или это будет слишком дорого. (Сколько там стоит 10G канал до M-IX?)
Загрузка процессора user-space вещами — это ерунда. Вот trashing в районе PCI-E, вот это да, это сила. Я один раз такое наблюдал из-за бага в драйвере самого PCI-E. Симптомы были крайне необычные: 0% загрузки всех, LA зашкаливает, банальная ls отрабатывает десятки секунд, скорость на диске стремится к сотням килобайт, лагает сеть, лагает текстовая консоль, лагает всё — и никаких признаков того, что система упёрлась в боттлнек, то есть нет самого боттлнека. Вот там да, там было очень сурово… А перезагруженный всякой ерундой процессор — это не особо интересно. Всё равно все RT-секции ядра (например, верхние половинки прерываний) отработают со скоростью процессора, сколько бы вы их не грузили.
Все правильно говорите. Действительно, причин «трешинга» может быть огромная куча, так же как и следствий. Но задача, которую я описал в статье несколько проще, чем «имитировать полный треш на всех аппаратных и программных уровнях».

Нехватка процессорного времени для программы может вызвать и вскрыть некоторые ошибки, которые может никогда не проявятся до тех пор, пока программа не заработает на объекте вместе с кучей других прожорливых программ. А тестировать программисту свою программу на своем месте, запуская всю эту кучу программ у себя, и сидеть ждать, когда там что-то займет много времени и слетит — дело неблагодарное.
Говорю не просто так — таким образом имитированная нагрузка действительно позволила поймать ошибку, которая возникала раз в несколько суток, и выявить пару других недоработок.

Ну а способ оценки с помощью временных «шкал» позволяет оценить работу программы или совместно нескольких программ, но естественно лишь с одной из сотен сторон.
> Я являюсь участником разработки автоматизированных систем управления высокой надежности, которые применяются на электростанциях, космодромах, сложных производствах и т.п.

С чем связан выбор винды и дельфи для софта для таких мест?
Дело в том, что винда — одна из нескольких осей, которые используются: винда, линукс, QNX, dos. Каждая ось — для своих задач. Винда используется в тех частях системы, где предполагаются пользователи, несколько далекие от компьютеров. Примерами у нас могут служить инженеры-технологи, которые составляют и вбивают технологические алгоритмы, или операторы, которые собственно управляют на мнемосхемах всей системой, тестировщики стоек и т.п.

Выбор языка в самой винде тоже не однозначен в сторону дельфи. Используется и С++.
Для драйверов и подобных программ используется С, для программ, где много окон, кнопок и т.п. используется дельфи. Вы скажите, что можно C builder использовать — да, но есть еще фактор «не переделывать же все» =)
Несколько некорректно выразился:
«где предполагаются пользователи, несколько далекие от компьютеров»
скорее хотел написать вот так:
пользователи-специалисты не сколько в компьютерах, сколько в самих технологических процессах, для которых мы производим системы. Ну смысл понятен.
Не совсем, если честно.
В моём представлении, пользователь (оператор) в таких системах — это не вчерашняя домохозяйка или школьник. Их учат работать, учат пользоваться рабочими инструментами (т.е. и программами тоже). Т.е. конкретно функциями винды (или, боже упаси, dos), им пользоваться не надо (клипборд, перетаскивание файликов, буквы дисков, кнопки окошек), а надо специализированной программой, которой без разницы, на чем работать — вопрос только в требованиях к условиям (я так понимаю, что у космодрома особые требования именно к надежности, а привычность пользователя к цвету заголовка окна явно не была в требованиях к проекту и близко).

Поправьте, если я не прав.
Да, применительно к операторам — вы правы — они редко пользуются чем-то кроме определенной программы, хотя бывает, что нужно что-то кроме…

Но есть еще, например, инженеры-технологи. Они работают с программами, которые собственно на объекте и не устанавливаются, а устанавливаются только файлы-результаты работы тех программ.
А вот им как раз важен привычный виндоус, ворд, эксель, документации, почта, файлики, картинки даже скайп для связи или аська. Ну вообщем все-все.

Надеюсь ответил на ваш вопрос.
Да, вполне.

Можно еще вопрос?

Винда, хотя бы, в самых ответственных местах не используется?
Повисший скайп не приведёт к выводу всех стержней из реактора? «О-оу» из аськи не вызовет отключение маршевых двигателей через пару секунд после отрыва от площадки?
Самое ответственное место, где используется винда — пульт оператора.
Разделяю ваши опесения, но образно говоря — там используется три винды одновременно (три дублирующих друг друга компьютера и монитора) повисание одного компа не повлечет никаких последствий. Сами алгоритмы управления и т.п. крутятся не пульте оператора. Так что в принципе все нормально.

Ну а выбор винды для пульта оператора мне думается исторический, хотя тут могу ошибаться.
Кстати, насчет реакторов и винды. Совсем недавно (в 2005-2010) на некоторых АЭС заменили систему СКАЛА на СКАЛА-микро. «Родная» СКАЛА это огромная ЭВМ, собранная на элементах малой интеграции, использующая магнитную ленту и т.п. Считала преимущественно в восьмеричной системе счисления, поддерживала многозадачность (несколько циклически исполняемых расчетных и регистрирующих программ) и учитывала порядка десяти тысяч измеряемых параметров в реальном времени. И все это в 1973 году.
У меня лично к таким системам больше доверия, чем к винде. Пусть и в трех экземплярах.

Хотя бы потому, что эта система специально проектировалась для АЭС. В отличии от ОС общего назначения для домохозяек.
Ну вы зря так категоричны. Многолетний опыт использования в том числе и виндовс в подобных задачах не дал повода усомниться в надежности и своих остальных плюсах. Трудности есть, ну а куда без них. Главное — прямые руки.

Тем более, что есть с чем сравнивать. Заказчики разные — кто-то хочет линукс, кто-то виндоус, кто-то дос.

> Многолетний опыт использования в том числе и виндовс в подобных задачах не дал повода усомниться в надежности

Вспоминается застопорившийся эсминец под управлением NT. Ну ещё зависший ноут у Гейтса на презентации, но это мелочи.

При всех достоинствах винды, это не система реального времени. Ставить её на управление чем-то сложнее станка — нафиг-нафиг.
Хотя Stuxnet показал, что все системы падают. Но есть разница — падение от внешних воздействий или падение из-за глюков в самой системе.
Честно говоря, не могу с вами не согласиться!
Когда приходил на эту работу — был несколько удивлен выбором windows для некоторых задач. Однако, годы сгладили мое недоумение.
Что касается того, что думает начальство — вы же понимаете, что для кого-то ваши слова — аргумент, для кого-то — случайность, для кого-то — кривые руки. И спорить тут порой бесполезно…
Да… Ждал этого хорошего вопроса.
К сожалению по трудовому договору программы принадлежат не мне, а компании.
Я могу только поделиться принципом работы…
Глубоко извиняюсь.

Но программа не шибко сложная, можно будет и переложить её на другую среду, чтобы можно было выложить.
Ну так предложите руководству опубликовать ее в open sourse. Это сильно повышает карму компании, и ничего ей не стоит =)
Вариант! =) Но меня тут просветили про лазарус. Хочется попробовать. Руки дойдут — переделаю под него и выложу интересующимся.
Мне кажется, гораздо хуже вещи, которые вызывают постоянные обращения к диску, например своп, выделение больших объемов памяти, случайные чтения/запись в несколько потоков. Работа с видекартой через DirectX (чтобы тормозил графический интерфейс).

И да, я тоже считаю, что использовать кривую не-мандатно-настроенную винду с дельфи на таких объектах ненадежно и непрофессионально. В ней слишком много лишних функций. И она *не предназначена* для использования на серьезных объектах, Windows — это ОС в первую очередь для использования на рабочих станциях без выскоих требований к надежности. Вам туда установят американцы какой-нибудь вирус или троян, ракета уйдет не на ту орбиту, и никто отвечать за это не будет, а деньги на разработку естественно уже все попилены.

Вам бы стоило заодно всякими зиродей эксплойтами и зараженными флешками все это тестировать.
Да, чтение/запись в несколько потоков и выделение больших объемов памяти — все есть.
Более того не просто выделение большого объема памяти, но и тестирование при постоянном забивании памяти все больше и больше. Т.к. если просто занять память например 10 ГБ, толку от этого не будет — часть уйдет в файл подкачки, в реальной оперативке освободится несколько мегабайт и все.

Уважаемые Хабралюди, возможно я не так выразился, ЕСТЕСТВЕННО винда используется не обычная с рутрекера или прилавков магазинов, а так сказать ручной сборки.

Так же используются вндовзы, которые поставляются не нашей компанией.
У Microsoft имеется же целый пакет для подобного тестирования. Вообще оно чтобы получить сертификат, но также и просто для тестирования софта, позволяет воспроизвести практически любые нагрузки на систему/железо или не стандартное поведение. Рушить память, забивать диск, убивать GDI подсистему и еще сотни других вещей, там целый dvd диск.
Интересно бы взглянуть, не поделитесь линком?
Ну линк не знаю, мне на работе просто диски давали от MS, а это было давно уже. Если не ошибаюсь, это был WHQL комплекс, в частности интересны HCT тесты. Там действительно большой комплекс, в наборах десятки приложений которые могут подогнать систему под любые условия.
Спасибо, действительно хорошая штука, запишу себе.
Там есть подобный тест, вот что нашел в этой большой массе на сайте майкрософта по теме топика:
msdn.microsoft.com/ru-ru/library/windows/hardware/hh439324
заставляет уснуть систему.
Поддерживается много языков, и так или иначе — программировать все равно придется, и имитировать тот самый «управляемый хаос» с заданным распределением тоже придется ручками, если захочется сделать подобный тест. Принцип останется прежним, средство достижения поменяется.
Скорее всего их
HRESULT Sleep(
  [in]  LONG nSleepState
);

заставляет уснуть очень основательно. Интересно поразмыслить над тем, как они это сделали.

Ну а что касается оценки, на сколько программа, в каком количестве, с каким распределением устраивает сама эти sleep, такого судя по всему у них пока что нет.
Спасибо, тоже хорошая вещь! Жаль, что идет только вместе с Visual Studio Ultimate.
И на сколько я понял, анализирует программы, написанные непосредственно в VS.

Пора вносить дополнения к топику.
спасибо EndUser, amarao, int80h за дельные ссылки по теме. Жаль кармы на всех не хватило. вношу дополнения
Sign up to leave a comment.

Articles