2015-03-30 1 views
0

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

Итак, изначально я думал о создании сокета с использованием AF_UNIX для связи с локальным клиентом (с его быстрее, чем AF_INET) и AF_INET в случае связи с удаленным и опроса между ними.

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

Итак, могу ли я заменить этот AF_UNIX на AF_INET, так как установление соединения будет выполняться только один раз? Где работает производительность в случае AF_INET? Это в трехстороннем рукопожатии или где-то еще?

+0

В тесте с чистой пропускной способностью, где я пытался использовать самую большую запись и читал, чтобы засунуть столько данных, которые могли бы быть доступны по трубе, я получил сопоставимые показатели производительности. У AF_UNIX было небольшое преимущество, но ничего серьезного. И AF_UNIX последовательно передает в 4 раза больше данных за системный вызов. Производительность AF_UNIX также была намного более переменной, и я думаю, что она намного более чувствительна к планировщику. ядро-4.11 на недавнем Dell XPS 13. – Omnifarious

+0

Я не тестировал, как быстро было инициировать соединение в первую очередь. Просто прямая пропускная способность ввода-вывода. – Omnifarious

ответ

1

Цитата Performance: TCP loopback connection vs Unix Domain Socket:

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

Однако убедитесь в том,

+0

Спасибо, я получил свой ответ. – garima721