我正在寻找“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加上
sysctl fs.file-nr
但在我的testing盒上
fs.file-nr = 5632 0 803168
精确的解释非常感谢。
谢谢
编辑2:所以显然totsck相当于
cat /proc/net/sockstat
这就导致了这个问题。 我发现这个,但最后只build议询问编写特定内核代码的人。
编辑(对于域套接字帐户):
[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域套接字被进程引用为文件系统中的inode。 还有很多东西仍然使用UNIX域套接字来实现各种目的,所以sar
select了这个。 检查netstat -a
输出以查看系统上打开了多less个UNIX域套接字。
fs.file-nr
是最大文件句柄的数量,重要的是与你在sar
输出中看到的无关。
编辑:请考虑sar
基本上读取/proc/net/sockstat
并作出一个平均数,或报告历史值。 看来/proc/net/sockstat
从两个地方获取数据(内核源代码为2.6.27),位置是net/socket.c
行:2324和net/ipv4/proc.c
行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