我正在分析主机的网络性能,并且使用 SystemTap 的 nettop.stp 示例/usr/share/systemtap/examples/network/nettoqp.stp
。我注意到它包括交换器进程和 kworker 内核线程的网络活动。为什么 pid 0 或内核线程会执行网络 I/O?看起来很奇怪。难道我们正在接收数据,但没有应用程序需要它 - 多播,也许,不是发往该主机的?
我在 RHEL7 机器上运行它,但我注意到我的 Fedora 37 笔记本电脑上有 pid 0 数据包。
感谢您提供任何线索。这是一些示例输出:
PID UID DEV XMIT_PK RECV_PK XMIT_KB RECV_KB COMMAND
64397 10446 em1 37143 59977 602558 3093 ssh
64397 10446 bond0.16 37143 0 602558 0 ssh
64397 10446 bond0 37143 0 602558 0 ssh
0 0 em1 823 21151 13073 1225 swapper/0
64396 10446 em1 189 4418 3026 227 scp
0 0 bond0.16 823 0 13073 0 swapper/0
0 0 bond0 823 0 13073 0 swapper/0
65058 0 p1p2 0 645 0 87 kworker/u547:3
11122 0 p1p2 0 474 0 41 kworker/u547:2
0 0 p1p2 0 261 0 12 swapper/16
0 0 p3p2 0 253 0 12 swapper/17
6 0 em1 151 92 2431 4 ksoftirqd/0
66793 0 em1 2 232 32 12 lsof
答案1
内核中有很多网络客户端和服务器;从 NFS 和 CIFS 客户端和服务器,到网络块设备,到虚拟化网络设备,从 USB/IP 到 IIO,等等。
PID 0 很可能是您系统上的 systemd,它具有很多网络功能,具体取决于您让它做什么。例如,它可能通过网络记录到系统日志守护程序。