通过 netstat -m 命令监视 mbuf 池
可使用 netstat -m 命令检测网络内存 (mbuf/cluster) 请求的不足或故障。
可使用 netstat -Zm 命令清空(即清零)mbuf 统计信息。 在运行测试以从原始统计信息集合开始时,这是很有帮助的。 netstat -m 命令提供了下列字段:
- 字段名
- definition
- By size
- 显示缓冲区的大小。
- inuse
- 显示正在使用的具有特定大小的缓冲区数。
- 调用
- 显示每种大小的缓冲区的调用或分配请求数。
- 失败
- 显示有多少分配请求因为无缓冲区可用而失败。
- 已延迟
- 显示当缓冲区大小为空并由调用程序设置了 M_WAIT 标志时延迟的调用数。
- 可用
- 显示处于空闲列表中可以进行分配的每种大小的缓冲区数。
- hiwat
- 显示由系统确定的可以保留在空闲列表中的最大缓冲区数。 超出此限制的任何空闲缓冲区会渐渐释放回系统中。
- freed
- 显示当空闲计数超过 hiwat 限制时已释放回系统中的缓冲区数。
不应该看到大量的 failed 调用。 当缓冲池大小增加时,可能会有少数几个触发系统分配更多缓冲区的失败调用出现。 每种大小都有一组预定义的缓冲区,系统在每次引导后都从这些缓冲区开始,可以按需要增加缓冲区数。
下面是从双处理器或 CPU 机器发出的 netstat -m 命令的示例:
# netstat -m
Kernel malloc statistics:
******* CPU 0 *******
By size inuse calls failed delayed free hiwat freed
32 68 693 0 0 60 2320 0
64 55 115 0 0 9 1160 0
128 21 451 0 0 11 580 0
256 1064 5331 0 0 1384 1392 42
512 41 136 0 0 7 145 0
1024 10 231 0 0 6 362 0
2048 2049 4097 0 0 361 362 844
4096 2 8 0 0 435 435 453
8192 2 4 0 0 0 36 0
16384 0 513 0 0 86 87 470
******* CPU 1 *******
By size inuse calls failed delayed free hiwat freed
32 139 710 0 0 117 2320 0
64 53 125 0 0 11 1160 0
128 41 946 0 0 23 580 0
256 62 7703 0 0 1378 1392 120
512 37 109 0 0 11 145 0
1024 21 217 0 0 3 362 0
2048 2 2052 0 0 362 362 843
4096 7 10 0 0 434 435 449
8192 0 4 0 0 1 36 0
16384 0 5023 0 0 87 87 2667
***** Allocations greater than 16384 Bytes *****
By size inuse calls failed delayed free hiwat freed
65536 2 2 0 0 0 4096 0
Streams mblk statistic failures:
0 high priority mblk failures
0 medium priority mblk failures
0 low priority mblk failures