Skip to content

Commit f13bc29

Browse files
authored
[SWDEV-520148] Modify VRAM details in monitor output (#199)
Earlier amd-smi monitor was showing VRAM usage as used and total. Modified it to display free VRAM and VRAM percentage. Updated Changelog. Signed-off-by: Kanangot Balakrishnan, Bindhiya <Bindhiya.KanangotBalakrishnan@amd.com> [ROCm/amdsmi commit: 3ddfbcc]
1 parent ec9be97 commit f13bc29

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

projects/amdsmi/CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,18 @@ Full documentation for amd_smi_lib is available at [https://rocm.docs.amd.com/pr
1818
- Increasing available JPEG engines to 40.
1919
Current ASICs may not support all 40. These will be indicated as UINT16_MAX or N/A in CLI.
2020

21+
### Changed
22+
23+
- **Modified VRAM display for `amd-smi monitor -v`**.
24+
- Added free VRAM and VRAM percentage.
25+
26+
```shell
27+
$ amd-smi monitor -v
28+
GPU VRAM_USED VRAM_FREE VRAM_TOTAL VRAM%
29+
0 174 MB 16011 MB 16185 MB 0.01 %
30+
1 78 MB 347 MB 425 MB 0.18 %
31+
...
32+
```
2133

2234
## amd_smi_lib for ROCm 6.4.1
2335

projects/amdsmi/amdsmi_cli/amdsmi_commands.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5336,23 +5336,36 @@ def monitor(self, args, multiple_devices=False, watching_output=False, gpu=None,
53365336
try:
53375337
vram_usage = amdsmi_interface.amdsmi_get_gpu_vram_usage(args.gpu)
53385338
monitor_values['vram_used'] = vram_usage['vram_used']
5339+
monitor_values['vram_free'] = vram_usage['vram_total'] - vram_usage['vram_used']
53395340
monitor_values['vram_total'] = vram_usage['vram_total']
5341+
monitor_values['vram_percent'] = round ((vram_usage['vram_used'] / vram_usage['vram_total']), 2)
53405342
vram_usage_unit = "MB"
5343+
vram_percent_unit = "%"
53415344
if self.logger.is_human_readable_format():
53425345
monitor_values['vram_used'] = f"{monitor_values['vram_used']} {vram_usage_unit}"
5346+
monitor_values['vram_free'] = f"{monitor_values['vram_free']} {vram_usage_unit}"
53435347
monitor_values['vram_total'] = f"{monitor_values['vram_total']} {vram_usage_unit}"
5348+
monitor_values['vram_percent'] = f"{monitor_values['vram_percent']} {vram_percent_unit}"
53445349
if self.logger.is_json_format():
53455350
monitor_values['vram_used'] = {"value" : monitor_values['vram_used'],
53465351
"unit" : vram_usage_unit}
5352+
monitor_values['vram_free'] = {"value" : monitor_values['vram_free'],
5353+
"unit" : vram_usage_unit}
53475354
monitor_values['vram_total'] = {"value" : monitor_values['vram_total'],
53485355
"unit" : vram_usage_unit}
5356+
monitor_values['vram_percent'] = {"value" : monitor_values['vram_percent'],
5357+
"unit" : vram_percent_unit}
53495358
except amdsmi_exception.AmdSmiLibraryException as e:
53505359
monitor_values['vram_used'] = "N/A"
5360+
monitor_values['vram_free'] = "N/A"
53515361
monitor_values['vram_total'] = "N/A"
5362+
monitor_values['vram_percent'] = "N/A"
53525363
logging.debug("Failed to get vram memory usage on gpu %s | %s", gpu_id, e.get_error_info())
53535364

53545365
self.logger.table_header += 'VRAM_USED'.rjust(11)
5366+
self.logger.table_header += 'VRAM_FREE'.rjust(12)
53555367
self.logger.table_header += 'VRAM_TOTAL'.rjust(12)
5368+
self.logger.table_header += 'VRAM%'.rjust(9)
53565369

53575370
if args.vram_usage and args.default_output:
53585371
try:

projects/amdsmi/amdsmi_cli/amdsmi_logger.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,11 +136,15 @@ def _convert_json_to_tabular(self, json_object: Dict[str, any], dynamic=False):
136136
table_values += string_value.rjust(10)
137137
elif key in ('mem_clock', 'vram_used'):
138138
table_values += string_value.rjust(11)
139+
elif key in ('vram_total', 'vram_free'):
140+
table_values += string_value.rjust(12)
141+
elif key == 'vram_percent':
142+
table_values += string_value.rjust(9)
139143
elif key in ('encoder', 'decoder'):
140144
table_values += string_value.rjust(7)
141145
elif key in ('vclock', 'dclock'):
142146
table_values += string_value.rjust(10)
143-
elif key in ('single_bit_ecc', 'double_bit_ecc', 'pcie_bw', 'vram_total'):
147+
elif key in ('single_bit_ecc', 'double_bit_ecc', 'pcie_bw'):
144148
table_values += string_value.rjust(12)
145149
elif key in ('pcie_replay'):
146150
table_values += string_value.rjust(13)

0 commit comments

Comments
 (0)