Каково точное значение счетчика байтов буфера отправки в расширенной статистике netstat и почему оно всегда больше, чем Send-Q?
Другими словами, что учитывается в S-BCNT, что не учитывается в Send-Q?
Является ли S-BCNT лучшим числом для расчета стоимости системы конкретного соединения?
Вы можете найти определение вместе с комментариями на sys/sys/sockbuf.h
:
u_int sb_cc; /* (c/d) actual chars in buffer */
u_int sb_mbcnt; /* (c/d) chars of mbufs used */
BSD используют структуры, называемые mbuf
/mbuf_cluster
для сетевых данных. Они используются везде, от кода драйвера до уровня сокета. Даже если пакет имеет 1 байт полезной нагрузки, он потребляет 256 (mbuf
) байтов в mbuf. Если размер пакета (со всеми заголовками кадров / пакетов)> = 256, он будет занимать 256 (mbuf
) + 2048 (mbuf_cluster
) байтов. Отсюда разница между sb_cc
и sb_mbcnt
.
Чтобы ответить на ваш вопрос: S-BCNT
более правильное значение для использования.
PS. Для получения дополнительной информации обратитесь к Иллюстрированный том 2 TCP / IP - У. Ричард Стивенс и Гарри Р. Райт, Глава 16 - Ввод-вывод сокета, Раздел 16.3 - Буфер сокета, стр.476