]>
git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/iostat/module.py
3 from mgr_module
import CLIReadCommand
, HandleCommandResult
, MgrModule
6 class Module(MgrModule
):
7 def __init__(self
, *args
: Any
, **kwargs
: Any
) -> None:
8 super().__init
__(*args
, **kwargs
)
10 def self_test(self
) -> None:
11 r
= self
.get('io_rate')
12 assert('pg_stats_delta' in r
)
13 assert('stamp_delta' in r
['pg_stats_delta'])
14 assert('stat_sum' in r
['pg_stats_delta'])
15 assert('num_read_kb' in r
['pg_stats_delta']['stat_sum'])
16 assert('num_write_kb' in r
['pg_stats_delta']['stat_sum'])
17 assert('num_write' in r
['pg_stats_delta']['stat_sum'])
18 assert('num_read' in r
['pg_stats_delta']['stat_sum'])
20 @CLIReadCommand('iostat', poll
=True)
21 def iostat(self
, width
: int = 80, print_header
: bool = False) -> HandleCommandResult
:
33 r
= self
.get('io_rate')
35 stamp_delta
= int(float(r
['pg_stats_delta']['stamp_delta']))
37 rd
= r
['pg_stats_delta']['stat_sum']['num_read_kb'] // stamp_delta
38 wr
= r
['pg_stats_delta']['stat_sum']['num_write_kb'] // stamp_delta
39 # The values are in kB, but to_pretty_iec() requires them to be in bytes
44 rd_ops
= r
['pg_stats_delta']['stat_sum']['num_read'] // stamp_delta
45 wr_ops
= r
['pg_stats_delta']['stat_sum']['num_write'] // stamp_delta
46 total_ops
= rd_ops
+ wr_ops
49 elems
= ['Read', 'Write', 'Total', 'Read IOPS', 'Write IOPS', 'Total IOPS']
50 ret
+= self
.get_pretty_header(elems
, width
)
53 self
.to_pretty_iec(rd
) + 'B/s',
54 self
.to_pretty_iec(wr
) + 'B/s',
55 self
.to_pretty_iec(total
) + 'B/s',
60 ret
+= self
.get_pretty_row(elems
, width
)
62 return HandleCommandResult(stdout
=ret
)