Назад | Перейти на главную страницу

В чем разница между Send-Q и S-BCNT во FreeBSD netstat -anx?

Каково точное значение счетчика байтов буфера отправки в расширенной статистике 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