更新时间:2024-06-19 GMT+08:00

PGXC_OBS_IO_SCHEDULER_STATS

PGXC_OBS_IO_SCHEDULER_STATS视图显示OBS IO Scheduler读/写请求相关的近期实时统计信息。该系统视图仅云原生数仓3.0版本支持。

表1 PGXC_OBS_IO_SCHEDULER_STATS字段

名称

类型

描述

node_name

text

节点名称。

io_type

char

IO类型:

  • 'r',表示读。
  • 'w',表示写。
  • 's',表示文件操作。

current_bps

int8

当前带宽速率(KB/s)。

best_bps

int8

近期达到过的最佳带宽速率(KB/s)。

waiting_request_num

int

当前排队的请求数。

mean_request_size

int8

近期已处理请求的平均长度(KB)。

total_token_num

int

总的IO令牌数。

available_token_num

int

可用IO令牌数。

total_worker_num

int

总的工作线程数。

idle_worker_num

int

空闲的工作线程数。

示例

  1. 查询OBS IO Scheduler在每个节点读请求相关的统计信息。

    1
    2
    3
    4
    5
    6
    SELECT * FROM pgxc_obs_io_scheduler_stats WHERE io_type = 'r' ORDER BY node_name;
      node_name   | io_type | current_bps | best_bps | waiting_request_num | mean_request_size | total_token_num | available_token_num | total_worker_num | idle_worker_num
    --------------+---------+-------------+----------+---------------------+-------------------+-----------------+---------------------+------------------+-----------------
     dn_6001_6002 | r       |       26990 |    26990 |                   0 |               215 |              18 |                  16 |               12 |              10
     dn_6003_6004 | r       |       21475 |    21475 |                  10 |               190 |              30 |                  30 |               20 |              20
     dn_6005_6006 | r       |       12384 |    12384 |                  36 |               133 |              30 |                  27 |               20 |              17
    

    查询结果显示,这是当前IO Scheduler在进行读取IO操作时的某个时刻统计信息的快照(snapshot),此时带宽处于上升阶段,current_bps与best_bps相等。以dn_6003_6004为例,可以观察到该DN当前队列中存在排队的请求,total_token_num与available_token_num相等,说明查询视图的时刻IO Scheduler还未开始处理这些请求。

  2. 等待一段时间后,再次发起查询。

    SELECT * FROM pgxc_obs_io_scheduler_stats WHERE io_type = 'r' ORDER BY node_name;
      node_name   | io_type | current_bps | best_bps | waiting_request_num | mean_request_size | total_token_num | available_token_num | total_worker_num | idle_worker_num
    --------------+---------+-------------+----------+---------------------+-------------------+-----------------+---------------------+------------------+-----------------
     dn_6001_6002 | r       |       13228 |    26990 |                   0 |               609 |              18 |                  18 |               12 |              12
     dn_6003_6004 | r       |       15717 |    21475 |                   0 |               622 |              30 |                  30 |               20 |              20
     dn_6005_6006 | r       |       18041 |    21767 |                   0 |               609 |              30 |                  30 |               20 |              20

    此时队列中已经没有了排队的请求,且available_token_num等于total_token_num,说明IO Scheduler已经处理完所有请求,且没有新的请求需要被处理;但观察到current_bps不为零,是因为统计bps的周期为3秒,此时显示的是3秒前的结果。

  1. 短暂间隔后再次查询结果如下,current_bps更新为0。

    SELECT * FROM pgxc_obs_io_scheduler_stats WHERE io_type = 'r' ORDER BY node_name;
      node_name   | io_type | current_bps | best_bps | waiting_request_num | mean_request_size | total_token_num | available_token_num | total_worker_num | idle_worker_num
    --------------+---------+-------------+----------+---------------------+-------------------+-----------------+---------------------+------------------+-----------------
     dn_6001_6002 | r       |           0 |    26990 |                   0 |               609 |              18 |                  18 |               12 |              12
     dn_6003_6004 | r       |           0 |    21475 |                   0 |               622 |              30 |                  30 |               20 |              20
     dn_6005_6006 | r       |           0 |    21767 |                   0 |               609 |              30 |                  30 |               20 |              20