diff options
| author | Qiuwen Lu <[email protected]> | 2017-09-21 20:59:24 +0800 |
|---|---|---|
| committer | Qiuwen Lu <[email protected]> | 2017-09-21 20:59:24 +0800 |
| commit | 89c45d87014cf7f5659dcc894f8582e9c357c0eb (patch) | |
| tree | 66abf47e2fe2743c38d1c77521ab2f6d61dabdb4 /app/src/monit.c | |
| parent | 4f23b34d4b53d8e7086954e8656f6a8e913b5cda (diff) | |
应用状态统计工具支持一次性输出所有应用的统计状态
- 应用状态统计工具支持一次性输出所有应用的统计状态;
- 修正原实现计算比特数时,没有乘以8的Bug。
Diffstat (limited to 'app/src/monit.c')
| -rw-r--r-- | app/src/monit.c | 49 |
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); |
