powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Межпроцессное взаимодействие - что быстрее?
25 сообщений из 109, страница 3 из 5
Межпроцессное взаимодействие - что быстрее?
    #39624353
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TИМХО в пределах одной машины можно по UDP слать. При такой маленькой нагрузке потерь не должно быть.

Поизучай ZeroMQ - это легковесная очередь сообщений с различными стратегиями рассылки сообщений.
В форуме по дельфям ее подробно обсуждали .

или rabbitmq
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39624401
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)если поменяешь модель уведомлений на "оповестить всех сразу",
Например использовать IP протокол PGM - Pragmatic General Multicast
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39624463
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13th2. потребитель данных - приложение, подбирающееся к лимиту USER и GDI объектов. Поэтому часть данных открывается в одном процессе, часть - в другом, часть - в третьем. До 5-7 бывает.

Почему много GDI-объектов? В этом приложении есть какой-то графический функционал?
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39624472
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Вот кстати да, очень внимательно стоит обследовать, сложно представить зачем стоит держать столько временных объектов.
Такое количество может дать нехилые тормоза
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39624579
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton, да
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39624587
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kealon(Ruslan)mayton,

Вот кстати да, очень внимательно стоит обследовать, сложно представить зачем стоит держать столько временных объектов.
Такое количество может дать нехилые тормоза

Уже обследовали, все не нужное убрали. Если приложение может месяц выстоять под AppVerifier-ом, и не упасть, поверь, это что-то да значит.
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39624594
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропилkealon(Ruslan)если поменяешь модель уведомлений на "оповестить всех сразу",
Например использовать IP протокол PGM - Pragmatic General Multicast

PGM — экспериментальный протокол IETF и ещё не утверждён в качестве стандарта . Хм, не кайф сегодня сделать, а завтра переделывать.
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39624595
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13thmayton, да

Без тысяч мелких gdi/user объектов - никак?
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39624603
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13thИзопропилпропущено...

Например использовать IP протокол PGM - Pragmatic General Multicast

PGM — экспериментальный протокол IETF и ещё не утверждён в качестве стандарта . Хм, не кайф сегодня сделать, а завтра переделывать.
Но работает со времен XP
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39624630
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13thДолжно обрабатываться КАЖДОЕ сообщение. Никакой очереди быть не может. Если бы можно было бы группировать, я бы всё отправил один раз в секунду, и это заняло бы 10ms.
Каждое сообщение должно обрабатываться В СВОЮ ОЧЕРЕДЬ. Поэтому никакого распараллеливания отправки тоже быть не может. Клиенты и так работают параллельно.В таком случае, все твои компоненты завязаны на производительности друг друга и, в буквальном смысле, осуществляют синхронную обработку сообщений ожидая, пока самый тормозной компоненты обработает сообщение. Занафига?

13thБлижайшая аналогия: поток котировок. Ты должен доставить котировку в несколько модулей. Один модуль считает стратегию. Второй - баланс. Третий - отчёт. Поток котировок, естественно, идёт из одного потока. Задержка в 1..1,5ms терпима. Но пересылать группами по 100 штук - уже без варика. Так же нельзя менять порядок котировок - по понятным причинам.Пойди от обратного - используй для каждого компоненты свой memory-mapped файл, чтобы данные представляли из себя унифицированную структуру меняющегося в размере кольца сообщений, где есть начало кольца, задающееся диспетчерской программой, его размер и конец кольца - последнее сообщение, прочитанное получателем. Всё это прекрасно будет разруливаться без всякой синхронизации одними лишь командами барьеров памяти. Алгоритм работы кольца сам додумаешь.
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39624659
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропил13thmayton, да

Без тысяч мелких gdi/user объектов - никак?

Изопропил, mayton, ну кончайте вы с этим детским садом. 300Мб только СППшников, а ещё H, idl, CS, XML, XAML, Java, JScript, HTML и хрен знает ещё чего +150Мб

как вы себе представляете реализацию ваших советов? "Пересмотреть архитектуру", "переписать на open gl", "переделать без тысяч GDI-объектов"?

Вы чего, никогда программу крупнее блокнота не видели?
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39624665
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_devВ таком случае, все твои компоненты завязаны на производительности друг друга и, в буквальном смысле, осуществляют синхронную обработку сообщений ожидая, пока самый тормозной компоненты обработает сообщение. Занафига?
Не совсем так. Есть развязка. Я писал чуть выше: приёмники принимают данные в одном потоке, обрабатывают - в другом.

rdb_devПойди от обратного - используй для каждого компоненты свой memory-mapped файл, чтобы данные представляли из себя унифицированную структуру меняющегося в размере кольца сообщений, где есть начало кольца, задающееся диспетчерской программой, его размер и конец кольца - последнее сообщение, прочитанное получателем. Всё это прекрасно будет разруливаться без всякой синхронизации одними лишь командами барьеров памяти. Алгоритм работы кольца сам додумаешь.
Подумаю, спасибо.
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39624679
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13thВы чего, никогда программу крупнее блокнота не видели?

Не-а. Покажи как у тебя на экране умещаются 32к графических объектов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39624723
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13thИзопропил, mayton, ну кончайте вы с этим детским садом. 300Мб только СППшников, а ещё H, idl, CS, XML, XAML, Java, JScript, HTML и хрен знает ещё чего +150Мб

как вы себе представляете реализацию ваших советов? "Пересмотреть архитектуру", "переписать на open gl", "переделать без тысяч GDI-объектов"?

Вы чего, никогда программу крупнее блокнота не видели?ну как бы реально, небольшой рефакторинг просто. Чем больше программа, тем этим проще и выгодннее заниматься.
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39624792
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kealon(Ruslan)ну как бы реально, небольшой рефакторинг просто. Чем больше программа, тем этим проще и выгодннее заниматься.
Ну вот, сейчас рефакторю IPC. Понемногу производительностью занимаемся всё время. Но "понемногу" за 5 лет набежало очень хорошо.
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39624919
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13th,

статистика по GDI объектам есть? чего так много создаётся
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39625027
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kealon(Ruslan)13th,

статистика по GDI объектам есть? чего так много создаётся

Какое это отношение имеет к топику? Статистика есть, уменьшить нельзя.
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39625051
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13thkealon(Ruslan)13th,

статистика по GDI объектам есть? чего так много создаётся

Какое это отношение имеет к топику? Статистика есть, уменьшить нельзя.

Прямое - лишние процессы - лишние переключения контекста
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39625061
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly MoskovskyКстати у вас там в вашем примере с двумя Event неэффективно используется синхронизация. Event Винды внутри это по сути mutex + condition var. Получается в вашем коде два мьютекса, тогда как для передачи сообщения и возврата результата нужен только один мьютекс (и две условных переменных).
Может поэтому тормозит.
Чё-то не могу придумать, как засинхронизировать сервер и N клиентов в других процессах одним мьютексом. На всяк случай: Condition variables are user-mode objects that cannot be shared across processes . Не мог бы набросать хотя бы псевдо-код?
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39625071
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропил13thпропущено...


Какое это отношение имеет к топику? Статистика есть, уменьшить нельзя.

Прямое - лишние процессы - лишние переключения контекста

Я ему про Фому - он мне про Ерёму. Я спрашиваю - как мне ускорить IPC, он мне - уменьши количество процессов. Поверь, всё уже уменьшено и оптимизирована до предела. И число GDI не уменьшить. И USER. Мне нужен быстрый IPC, а не рассказы, как у меня всё неэффективно.
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39625091
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13thПоверь, всё уже уменьшено и оптимизирована до предела. И число GDI не уменьшить. И USER. Мне нужен быстрый IPC, а не рассказы, как у меня всё неэффективно.Не верю! Нет предела совершенству!!!
Еще можно написать какой-нибудь драйвер с колбэками, который будет плеваться сообщениями. ;)
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39625171
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13thЧё-то не могу придумать, как засинхронизировать сервер и N клиентов в других процессах одним мьютексом.
Ну во-первых на каждую пару источник-приемник - своя очередь и своя синхронизация.
Во-вторых не один мьютекс, а мьютекс + условная переменная.

13thНа всяк случай: Condition variables are user-mode objects that cannot be shared across processes . Не мог бы набросать хотя бы псевдо-код?
По всей видимости в Винде event это и есть межпроцессная условная переменная. Просто оно сделано слишком универсально и потому тормозит. В linux условная переменная - это легковесный объект, который делает только сигналы, а мьютекс к нему полагается отдельный.
Я выше приводил в примере condition из Boost .
Но выше говорили что этот код на винде тормозит на порядок по сравнению с линуксом.

По идее на основе спинлока и семафора можно реализовать что-то на подобие линуксового condition var. Но это надо думать ))

А вообще, там выше приводили пример ZeroMQ. Это библиотека как раз умеет быстро посылать сообщения между процессами.
Попробуйте ее, или посмотрите как она это делает. Хотя не исключено что под Виндой и она тормозит )))
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39625195
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я, вообще-то чутка подшаманил, и разогнал до 242К/сек. (1 клиент) и 143К/сек. (5 клиентов). На стандартных виндовых Event-ах.
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39625201
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13thНа стандартных виндовых Event-ах.
Критические сессии намного быстрее, но их можно только внутри одного процесса использовать.
Есть еще std::mutex, быстрая штука, но его не сравнивал с эвентами и из разных процессов не пробовал.
...
Рейтинг: 0 / 0
Межпроцессное взаимодействие - что быстрее?
    #39625204
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13thЯ, вообще-то чутка подшаманил, и разогнал до 242К/сек. (1 клиент) и 143К/сек. (5 клиентов). На стандартных виндовых Event-ах.
Топик можно закрывать? :)
...
Рейтинг: 0 / 0
25 сообщений из 109, страница 3 из 5
Форумы / C++ [игнор отключен] [закрыт для гостей] / Межпроцессное взаимодействие - что быстрее?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]