Пробачте, якщо це не найкращий форум для цього питання, але воно здається більш актуальним для ядра, ніж для самого програмування.
Я пишу сценарій, який запитує систему для відкритих портів, щоб ми могли графікувати та контролювати статистику. Для цього я використовую команду "ss" з пакета iproute. Якщо ви виконаєте, ss -s|grep estab
ви отримаєте результат, подібний до цього:
TCP: 296 (estab 6, closed 238, orphaned 0, synrecv 0, timewait 238/0), ports 0
Моє запитання стосується змінної timewait, яка показує обчислювані сокети в стані TIME_WAIT. Коли я спробував з'ясувати, на яке число посилається після косої риси, це стало бурхливою пригодою пошуку вихідного коду, що в кінцевому підсумку змусило мене знайти наступний фрагмент:
printf("TCP: %d (estab %d, closed %d, orphaned %d, synrecv %d, timewait %d/%d), ports %d\n",
s.tcp_total + slabstat.tcp_syns + s.tcp_tws,
sn.tcp_estab,
s.tcp_total - (s.tcp4_hashed+s.tcp6_hashed-s.tcp_tws),
s.tcp_orphans,
slabstat.tcp_syns,
s.tcp_tws, slabstat.tcp_tws,
slabstat.tcp_ports
);
Треба визнати, моє пошук того, що мав би означати "slabstat", в кінцевому рахунку призвело до того, що я дізнався про кеші платів та інтерфейс їх звітування в / proc / slabinfo.
Питання: Яке відношення має до пластових обчислень TIME_WAIT? Я не можу з’ясувати, чому повідомляється про це число, тому що кожного разу, коли я запускаю команду на кожному сервері, на якому я пробував, число завжди було нульовим.