bsnmp-ucd возвращает неправильное значение счетчика ssCpuRawSoftIRQ

Разбираясь с необычно большим значением системной части нагрузки на процессор одного из наших серверов, я наткнулся на ошибку в bsnmp-ucd, который мы используем для мониторинга. В соответствии с MIB значение счетчика ssCpuRawSoftIRQ - это число "тиков" потраченных на обработку программных прерываний ("The number of 'ticks' (typically 1/100s) spent processing software interrupts."). bsnmp-ucd использует для этого счетчика значение sysctl vm.stats.sys.v_soft, в котором храниться просто количество программных прерываний. Надеюсь, у меня будет время, чтобы отправить багрепорт.

Update. Патч:

--- ucd_tree.def.orig   2010-06-08 10:16:58.000000000 +0400
+++ ucd_tree.def        2010-06-08 10:17:11.000000000 +0400
@@ -97,7 +97,7 @@
 #          (58 ssIORawReceived COUNTER op_systemStats GET)
           (59 ssRawInterrupts COUNTER op_systemStats GET)
           (60 ssRawContexts COUNTER op_systemStats GET)
-          (61 ssCpuRawSoftIRQ COUNTER op_systemStats GET)
+#          (61 ssCpuRawSoftIRQ COUNTER op_systemStats GET)
           (62 ssRawSwapIn COUNTER op_systemStats GET)
           (63 ssRawSwapOut COUNTER op_systemStats GET)
         )
--- mibss.c.orig        2010-06-08 10:17:30.000000000 +0400
+++ mibss.c     2010-06-08 10:17:49.000000000 +0400
@@ -63,7 +63,6 @@
        uint32_t        cpuRawInterrupt;
        uint32_t        rawInterrupts;
        uint32_t        rawContexts;
-       uint32_t        cpuRawSoftIRQ;
        uint32_t        rawSwapIn;
        uint32_t        rawSwapOut;
 };
@@ -159,8 +158,6 @@
        mibss.rawInterrupts = (uint32_t) val;
        sysctlval("vm.stats.sys.v_swtch", &val);
        mibss.rawContexts = (uint32_t) val;
-       sysctlval("vm.stats.sys.v_soft", &val);
-       mibss.cpuRawSoftIRQ = (uint32_t) val;
 
        current = get_ticks();
        if (current > last_update) {
@@ -293,9 +290,6 @@
                case LEAF_ssRawContexts:
                        value->v.uint32 = mibss.rawContexts;
                        break;
-               case LEAF_ssCpuRawSoftIRQ:
-                       value->v.uint32 = mibss.cpuRawSoftIRQ;
-                       break;
                case LEAF_ssRawSwapIn:
                        value->v.uint32 = mibss.rawSwapIn;
                        break;