summaryrefslogtreecommitdiff
path: root/app/src/monit.c
diff options
context:
space:
mode:
authorQiuwen Lu <[email protected]>2017-09-21 20:59:24 +0800
committerQiuwen Lu <[email protected]>2017-09-21 20:59:24 +0800
commit89c45d87014cf7f5659dcc894f8582e9c357c0eb (patch)
tree66abf47e2fe2743c38d1c77521ab2f6d61dabdb4 /app/src/monit.c
parent4f23b34d4b53d8e7086954e8656f6a8e913b5cda (diff)
应用状态统计工具支持一次性输出所有应用的统计状态
- 应用状态统计工具支持一次性输出所有应用的统计状态; - 修正原实现计算比特数时,没有乘以8的Bug。
Diffstat (limited to 'app/src/monit.c')
-rw-r--r--app/src/monit.c49
1 files changed, 36 insertions, 13 deletions
diff --git a/app/src/monit.c b/app/src/monit.c
index 7fce98f..fb8fdeb 100644
--- a/app/src/monit.c
+++ b/app/src/monit.c
@@ -91,46 +91,69 @@ static cJSON * __create_vdev_stats(struct vdev_instance * vdi)
/* 瞬时值 */
struct cJSON * j_vdev_speed = cJSON_CreateObject();
-#define __JOIN_VDEV_VALUE_STATS_ITEM(item, streams) do { \
- cJSON_AddItemToObject(j_vdev_value, #item, \
- __create_uint64_array(_stat_info.item, streams)); \
+#define __JOIN_VDEV_VALUE_STATS_ITEM(item, streams) do { \
+ cJSON_AddItemToObject(j_vdev_value, #item, \
+ __create_uint64_array(_stat_info.item, streams)); \
+} while(0)
+
+#define __JOIN_VDEV_VALUE_BYTES_TO_BITS_STAT_ITEM(item, streams) do { \
+ uint64_t __bits_item[MR_SID_MAX]; \
+ for (int i = 0; i < streams; i++) \
+ __bits_item[i] = _stat_info.item[i] * 8; \
+ \
+ cJSON_AddItemToObject(j_vdev_value, #item, __create_uint64_array( \
+ __bits_item, streams)); \
} while(0)
__JOIN_VDEV_VALUE_STATS_ITEM(rx_on_line, nr_rx_stream);
__JOIN_VDEV_VALUE_STATS_ITEM(rx_deliver, nr_rx_stream);
__JOIN_VDEV_VALUE_STATS_ITEM(rx_missed, nr_rx_stream);
- __JOIN_VDEV_VALUE_STATS_ITEM(rx_total_len, nr_rx_stream);
+ __JOIN_VDEV_VALUE_BYTES_TO_BITS_STAT_ITEM(rx_total_len, nr_rx_stream);
__JOIN_VDEV_VALUE_STATS_ITEM(tx_on_line, nr_tx_stream);
__JOIN_VDEV_VALUE_STATS_ITEM(tx_deliver, nr_tx_stream);
__JOIN_VDEV_VALUE_STATS_ITEM(tx_missed, nr_tx_stream);
- __JOIN_VDEV_VALUE_STATS_ITEM(tx_total_len, nr_tx_stream);
+ __JOIN_VDEV_VALUE_BYTES_TO_BITS_STAT_ITEM(tx_total_len, nr_tx_stream);
__JOIN_VDEV_VALUE_STATS_ITEM(ftx_on_line, nr_tx_stream);
__JOIN_VDEV_VALUE_STATS_ITEM(ftx_deliver, nr_tx_stream);
__JOIN_VDEV_VALUE_STATS_ITEM(ftx_missed, nr_tx_stream);
- __JOIN_VDEV_VALUE_STATS_ITEM(ftx_total_len, nr_tx_stream);
+ __JOIN_VDEV_VALUE_BYTES_TO_BITS_STAT_ITEM(ftx_total_len, nr_tx_stream);
+
+#define __JOIN_VDEV_SPEED_STATS_ITEM(item, streams) do { \
+ cJSON_AddItemToObject(j_vdev_speed, #item, \
+ __create_uint64_delta_array(_stat_info.item, \
+ _stat_info_last.item, streams, g_monit_interval)); \
+} while(0)
-#define __JOIN_VDEV_SPEED_STATS_ITEM(item, streams) do { \
- cJSON_AddItemToObject(j_vdev_speed, #item, \
- __create_uint64_delta_array(_stat_info.item, \
- _stat_info_last.item, streams, g_monit_interval)); \
+#define __JOIN_VDEV_SPEED_BYTES_TO_BITS_STAT_ITEM(item, streams) do { \
+ uint64_t __bits_item[MR_SID_MAX]; \
+ for (int i = 0; i < streams; i++) \
+ __bits_item[i] = _stat_info.item[i] * 8; \
+ \
+ uint64_t __bits_item_last[MR_SID_MAX]; \
+ for (int i = 0; i < streams; i++) \
+ __bits_item_last[i] = _stat_info_last.item[i] * 8; \
+ \
+ cJSON_AddItemToObject(j_vdev_speed, #item, \
+ __create_uint64_delta_array(__bits_item, \
+ __bits_item_last, streams, g_monit_interval)); \
} while(0)
__JOIN_VDEV_SPEED_STATS_ITEM(rx_on_line, nr_rx_stream);
__JOIN_VDEV_SPEED_STATS_ITEM(rx_deliver, nr_rx_stream);
__JOIN_VDEV_SPEED_STATS_ITEM(rx_missed, nr_rx_stream);
- __JOIN_VDEV_SPEED_STATS_ITEM(rx_total_len, nr_rx_stream);
+ __JOIN_VDEV_SPEED_BYTES_TO_BITS_STAT_ITEM(rx_total_len, nr_rx_stream);
__JOIN_VDEV_SPEED_STATS_ITEM(tx_on_line, nr_tx_stream);
__JOIN_VDEV_SPEED_STATS_ITEM(tx_deliver, nr_tx_stream);
__JOIN_VDEV_SPEED_STATS_ITEM(tx_missed, nr_tx_stream);
- __JOIN_VDEV_SPEED_STATS_ITEM(tx_total_len, nr_tx_stream);
+ __JOIN_VDEV_SPEED_BYTES_TO_BITS_STAT_ITEM(tx_total_len, nr_tx_stream);
__JOIN_VDEV_SPEED_STATS_ITEM(ftx_on_line, nr_tx_stream);
__JOIN_VDEV_SPEED_STATS_ITEM(ftx_deliver, nr_tx_stream);
__JOIN_VDEV_SPEED_STATS_ITEM(ftx_missed, nr_tx_stream);
- __JOIN_VDEV_SPEED_STATS_ITEM(ftx_total_len, nr_tx_stream);
+ __JOIN_VDEV_SPEED_BYTES_TO_BITS_STAT_ITEM(ftx_total_len, nr_tx_stream);
cJSON_AddItemToObject(j_vdev_stats, "accumulative", j_vdev_value);
cJSON_AddItemToObject(j_vdev_stats, "speed", j_vdev_speed);