Sar:totsck 代表什么

moo*_*ody 0 linux socket sar

我正在寻找对“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
Run Code Online (Sandbox Code Playgroud)

这显然不是 tcp/udp/raw 套接字的总和。我遇到的唯一其他解释是它是 sockets plus

 sysctl fs.file-nr 
Run Code Online (Sandbox Code Playgroud)

但在我的测试盒上

fs.file-nr = 5632   0   803168
Run Code Online (Sandbox Code Playgroud)

非常感谢精确的解释。

谢谢

编辑 2:所以显然 totsck 相当于

cat /proc/net/sockstat
Run Code Online (Sandbox Code Playgroud)

这就引出了一个问题,那里算什么。我找到了这个,但最后它只建议询问编写那段特定内核代码的人。

编辑(用于域套接字记帐):

[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
Run Code Online (Sandbox Code Playgroud)

pfo*_*pfo 5

还有 UNIX 域套接字(STREAM 和 DGRAM),它们似乎被系统使用的套接字总数考虑在内。UNIX 域套接字被进程引用为文件系统中的 inode。有很多东西仍然出于各种目的使用 UNIX 域套接字,所以sar选择它。检查输出netstat -a以查看系统上打开了多少 UNIX 域套接字。

fs.file-nr是最大文件句柄的数量,虽然重要与您在sar输出中看到的内容无关。

编辑:请考虑sar基本上读取/proc/net/sockstat并计算该计数的平均值或报告历史值。似乎/proc/net/sockstat从两个地方(2.6.27 的内核源)获取数据,位置是net/socket.cline: 2324 和net/ipv4/proc.cline 54 及以下,总数来自第一个位置,其余来自第二个位置。通过net结构还可以揭示哪些套接字被计算/计算并打印到 proc 文件系统中。

 79  * @SOCK_STREAM: stream (connection) socket
 80  * @SOCK_DGRAM: datagram (conn.less) socket>  
 81  * @SOCK_RAW: raw socket
 82  * @SOCK_RDM: reliably-delivered message>
 83  * @SOCK_SEQPACKET: sequential packet socket
 84  * @SOCK_DCCP: Datagram Congestion Control Protocol socket
Run Code Online (Sandbox Code Playgroud)