LINUX.ORG.RU

Что выбрать (сокеты, разделямая память или очереди сообщений)?


0

0

Hi All!
Чего посоветуете выбрать для общения нескольких процессов (совершенно не родственных) между собой при условиях:
- общение в рамках одной машины (т.е. без сети и тп)
- сообщения довольно маленькие (< 1Kбайт)
- очень-очень требовательно к ресурсам - пусть даже в ущерб сложности разработки

Склоняюсь больше к очереди сообщений, потом локальные сокеты...

Может кто тыкнет сравнение производительности или у кого есть большой опыт и по тому и под другому?

Кто что скажет? Буду рад и благодарен любой информации! ;)


Re: Что выбрать (сокеты, разделямая память или очереди сообщений)?

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

Ant0 ()

Re: Что выбрать (сокеты, разделямая память или очереди сообщений)?

> Хм...надо у Стивенса на графики глянуть....

И чем тебе помогут эти древние как дерьмо мамонта данные?

anonymous ()

Re: Что выбрать (сокеты, разделямая память или очереди сообщений)?

Мда уж.....опозорился....shared memory быстрее конечно! Просто я в голове удобство держал - тут с очередями трудно тягаться. Шаред мем быстрее, но механизм контроля передачи придётся самому строить (хотя это и фигня)....

farisey ()

Re: Что выбрать (сокеты, разделямая память или очереди сообщений)?

> механизм контроля передачи придётся самому строить

Это не обязательно недостаток, потому что можно сделать что-нибудь подходящее к случаю и/или легко поддающееся мониторингу.

anonymous ()

Re: Что выбрать (сокеты, разделямая память или очереди сообщений)?

хм...
/me задумался...
может в книжках что я читал действительно устаревшие данные по скорости...

где бы надыбать сравнение? ничего толкового гугль не сказал :-/

Ant0 ()

Re: Что выбрать (сокеты, разделямая память или очереди сообщений)?

shared mem быстрее, очереди проще но медленнее все же.

хотя в твоем случае ИМХО оправданней будут именно очереди.

alphex_kaanoken ★★★ ()

Re: Что выбрать (сокеты, разделямая память или очереди сообщений)?

Если нужна именно скорость - shared memory.
Если удобство и впадлу программить-отлаживать - очереди.

Я сделал бы с разделяемой памятью..туда семафор запихнул и up/down (или как там в юзер-спейсе) - вот и вся синхронизация.

farisey ()

Re: Что выбрать (сокеты, разделямая память или очереди сообщений)?

забы написать еще одно важное условие :)
сообщений будет порядка 100/сек (обычно меньше)
ну мааааксимум 1000/сек

Ant0 ()

Re: Что выбрать (сокеты, разделямая память или очереди сообщений)?

> сообщений будет порядка 100/сек (обычно меньше)

> ну мааааксимум 1000/сек

И это называется требовательность к ресурсам? 8) Делай передачу указателя (или смещения) в разделяемой памяти через локальный сокет, FIFO, очередь сообщений.

tailgunner ★★★★★ ()

Re: Что выбрать (сокеты, разделямая память или очереди сообщений)?

>И это называется требовательность к ресурсам? 8)
А что плохого в том, что хочу чтобы ВСЕ работало максимально эффективно?! ;)

Да и на этом программа не заканчиваются, а зачем тратить ресурсы на теже сокеты или FIFO если можно реализовать через очередь сообщений/раздел-ю память и потратить освободившиееся ресурсы на что-то более полезное?! ;)

Ant0 ()

Re: Что выбрать (сокеты, разделямая память или очереди сообщений)?

>А что плохого в том, что хочу чтобы ВСЕ работало максимально эффективно?! ;)

Ничего плохого в этом нет, если умеешь вовремя остановиться ("Преждевременная оптимизация - корень всех зол" -- Д.Кнут). Например, твой максимальный поток в 1МБайт/сек можно передать локально через любой IPC с примерно одинаковыми затратами ресурсов. Ну так зачем заморачиваться на разделяемую память или вообще хоть что-нибудь, кроме FIFO? Программист - он тоже машина, которая должна работать максимально эффективно ;)

tailgunner ★★★★★ ()

Re: Что выбрать (сокеты, разделямая память или очереди сообщений)?

ИМХО локальные сокеты: кошерно и быстро.

Очереди -- некошерно...

Die-Hard ★★★★★ ()

Re: Что выбрать (сокеты, разделямая память или очереди сообщений)?

>ИМХО локальные сокеты: кошерно и быстро.
>Очереди -- некошерно...
а чем кашерно и чем не кашерно?

Ant0 ()

Re: Что выбрать (сокеты, разделямая память или очереди сообщений)?

>>Очереди -- некошерно... > а чем кашерно и чем не кашерно?

Ну, например, после того, как система окажется загаженной тухлыми всеми брошенными очередями, задумаешься, а чем сокеты-то хуже?

Die-Hard ★★★★★ ()

Re: Что выбрать (сокеты, разделямая память или очереди сообщений)?

> задумаешься, а чем сокеты-то хуже?

Интересует - а чем FIFO хуже сокетов (для данного случая) ?

tailgunner ★★★★★ ()

Re: Что выбрать (сокеты, разделямая память или очереди сообщений)?

> а чем FIFO хуже сокетов (для данного случая) ?

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

Die-Hard ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.