在 ss -s 中,内核计数器实际计数是多少?

In ss -s, what is the kernel counter actually counting?

在 OEL 7 服务器 (3.10.0-1062.9.1.el7.x86_64) 上解决问题时,我 运行 命令

sudo ss -s

这给了我输出:

Total: 601 (kernel 1071)
TCP:   8 (estab 2, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0

Transport Total     IP        IPv6
        1071     -         -
RAW        2         0         2
UDP        6         4         2
TCP        8         5         3
INET       16        9         7
FRAG       0         0         0

执行 ss -a | wc -l 返回 225 个条目。

这让我想到了一个问题,kernel 1071 到底算什么? 查看各种手册页没有提供答案。 使用 strace,我可以看到 ss 的位置:

/proc/net/sockstat
/proc/net/sockstat6
/proc/net/snmp
/proc/slabinfo

查看这些文件和文档,该值似乎来自 /proc/slabinfo.
通过 /proc/slabinfo 搜索 1071 返回一个条目:

sock_inode_cache    1071   1071    640   51    8 : tunables    0    0    0 : slabdata     21     21      0

查看 sock_inode_cache 上的文件和文档到目前为止没有帮助。我希望这里有人知道内核计数器实际在计数什么,或者可以指出正确的方向。

what is kernel 1071 actually counting?

sock_inode_cache 表示 Linux 内核 Slab 统计信息。它显示有多少套接字 inode(活动对象)。

struct socket_alloc corresponds to the sock_inode_cache slab cache and contains the struct socket and struct inode, so it is connected to VFS.