我正在寻找“sar -n SOCK”输出的 totsck 列的解释
09:44:06 PM totsck tcpsck udpsck rawsck ip-frag tcp-tw
09:44:09 PM 580 18 5 0 0 1
09:44:10 PM 580 18 5 0 0 0
09:44:11 PM 580 18 5 0 0 0
Average: 580 18 5 0 0 1
这显然不是 tcp/udp/raw 套接字的总和。我想到的唯一其他解释是它是 sockets plus
sysctl fs.file-nr
但在我的测试盒上
fs.file-nr = 5632 0 803168
非常感谢准确的解释。
谢谢
编辑 2:显然 totsck 等同于
cat /proc/net/sockstat
这就引出了一个问题,那里算的是什么。我找到了这个,但最后它只建议询问编写该特定内核代码的人。
编辑(用于域套接字记帐):
[root@fedora16 fs]# netstat --protocol unix| wc -l
413
[root@fedora16 fs]# sar -n SOCK 1 1
Linux 3.3.1-5.fc16.x86_64 (fedora16) 06/21/2012 _x86_64_ (4 CPU)
10:03:25 PM totsck tcpsck udpsck rawsck ip-frag tcp-tw
10:03:26 PM 598 6 5 0 0 3
Average: 598 6 5 0 0 3
还有 UNIX 域套接字(STREAM 和 DGRAM),它们似乎占系统使用的套接字总数。UNIX 域套接字被进程引用为文件系统中的索引节点。有很多东西仍然出于各种目的使用 UNIX 域套接字,所以
sar
选择它。检查 的输出netstat -a
以查看在您的系统上打开了多少个 UNIX 域套接字。fs.file-nr
是最大文件句柄的数量,虽然很重要,但与您在sar
输出中看到的内容无关。编辑:请考虑
sar
基本上读取/proc/net/sockstat
并计算平均值或报告历史值。似乎/proc/net/sockstat
从两个地方获取数据(2.6.27 的内核源代码),位置是net/socket.c
第 2324net/ipv4/proc.c
行和第 54 行及以下,总数来自第一个位置,其余来自第二个位置。通过net
结构还可以揭示哪些套接字被计算/说明并打印到 proc 文件系统中。