УкраїнськаEnglishmRussian
Вхід/Новий
У темі багато повідомлень

Производительность шлюза данных


Автор Повідомлення
Повідомлення створено: 08. 07. 2009 [19:09]
almaz
Almaz Karimov
Contributor
Автор теми
Зареєстрован(а) с: 25.09.2008
Повідомлення: 516
Есть две станции, соединённые 100 мбит/сек ethernet (сеть не нагружена, пинги <= 1мсек):
1. Имеет на логическом уровне 8 контроллеров по 83 параметра в каждом с периодом обновления 100 мсек (загрузка процессора 40-50%, свободно ram 80%, своп отсутствует, обмен с HDD близок к нулю, трафик в сеть 5-10 кбайт/сек)
2. Имеет в шлюзе данных отражение логического уровня станции 1 с периодом обновления 1000 мсек, так как фактический опрос колеблется от 100 до 800 мсек (загрузка процессора 50-60%, свободно ram 60%, своп есть, но не используется, обмен с HDD 2-5 кбайт/сек, трафик в сеть 5-10 кбайт/сек.)
Передаваемых параметров много, но, судя по всему, есть запас ресурсов для увеличения производительности шлюза данных, которая составляет в среднем около 500 мсек на каждый контроллер логического уровня.
Возникли вопросы:
1. Где затор данных (асинхронный метод сбора данных через шлюз, группировка множества параметров в пакеты протокола self или др.)?
2. Как можно улучшить производительность шлюза данных до значения 100 мсек?

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Повідомлення створено: 09. 07. 2009 [09:07]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3747
almaz wrote:

1. Имеет на логическом уровне 8 контроллеров по 83 параметра в каждом с периодом обновления 100 мсек (загрузка процессора 40-50%, свободно ram 80%, своп отсутствует, обмен с HDD близок к нулю, трафик в сеть 5-10 кбайт/сек)

Модель убрали? Или это у Вас такая логика в контроллерах?
almaz wrote:

2. Имеет в шлюзе данных отражение логического уровня станции 1 с периодом обновления 1000 мсек, так как фактический опрос колеблется от 100 до 800 мсек (загрузка процессора 50-60%, свободно ram 60%, своп есть, но не используется, обмен с HDD 2-5 кбайт/сек, трафик в сеть 5-10 кбайт/сек.)
Передаваемых параметров много, но, судя по всему, есть запас ресурсов для увеличения производительности шлюза данных, которая составляет в среднем около 500 мсек на каждый контроллер логического уровня.

Если 500 на каждый, то у вас должно было выйти 4 секунды. icon_smile.gif
Они то запрашивают один источник, а значит и грузят его одновременно, в целом увеличивая время опроса каждого контроллера.

almaz wrote:

1. Где затор данных (асинхронный метод сбора данных через шлюз, группировка множества параметров в пакеты протокола self или др.)?

Для этого нужно проводить полноценный анализ, т.е. профайлинг этого процесса.

almaz wrote:

2. Как можно улучшить производительность шлюза данных до значения 100 мсек?

Делать выводы из профайлинга и выполнять оптимизацию.
Сейчас я этого делать не буду. Сейчас главное стабильность.
Из наиболее доступных и видимых решений это выключить, если включена, упаковку трафика по протоколу SelfSystem.

Learn, learn and learn better than work, work and work.
Повідомлення створено: 09. 07. 2009 [09:34]
almaz
Almaz Karimov
Contributor
Автор теми
Зареєстрован(а) с: 25.09.2008
Повідомлення: 516
В контроллерах логического уровня всего лишь массив переменных, которые обрабатываются блочным вычислителем. Все написано с чистой базы OpenSCADA.

4 секунды не получается icon_smile.gif они же работают параллельно.

Абсолютно согласен, что главное стабильность. Просто хотелось сделать динамичную визуализацию реального времени с периодом в 100 мсек. Ну да ладно пока устраивает и 1 сек.

Зато мы знаем, что Вы знаете, что есть еще резервы для увеличения производительности. icon_smile.gif

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Повідомлення створено: 09. 07. 2009 [10:29]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3747
almaz wrote:

В контроллерах логического уровня всего лишь массив переменных, которые обрабатываются блочным вычислителем. Все написано с чистой базы OpenSCADA.

А проц тогда какой? У меня полноценная модель большого ТП на 40% проца 2ГГц ест. icon_smile.gif

almaz wrote:

Зато мы знаем, что Вы знаете, что есть еще резервы для увеличения производительности. icon_smile.gif

Это какие-же? Я профайлинга не проводил.

Learn, learn and learn better than work, work and work.
Повідомлення створено: 09. 07. 2009 [11:05]
almaz
Almaz Karimov
Contributor
Автор теми
Зареєстрован(а) с: 25.09.2008
Повідомлення: 516
Да у нас 1 станция - миникомпьютер-контроллер с 1 ГГц процессором. В OpenSCADA, в основном, работают логический уровень, блочный вычислитель и сбор данных. ТП можно классифицировать как средний.
Упаковка/неупаковка пакетов протокола Self уменьшает/увеличивает кол-во трафика, а на производительность не влияет или влияет слабо.
Вроде нашел способ увеличить производительность:
- контроллеры шлюза данных, содержащие около 5 параметров, пролетают через сеть за 10-50 мсек;
- контроллеры, содержащие около 10 параметров, за 30-100 мсек;
- контроллеры, содержащие около 80 параметров, за 100-800 мсек.
Причем это независимо от количества контроллеров.
Так что, думаю, надо правильно расставить переменные для передачи через шлюз, задать правильно периоды сбора контроллеров шлюза и все будет хорошо.

[Повідомлення редагувалось 1 раз(ів), останній раз 09.07.2009 в 11:06.]

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Повідомлення створено: 09. 07. 2009 [12:18]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3747
almaz wrote:

Вроде нашел способ увеличить производительность:
- контроллеры шлюза данных, содержащие около 5 параметров, пролетают через сеть за 10-50 мсек;
- контроллеры, содержащие около 10 параметров, за 30-100 мсек;
- контроллеры, содержащие около 80 параметров, за 100-800 мсек.
Причем это независимо от количества контроллеров.
Так что, думаю, надо правильно расставить переменные для передачи через шлюз, задать правильно периоды сбора контроллеров шлюза и все будет хорошо.

Врядли. Исходящие транспорты сейчас работают монопольно, следовательно пока он не дождётся ответа запроса первого контроллера остальные будут ждать.
Попробую сейчас добавить разные идентификаторы источников транспортов, для разных контроллеров. В таком случае будут создаваться разные исходящие транспорты для разных контроллеров и запросы будут параллельны.

Learn, learn and learn better than work, work and work.
Повідомлення створено: 09. 07. 2009 [12:59]
almaz
Almaz Karimov
Contributor
Автор теми
Зареєстрован(а) с: 25.09.2008
Повідомлення: 516
А, если в модуле "Транспорты" станции 2 добавить несколько внешних хостов с одним IP адресом и разными портами (соответственно на станции 1 добавить несколько входных сокетов), и каждый контроллер шлюза данных пустить через свой отдельный шлюз?
Конечно тогда это получится не список внешних хостов, а список шлюзов.

[Повідомлення редагувалось 1 раз(ів), останній раз 09.07.2009 в 13:00.]

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Повідомлення створено: 09. 07. 2009 [13:31]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3747
Уже сделал. Теперь создаются и используются отдельные транспорты на контроллер. Пробуйте.

Learn, learn and learn better than work, work and work.
Повідомлення створено: 09. 07. 2009 [19:37]
almaz
Almaz Karimov
Contributor
Автор теми
Зареєстрован(а) с: 25.09.2008
Повідомлення: 516
Спасибо!!! Скачал 928 срез. Будем тестировать

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Повідомлення створено: 10. 07. 2009 [09:54]
Aleksey
Aleksey Popkov
Contributor
Зареєстрован(а) с: 31.07.2008
Повідомлення: 326
almaz wrote:

Спасибо!!! Скачал 928 срез. Будем тестировать

Как там тестирование прошло ? Интересно весьма.



3112