LINUX.ORG.RU
ФорумTalks

AF_INET vs AF_UNIX


0

2

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

★★★★
Ответ на: комментарий от slackwarrior

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

quest ★★★★
() автор топика
Ответ на: комментарий от quest

AF_UNIX не оборачивается в ethernet/IP/TCP(UDP), что определенно дает некий выигрыш. В частности, по умолчанию на loopback MTU выставлено в ~16kb, что заставляет ядро фрагментировать IP-пакеты длиннее 16kb.

red_eyed_peguin
()

а то вот понимаю что локальные сокеты будут быстрее но насколько и в каких случаях понятия не имею

Ты поимеешь такое понятие если посмотришь на разницу в протоколах. И пьяному ежу понятно, что для протокола в котором есть ack на каждый пакет, разница в производительности будет наиболее всего заметна при интенсивном обмене небольшими сообщениями.

fang
()
Ответ на: комментарий от quest

Дык... Какая нагрузка-то предполагается? И какое время реакции ожидается? Если время не критично - выигрыш не стоит возни с отдельным IPC/типом сокета :) Хотя фоннаты превентивной оптимизации конечно тебе споют про оверхед. Без измерений тупо It's a matter of design :) Проще взять и самому померить. Если выигрыш существенный с точки зрения задачи - ок. AF_UNIX вроде не требует от тебя существенного редизаена:) Лог с таймстампами куда-нибудь выдай и погоняй данные при разной нагрузке.

slackwarrior ★★★★★
()
Ответ на: комментарий от red_eyed_peguin

дает некий выигрыш

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

пока нашел вот такое (тут увы длина с 512): http://fieldtrip.fcdonders.nl/_media/faq/mentat201_tcp_vs_unix.png

такое же но для длины пакетов с нуля до килобайта найти бы...

quest ★★★★
() автор топика
Ответ на: комментарий от quest

явно на пакетах разной длины разница будет разной, хочется увидеть этот график

Погода на Марсе :) И так предварительно ясно что быстрее, а что эта реализация передавала и в каких сферических в вакууме условиях (а главное - нужен ли по условию задачи AF_INET, может лучше сравнивать AF_UNIX с shared mem :)) - ХЗ? Как оно масштабирутеся? :) Скачки на сферических конях...

slackwarrior ★★★★★
()

Если тебе нужна производительность - тебе shared memory надо юзать.

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

no-dashi ★★★★★
()

Основное отличие это вызов специфичных для tcp функций, например, связанных с маршутизацией. Unix-сокеты выигрывают по всем параметрам в этом отношении. Однако, все зависит от архитектуры приложения. Если нужна реальная скорость - то потоки и общая память, либо shared-memory, как говорили.

gh0stwizard ★★★★★
()
Последнее исправление: gh0stwizard (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.