Skip to content

Commit ef6541c

Browse files
committed
fix cmn_summary for DMI absent
1 parent 95f1fa5 commit ef6541c

File tree

2 files changed

+17
-262
lines changed

2 files changed

+17
-262
lines changed

cmn_summary.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
from dmi import DMI
2020

2121

22+
o_verbose = 0
23+
24+
2225
S = cmn_json.system_from_json_file()
2326
C = S.CMNs[0]
2427

@@ -91,22 +94,27 @@ def cmn_frequency():
9194

9295
class MemoryProperties:
9396
"""
94-
Get system memory properties by decoding DMI table
97+
Get system memory properties by decoding DMI table.
98+
Will generally require root privilege.
9599
"""
96100
def __init__(self):
97101
self.speed = None # MT/s
98-
self.n_channels = 0
102+
self.n_channels = None
99103
self.data_width = None
100104
try:
101105
for d in DMI().memory():
102106
self.speed = d.c_speed
103107
self.data_width = d.d_width
104108
# DDR5 have 2 channels
109+
if self.n_channels is None:
110+
self.n_channels = 0
105111
self.n_channels += (2 if d.mem_type >= 0x20 else 1)
106112
except FileNotFoundError:
107113
pass
108114

109115
def total_bandwidth(self):
116+
if self.data_width is None:
117+
return None
110118
n_bytes = self.data_width // 8
111119
return n_bytes * self.n_channels * (self.speed * 1000000)
112120

@@ -176,8 +184,10 @@ def mem_bandwidth():
176184

177185
if __name__ == "__main__":
178186
import argparse
179-
parser = argparse.ArgumentParser()
187+
parser = argparse.ArgumentParser(description="Show major system parameters")
188+
parser.add_argument("-v", "--verbose", action="count", default=0, help="increase verbosity")
180189
opts = parser.parse_args()
190+
o_verbose = opts.verbose
181191
for (gname, group) in groups:
182192
gname_printed = False
183193
for (pname, par) in group:
@@ -189,6 +199,10 @@ def mem_bandwidth():
189199
par = par()
190200
except PermissionError:
191201
par = "<no permission - rerun as sudo>"
202+
except Exception as e:
203+
par = None
204+
if o_verbose:
205+
par = "<exception in script: %s>" % (type(e).__name__)
192206
if par is None:
193207
par = "<not available>"
194208
print(" %30s: %s" % (pname, par))

websockserver.py

Lines changed: 0 additions & 259 deletions
This file was deleted.

0 commit comments

Comments
 (0)