Подтвердить что ты не робот

TCP-петлевое соединение против производительности Unix Domain Socket

Работа с приложениями на базе Android и iOS, которые требуют связи с сервером, работающим на одном устройстве. В настоящее время используется соединение TCP loopback для связи с App and Server (приложение, написанное на пользовательском уровне, сервер, написанный на С++ с помощью Android NDK)

Мне было интересно, улучшит ли производительность обмен данными с Unix-доменом?

Или в общем есть ли какие-либо доказательства/теории, доказывающие, что сокет Unix Domain даст лучшую производительность, чем TCP loopback-соединение?

4b9b3361

Ответ 1

Да, локальная межпроцессная связь сокетами unix домена должна быть быстрее, чем связь через соединения localhost loopback, потому что у вас меньше накладных расходов TCP, см. здесь и .

Ответ 2

Этот тест: https://github.com/rigtorp/ipc-bench предоставляет тесты задержки и пропускной способности для сокетов TCP, доменных сокетов Unix (UDS) и PIPE.

Here you have the results on a single CPU 3.3GHz Linux machine :

TCP average latency: 6 us

UDS average latency: 2 us

PIPE average latency: 2 us

TCP average throughput: 0.253702 million msg/s

UDS average throughput: 1.733874 million msg/s

PIPE average throughput: 1.682796 million msg/s

Сокращение задержки на 66% и почти в 7 раз больше объясняют, почему большинство программного обеспечения, критичного к производительности, имеет собственный протокол IPC.

Ответ 3

Redis тест показывает доменный сокет Unix может быть значительным быстрее, чем TCP шлейф.

Когда серверные и клиентские тестовые программы выполняются в одном и том же окне, могут использоваться как петлевые TCP/IP, так и доменные сокеты unix. В зависимости от платформы сокеты домена unix могут достигать примерно на 50% большей пропускной способности, чем петля TCP/IP (например, в Linux). Поведение redis-benchmark по умолчанию заключается в использовании обратной связи TCP/IP.

Однако это различие имеет значение только при высокой пропускной способности.

Throughput per data size

Ответ 4

Сокеты домена Unix часто в два раза быстрее, чем TCP-сокет, когда оба одноранговых узла находятся на одном хосте. Протоколы домена Unix не являются фактическим набором протоколов, а способ взаимодействия между клиентом и сервером на одном хосте с использованием того же API, который используется для клиентов и серверов на разных хостах. Протоколы домена Unix являются альтернативой методам межпроцессной связи (IPC).