net.unix.max_dgram_qlen Вопросы - PullRequest
       1

net.unix.max_dgram_qlen Вопросы

2 голосов
/ 15 февраля 2011

Согласно документации ядра net.unix.max_dgram_qlen sysctl контролирует максимальную длину очереди приема сокета дейтаграммы (для сокетов AF_UNIX / AF_LOCAL, то есть).Я всегда могу отправить на 1 больше, чем это значение, прежде чем отправлять вызовы этому получателю, чтобы начать блокировку.Кто-нибудь знает почему?

Кроме того, кто-нибудь знает, было ли это когда-либо реализовано как опция сокета.(Вроде как SO_SNDBUF соответствует wmem_default и wmem_max).В этой ветке упоминается такая возможность, но я не могу найти, где кто-либо когда-либо делал это.

1 Ответ

0 голосов
/ 16 февраля 2011

1., Вот как это проверяется:

static inline int unix_recvq_full(struct sock const *sk)                                        
{
    return skb_queue_len(&sk->sk_receive_queue) > sk->sk_max_ack_backlog;
}

Вот почему вы можете инициировать еще одно соединение, чем значение, которое вы установили.

2., Параметр backlog, который вы передаете listen () также используется как max_ack_backlog .Однако другого способа повлиять на него не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...