Замыкания на себя протокола TCP соединение против доменного сокета Unix производительности


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

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

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

4 74

4 ответа:

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

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

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: 253702 msg/s

UDS average throughput: 1733874 msg/s

PIPE average throughput: 1682796 msg/s

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

Рэдис benchmark показывает, что сокет домена unix может быть значительно быстрее, чем Петля TCP.

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

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

Throughput per data size

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