Реальное время в линукс (Возможно ли? Как?)
Модератор: Модераторы разделов
-
alexi
- Сообщения: 24
Реальное время в линукс
Добрый день.
Еслть проблема. В подземелье стоит машина на которой установлен линух. На машине крутится программа, которая по запуску через терминал начинает циклически сдвигать на определенное значение часть установки, при этом постоянно проверяя положение этой части в пространстве. После того как установка сдвинута, по езернет (100 мб) сети на машину стояшюю примерно 30 метров выше и метрах в 100 по длине кабеля также работающую под линухом через pipe отправляется текущее положение установки и еще пара чисел одно из которых номер сдвига в серии, второе тип пакета, условно 1 или 2. Спустя секунду машина внизу читает значение с ком порта, оправляет его туда-же что и первое число, и двигает установку в следующую позицию. Машина наверху принимает первую последовательность, включает АЦП делает примерно 250 измерений до момента пока придет вторая последовательность, по которой АЦП останавливется и машина ждет новый пакет.
Так вот, примерно 80 процентов времени все работает нормально. Но иногда случается, что машина внизу посылает по сети пакеты с опозданием до 30 секунд.
При этом на ней работает только то что жизненно важно. Все остальное кастрировано. Своп отключен.
В сегменте сети сидят только 3 машины (третья аналогична первой), и он больше никуда физически не подключен.
Может кто сталкивался с подобной проблемой. Подскажите как решали.
Еслть проблема. В подземелье стоит машина на которой установлен линух. На машине крутится программа, которая по запуску через терминал начинает циклически сдвигать на определенное значение часть установки, при этом постоянно проверяя положение этой части в пространстве. После того как установка сдвинута, по езернет (100 мб) сети на машину стояшюю примерно 30 метров выше и метрах в 100 по длине кабеля также работающую под линухом через pipe отправляется текущее положение установки и еще пара чисел одно из которых номер сдвига в серии, второе тип пакета, условно 1 или 2. Спустя секунду машина внизу читает значение с ком порта, оправляет его туда-же что и первое число, и двигает установку в следующую позицию. Машина наверху принимает первую последовательность, включает АЦП делает примерно 250 измерений до момента пока придет вторая последовательность, по которой АЦП останавливется и машина ждет новый пакет.
Так вот, примерно 80 процентов времени все работает нормально. Но иногда случается, что машина внизу посылает по сети пакеты с опозданием до 30 секунд.
При этом на ней работает только то что жизненно важно. Все остальное кастрировано. Своп отключен.
В сегменте сети сидят только 3 машины (третья аналогична первой), и он больше никуда физически не подключен.
Может кто сталкивался с подобной проблемой. Подскажите как решали.
-
d_Sun
- Сообщения: 291
Re: Реальное время в линукс
ИМХО дело тут не в реальном времени... По TCP трафик гоняете?
Моя подпись сильно длинная :)
-
Данил
- Сообщения: 944
- ОС: windows xp, cruncheee, ddwrt
Re: Реальное время в линукс
А какое ядро?
Скачай исходники самого нового ядра, (ftp://kernel.org)
Включи опцию Preemptible Kernel (система реального времени)
Вкомпиль опции нужные сети прямо в ядро.
А также драйвер карточки.
Если тачка слабая, то удели время глубокой оптимизации под твой сундук.
зы: (читай man gcc)
Проблема исчезнет 100%
Хотя дело может быть в настройках фаирвола.
Скачай исходники самого нового ядра, (ftp://kernel.org)
Включи опцию Preemptible Kernel (система реального времени)
Вкомпиль опции нужные сети прямо в ядро.
А также драйвер карточки.
Если тачка слабая, то удели время глубокой оптимизации под твой сундук.
зы: (читай man gcc)
Проблема исчезнет 100%
Хотя дело может быть в настройках фаирвола.
ASUS eee pc 701 [windowsXP sp3] [Ubuntu linux]
wi-fi router d-link dir-400 [ddWRT v24 SP1 linux]
[sony psp 2008 slim wi-fi netBSD]
nas d-link dsm-600
Противник HAL NETWORKMANAGER и других подобных паделок!!!
wi-fi router d-link dir-400 [ddWRT v24 SP1 linux]
[sony psp 2008 slim wi-fi netBSD]
nas d-link dsm-600
Противник HAL NETWORKMANAGER и других подобных паделок!!!
-
alexi
- Сообщения: 24
Re: Реальное время в линукс
Трафик гоняем по ТСР. Но дело тут в операционке. Примерно аналогичная конструкция работающая под win2000 таких проблем не имеет.
Данил писал(а): ↑28.09.2005 21:00А какое ядро?
Скачай исходники самого нового ядра, (ftp://kernel.org)
Включи опцию Preemptible Kernel (система реального времени)
Вкомпиль опции нужные сети прямо в ядро.
А также драйвер карточки.
Если тачка слабая, то удели время глубокой оптимизации под твой сундук.
зы: (читай man gcc)
Проблема исчезнет 100%
Хотя дело может быть в настройках фаирвола.
Вы наверно не совсем внимательно читали мой пост.
Я говорю не о миллисекундах. Я говорю о секундах задержки. СЕКУНДАХ!!!
Никакая оптимизация тут не поможет.
Пробовал на ядрах 2.4 и 2.6 Одинаково. И опцию вышеуказанную тоже дергал.
-
Nab
- Сообщения: 257
Re: Реальное время в линукс
Не бейте сильно
, но я подозреваю что виноват именно стек TCP/IP,
моя скромная рекомендация:
Если софт не очень платформенно зависим, то есть разрабатываете сами, и есть желание решить раз и навсегда, то QNX вас спасет, в особенности если будете юзать только FLEET а не TCP/IP. Он под такие задачи и затачивался...
моя скромная рекомендация:
Если софт не очень платформенно зависим, то есть разрабатываете сами, и есть желание решить раз и навсегда, то QNX вас спасет, в особенности если будете юзать только FLEET а не TCP/IP. Он под такие задачи и затачивался...
-
DW
- Бывший модератор
- Сообщения: 662
- Статус: и это еще не все или ничего.
Re: Реальное время в линукс
извините что вмешиваюсь, но если речь идет о реальном времени, то почему бы не попробовать дистрибутивы реального времени? тот же Sand Linux, недавно представленный Linuxcenter'ом на LinuxLand.
подумал -> выпил -> подумал -> ... но недавно врачи запретили пить.
-
d_Sun
- Сообщения: 291
Re: Реальное время в линукс
Нет... QNX тут явно не к месту!
alexi Расскажите детально, что крутится на всех машинах в этой сетке. Если возможно - код клиентов и сервера в студию ( ту часть где socket() )! Приорететы этих процессов тоже сюда! Вобщем все что можно
Моя подпись сильно длинная :)
-
alexi
- Сообщения: 24
Re: Реальное время в линукс
Nab писал(а): ↑30.09.2005 20:02Не бейте сильно, но я подозреваю что виноват именно стек TCP/IP,
моя скромная рекомендация:
Если софт не очень платформенно зависим, то есть разрабатываете сами, и есть желание решить раз и навсегда, то QNX вас спасет, в особенности если будете юзать только FLEET а не TCP/IP. Он под такие задачи и затачивался...
Я бы с радостью использовал QNX но его у меня нет. На сайте раньше раздавали бесплатно, сейчас только триал. А мне нужна система которая будет работать долго. Я не хочу каждый месяц переустанавливать и настраивать все. Или я здесь в чемто ошибаюсь?
Второе, новую систему придется осваивать. А на это уйдет время. Много времени. Ломать уже настроенную и хоть как-то работающую систему, чтобы поэкспериментировать, мне никто не даст.
Ну и наконец, для линукса написан софт. На новую систему его придется портировать. И не факт что будет работать.
Однако, я очень сильно удивлен тем, что в вин2000 таких проблем с такой большой задержкой нет. Там есть свои проблемы в виде своп файла. Помогает его совсем отключать.
Можно это подробнее.
Я вот сейчас поглядел в гугле, ничего кроме общих фраз не нашел.
Правда тут еще один момент, мне нужна бесплатная система. Так как времена все таки не очень маленькие, и никто не помрет если система не сможет обработать все как надо. Мне это просто добавит головной боли позже.
В таких условиях никто не будет платить бешенные деньги.
-
d_Sun
- Сообщения: 291
Re: Реальное время в линукс
Ну это вы плохо искали
Моя подпись сильно длинная :)
-
alexi
- Сообщения: 24
Re: Реальное время в линукс
[quote]
alexi Расскажите детально, что крутится на всех машинах в этой сетке. Если возможно - код клиентов и сервера в студию ( ту часть где socket() )! Приорететы этих процессов тоже сюда! Вобщем все что можно
[quote]
В 100 мегабит узернет через свичь включены 3 машины. Все три примерно одинаковы. 233 пентиум, 128 или 256 мегов памяти.
На одной установлен сервер, который через пипе принимает данные и запускает АЦП на двух других клиенты, которые двигают моторы и отправляют данные серверу.
Никаких нареканий на время реакции ни на одной машине нет. Все прерывания с устройств обрабатываются нормально.
Претензии есть только к передачи данных по сети. По большей части все работает нормально, Но иногда возникает задержка доходящая до 30 секунд.
На данный момент на всех машинах стоит дебиан сарже, с ядром 2.4.27
Это оказалась самая стабильно работающая конфигурация.
Хотя пробовал и ветку 2.6
Все ядра собраны специально под конкретные машины. Все лишнее и ненужное отрезано.
Своп отключен.
На дисках ext2. Без всяких журналов.
Все лишнии демоны отключены.
Работают только sshd. Через него захожу на машины и запускаю нужные программы.
Данные через пипе передаю так:
fp=OpenPipe("/usr/bin/nc gonipc 12345", "w");
......
move(newpos);
position=getpos();
fprintf(fp, "%d\n", position);
fflush(fp);
whait(delay);
Извиняюсь за свою тупость.
Но не могли бы ткнуть носом в ту ссылку, где говорится про Sand Linux?
alexi Расскажите детально, что крутится на всех машинах в этой сетке. Если возможно - код клиентов и сервера в студию ( ту часть где socket() )! Приорететы этих процессов тоже сюда! Вобщем все что можно
[quote]
В 100 мегабит узернет через свичь включены 3 машины. Все три примерно одинаковы. 233 пентиум, 128 или 256 мегов памяти.
На одной установлен сервер, который через пипе принимает данные и запускает АЦП на двух других клиенты, которые двигают моторы и отправляют данные серверу.
Никаких нареканий на время реакции ни на одной машине нет. Все прерывания с устройств обрабатываются нормально.
Претензии есть только к передачи данных по сети. По большей части все работает нормально, Но иногда возникает задержка доходящая до 30 секунд.
На данный момент на всех машинах стоит дебиан сарже, с ядром 2.4.27
Это оказалась самая стабильно работающая конфигурация.
Хотя пробовал и ветку 2.6
Все ядра собраны специально под конкретные машины. Все лишнее и ненужное отрезано.
Своп отключен.
На дисках ext2. Без всяких журналов.
Все лишнии демоны отключены.
Работают только sshd. Через него захожу на машины и запускаю нужные программы.
Данные через пипе передаю так:
fp=OpenPipe("/usr/bin/nc gonipc 12345", "w");
......
move(newpos);
position=getpos();
fprintf(fp, "%d\n", position);
fflush(fp);
whait(delay);
Ну это вы плохо искалиhttp://linuxdevices.com/
Извиняюсь за свою тупость.
Но не могли бы ткнуть носом в ту ссылку, где говорится про Sand Linux?
-
Nab
- Сообщения: 257
Re: Реальное время в линукс
Я конечно не настаиваю
Но:
Я имел ввиду не QNX Momentics на Neitrino (не помню как пишется), а ветку 4.25f (по моему эта последняя). Для таких задач самое то...
Другое дело что она весьма дорога...
Поэтому можно найти и поставить для разработки, а если понравиться то и купить...
Ссылку не дам, я выкачивал оччень давно, но если надо могу на мыло кинуть или выложить куда, там 10 метров набор и всякой лобуды под него еще меторов на 40.... а полная ветка у меня занимает 180 метров, но там куча софта, и перл и апач и средства разработки и докуметация на русском, и ветка 4.24
И кстати по поводу межкомпьютерного общения:
//2/my_prog_on_comp_2
выполняет программу на машине в подвале
//3/my_prog_on_comp_3
выполняет программу на машине на чердаке
а управляет этим моя прога на машине в комнате....
И вообще, познакомтесь ближе с этой чудной системой
Я имел ввиду не QNX Momentics на Neitrino (не помню как пишется), а ветку 4.25f (по моему эта последняя). Для таких задач самое то...
Другое дело что она весьма дорога...
Поэтому можно найти и поставить для разработки, а если понравиться то и купить...
Ссылку не дам, я выкачивал оччень давно, но если надо могу на мыло кинуть или выложить куда, там 10 метров набор и всякой лобуды под него еще меторов на 40.... а полная ветка у меня занимает 180 метров, но там куча софта, и перл и апач и средства разработки и докуметация на русском, и ветка 4.24
И кстати по поводу межкомпьютерного общения:
//2/my_prog_on_comp_2
выполняет программу на машине в подвале
//3/my_prog_on_comp_3
выполняет программу на машине на чердаке
а управляет этим моя прога на машине в комнате....
И вообще, познакомтесь ближе с этой чудной системой
-
vadiml
- Сообщения: 446
- ОС: fc12.x86_64
Re: Реальное время в линукс
попробуйте поиграться с планировщиком, он повлияет на время реакции системы без смены ядра/дистрибутива
http://www.rhd.ru/docs/articles/schedulers/
http://www.rhd.ru/docs/articles/schedulers/
phenom x4 905e, asus m4a79 deluxe, 4 gb, ati x550, ati 4350, 2 x 17" LCD
-
d_Sun
- Сообщения: 291
Re: Реальное время в линукс
Нет, про Sand Linux я ничего не знаю, но начинать можно от сюда:
http://linuxdevices.com/articles/AT2760742655.html
http://linuxdevices.com/articles/AT8073314981.html
(Nab) писал(а):Я имел ввиду не QNX Momentics на Neitrino (не помню как пишется), а ветку 4.25f (по моему эта последняя). Для таких задач самое то...
Браво! Я плакалъ
(Nab) писал(а):Другое дело что она весьма дорога...
Перевожу - не стоит своих денег
(alexi) писал(а):Данные через пипе передаю так:
т.е. с сокетами на прямую вы не работаете?
Моя подпись сильно длинная :)
-
alexi
- Сообщения: 24
Re: Реальное время в линукс
Добрый день всем.
Проблему решил методом грубой силы:
Проложил кабель и связал компьютеры между собой через ком порты.
Сейчас все работает как часы. Никаких задержек или провалов в передаче данных.
Однако остался чисто академический вопрос:
Можно ли поверх езерента или даже ТСР передавать данные реального времени?
Если можно то как?
Ведь делают же както интернет телефонию? Значит можно.
Может кто-нибудь подскажет? Желательно с отрывками кода.
Проблему решил методом грубой силы:
Проложил кабель и связал компьютеры между собой через ком порты.
Сейчас все работает как часы. Никаких задержек или провалов в передаче данных.
Однако остался чисто академический вопрос:
Можно ли поверх езерента или даже ТСР передавать данные реального времени?
Если можно то как?
Ведь делают же както интернет телефонию? Значит можно.
Может кто-нибудь подскажет? Желательно с отрывками кода.
-
allez
- Сообщения: 2223
- Статус: Не очень злой админ :-)
- ОС: SuSE, CentOS, FreeBSD, Windows
Re: Реальное время в линукс
IP-телефонная связь использует не TCP, а UDP, поскольку в данном случае важна не надежность доставки данных, а, скажем так, своевременность. При использовании TCP неудачно переданный пакет будет отправлен повторно и разговор станет "заикаться". При использовании же UDP в разговоре могут появляться "провалы"... э-э, простите, несколько увлекся. Я вообще к тому это говорю, что подозреваю у вас неисправность сетевого оборудования. Может, сетевая карта на какой-нибудь машине дурит, может кабель плохо экранирован и проходит рядом с источником помех, может еще что-то, что не позволяет данным нормально проходить по ethernet-соединению...
-
d_Sun
- Сообщения: 291
Re: Реальное время в линукс
Нет, вы меня таки улыбаете...
Моя подпись сильно длинная :)
-
Nab
- Сообщения: 257
Re: Реальное время в линукс
alexi писал(а): ↑04.10.2005 12:16Добрый день всем.
Проблему решил методом грубой силы:
Проложил кабель и связал компьютеры между собой через ком порты.
Сейчас все работает как часы. Никаких задержек или провалов в передаче данных.
Однако остался чисто академический вопрос:
Можно ли поверх езерента или даже ТСР передавать данные реального времени?
Если можно то как?
Ведь делают же както интернет телефонию? Значит можно.
Может кто-нибудь подскажет? Желательно с отрывками кода.
Учитывая вышесказанное, видно что Вы сами код разрабатываете, а учитывая что вы запросто перенесли интерфейс на COM порты, то и портируемость приложения очень велика...
Посему, еще раз предлагаю глянуть на QNX и именно 4.
Объясню:
микроядро размером 10 кб, это означает что вы можете еще более, чем с линуксом урезать базовую конфигурацию, отключив драйвера не используемых устройств, и различные дополнительные модули.
TCP/IP вообще можна не использовать, тем более что его надо отдельно ставить. И даже если его ставить, то его реализация считается одной из лучших, даже лучше чем в BSD.
А FLEET это их собственная разработка сетевого протокола, заточенная именно на межмашинное взаимодействие в реальном времени, которая при этом мирно сосуществует с TCP/IP.
По поводу дороговозны, ну тут цель оправдывает средства ( Если в примеру нужно управлять установкой разлива металла к примеру за несколько лимонов, то штуку зеленых можно и потратить, на весьма совершенный продукт.) Кстати используется она на весьма критичных участках производства...
А учитывая что она POSIX, то я думаю перенос не займет много времени...
-
d_Sun
- Сообщения: 291
Re: Реальное время в линукс
Ну да! Если имеете склонность к некрофилии
(Nab) писал(а):TCP/IP вообще можна не использовать
Угу - особенно его реализацию в QNX 4
(Nab) писал(а):И даже если его ставить, то его реализация считается одной из лучших, даже лучше чем в BSD.
Извините сэр, но это НАГЛАЯ ложь! Более тормозной реализации стека TCP/IP днем с огнем не сыщеш
(Nab) писал(а):По поводу дороговозны, ну тут цель оправдывает средства
Конечно! Зачем использовать бесплатные ОС с полным набором современных средств разработки, если можно купить такой себе трупик QNX4...
З.Ы. Да и кстати QNX4 не поддерживает разделяемые библиотеки и многопоточность
Моя подпись сильно длинная :)
-
Nab
- Сообщения: 257
Re: Реальное время в линукс
[quote name='d_Sun' date='Oct 4 2005, в 15:54' post='120692']
[quote post='120678' date='Oct 4 2005, в 16:09' name='Nab']
Посему, еще раз предлагаю глянуть на QNX и именно 4.
[quote]
[quote] Ну да! Если имеете склонность к некрофилии
[quote]
[quote]
Не имею, но уважаю проверенные вещи....
[quote]
[quote name='Nab']
TCP/IP вообще можна не использовать
[quote]
Угу - особенно его реализацию в QNX 4
[quote name='Nab']
И даже если его ставить, то его реализация считается одной из лучших, даже лучше чем в BSD.
[quote]
Извините сэр, но это НАГЛАЯ ложь! Более тормозной реализации стека TCP/IP днем с огнем не сыщеш
[quote]
[quote]
Возможно, но у меня нареканий не было, хотя я использовал как домашний прокси сервер...
Достаточно долгое время
[quote]
[quote name='Nab']
По поводу дороговозны, ну тут цель оправдывает средства
[quote]
Конечно! Зачем использовать бесплатные ОС с полным набором современных средств разработки, если можно купить такой себе трупик QNX4...
[quote]
А если этого достаточно?
[quote]
З.Ы. Да и кстати QNX4 не поддерживает разделяемые библиотеки и многопоточность
[quote]
fork() рулит
Да, согласен это недостаток, но QNX4 реализует очень простую многопроцессорность и многокомпьютерность. То есть разделение и использование ресурсов других машин в его сети реализована весьма просто...
Пусть человек решает сам, а я останусь при своем мнении
[quote post='120678' date='Oct 4 2005, в 16:09' name='Nab']
Посему, еще раз предлагаю глянуть на QNX и именно 4.
[quote]
[quote] Ну да! Если имеете склонность к некрофилии
[quote]
Не имею, но уважаю проверенные вещи....
[quote]
[quote name='Nab']
TCP/IP вообще можна не использовать
[quote]
Угу - особенно его реализацию в QNX 4
[quote name='Nab']
И даже если его ставить, то его реализация считается одной из лучших, даже лучше чем в BSD.
[quote]
Извините сэр, но это НАГЛАЯ ложь! Более тормозной реализации стека TCP/IP днем с огнем не сыщеш
[quote]
[quote]
Возможно, но у меня нареканий не было, хотя я использовал как домашний прокси сервер...
Достаточно долгое время
[quote]
[quote name='Nab']
По поводу дороговозны, ну тут цель оправдывает средства
[quote]
Конечно! Зачем использовать бесплатные ОС с полным набором современных средств разработки, если можно купить такой себе трупик QNX4...
[quote]
А если этого достаточно?
[quote]
З.Ы. Да и кстати QNX4 не поддерживает разделяемые библиотеки и многопоточность
[quote]
fork() рулит
Пусть человек решает сам, а я останусь при своем мнении
-
d_Sun
- Сообщения: 291
Re: Реальное время в линукс
(Nab) писал(а):А если этого достаточно?
То зачем за это платить? Кастрировать Linux или FreeBSD и вуаля - QNX 4
(Nab) писал(а):Пусть человек решает сам, а я останусь при своем мнении
Ну я собственно и ввязался в это оффтоп, не для того что бы навязать вам свое мнение, а что бы представить другую сторону медали...
З.Ы. Nab без обид
Моя подпись сильно длинная :)
-
alexi
- Сообщения: 24
Re: Реальное время в линукс
d_Sun писал(а): ↑04.10.2005 17:30(Nab) писал(а):
А если этого достаточно?
То зачем за это платить? Кастрировать Linux или FreeBSD и вуаля - QNX 4![]()
(Nab) писал(а):Пусть человек решает сам, а я останусь при своем мнении
Ну я собственно и ввязался в это оффтоп, не для того что бы навязать вам свое мнение, а что бы представить другую сторону медали...
З.Ы. Nab без обид
Ну когда буду делать что-то для атомной станции например, или уж сильно быструю и ооочень дорогую систему измерения, там уже и на всякие куниксы глядеть буду.
А пока мне линуха хватает.
Кстати, если кому интересно, нашел сайт RTAI.
Если им верить то можно используя линух делать системы реального времени.
Сейчас копаюсь.
Если кто пробовал, буду рад услышать ваше мнение.
-
d_Sun
- Сообщения: 291
Re: Реальное время в линукс
alexi вы ссылки смотрели, что я давал? Там НА МНОГО больше информации!
Моя подпись сильно длинная :)