>>130748> Т.е. SOCK_DGRAM не теряются, не меняют порядка и вообще мягкие и шелковистые гарантированно на linux в любом дистре изкаропки?
Для сокетов Unix гарантируется надёжность доставки и правильный порядок. Сокеты Unix предназначены для надёжного межпроцессного обмена данными.
Из man unix:
The AF
UNIX (also known as AFLOCAL) socket family is used to communi‐
cate between processes on the same machine efficiently. Traditionally,
UNIX domain sockets can be either unnamed, or bound to a filesystem
pathname (marked as being of type socket). Linux also supports an
abstract namespace which is independent of the filesystem.
Valid socket types in the UNIX domain are: SOCK_STREAM, for a stream-
oriented socket; SOCK_DGRAM, for a datagram-oriented socket that pre‐
serves message boundaries (as on most UNIX implementations, UNIX domain
datagram sockets are always reliable and don't reorder datagrams); and
(since Linux 2.6.4) SOCK_SEQPACKET, for a sequenced-packet socket that
is connection-oriented, preserves message boundaries, and delivers mes‐
sages in the order that they were sent.
> Речь только о linux. Какие там настройки и где об этом почитать?
Из man udp:
This is an implementation of the User Datagram Protocol described in
RFC 768. It implements a connectionless, unreliable datagram packet
service. Packets may be reordered or duplicated before they arrive.
Если ты задумываешься о надёжности UDP, то тебе стоит использовать либо сокеты Unix, либо TCP. UDP предназначен для стриминга, VoIP, игр и других подобных приложений, где важна скорость передачи данных и задержка, но не важна сохранность данных, и эти приложения могут компенсировать потерю пакетов.
Никаких настроек "надёжности" для UDP нет. Можно только поставить лимиты ядра повыше. Если у тебя есть потери пакетов, то попробуй для начала увеличить net.core.rmemmax и net.core.rmemdefault.
А если почитать об этом, то я даже не знаю, что посоветовать. Это слишком низкоуровневые оптимизации.
> На сколько?
Если писать бенчмарк, то сокеты Unix быстрее TCP на 20-50% и имеют задержку в 1,5-3 раза меньше. Но в 99,5% real-world приложений разницы нет (она меньше 0,01%). Если у тебя меньше 10к передач в секунду/100 Мбит в секунду, то я даже заморачиваться бы не стал, это не боттлнек.