继续搞POLLING的分析
在SMP机器上装了FB6,进行POLLING测试.
SMP机器配置: CPU PII 450 X 2
主板:MSI 6129
内存 256MB
网卡 IF_VR 1块
IF_FXP 1块
硬盘 2 块
操作系统:FreeBSD 6.0
POLLING支持开启.
增加监测功能:
1.手动
增加sysctl中kern.polling的调试节点
SYSCTL_NODE(_kern_polling, OID_AUTO, dbg, CTLFLAG_RW, 0, "Device
polling debug");
监测点1:NETISR_POLL监测.在调试节点下申明一计数器.
监测点2:NETISR_POLLMORE监测.在调试节点下申明一计数器.
其他检测点:正考虑中...(网卡的执行CPU和其他一些参数)
2.自动
还未考虑(是否对调度器情况进程检测?)
目前的一些结果:
1. 在PII X 2的SMP环境中,软中断NETISR_POLL的每秒差不多轮询30000多次.
这是在没有什么网络负载的情况下,下一步要测试在以太网,IP层分别有负载
的情况.
2. NETISR_POLLMORE比NETISR_POLL要少一些.这有些奇怪,按代码的情况应该
是一样多的,少的情况只有一种:在NETISR_POLLMORE执行前又到了硬时钟中断
,继续执行NETISR_POLL???
3. 一些测试值:
kern.polling.dbg.poll_coun: 5404323
kern.polling.dbg.pollmore_coun: 4952549
kern.polling.dbg.poll_suspect: 0
kern.polling.dbg.poll_invoke: 24 从硬件时钟中断到netisr_poll的毫秒
kern.polling.dbg.net_load: 30 从NETISR_POLL到NETISR_POLLMORE的毫秒
kern.polling.burst: 150
kern.polling.burst_max: 150
kern.polling.each_burst: 20
kern.polling.idle_poll: 0
kern.polling.user_frac: 50
kern.polling.reg_frac: 20
kern.polling.short_ticks: 258
kern.polling.lost_polls: 4
kern.polling.pending_polls: 0
kern.polling.residual_burst: 0
kern.polling.handlers: 1
kern.polling.enable: 1
kern.polling.phase: 0
kern.polling.suspect: 2
kern.polling.stalled: 0
kern.polling.idlepoll_sleeping: 1
阅读(2669) | 评论(0) | 转发(0) |