mblt-tracker 0.2.2__tar.gz → 0.2.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/PKG-INFO +131 -45
  2. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/README.md +130 -44
  3. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/mblt_tracker/__init__.py +1 -1
  4. mblt_tracker-0.2.4/mblt_tracker/_logging.py +40 -0
  5. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/mblt_tracker/_types.py +43 -3
  6. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/mblt_tracker/cli.py +2 -1
  7. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/mblt_tracker/device_tracker_cpu.py +4 -4
  8. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/mblt_tracker/device_tracker_dram.py +5 -2
  9. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/mblt_tracker/static_info.py +508 -7
  10. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/mblt_tracker.egg-info/PKG-INFO +131 -45
  11. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/mblt_tracker.egg-info/SOURCES.txt +2 -0
  12. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/tests/test_cli.py +12 -6
  13. mblt_tracker-0.2.4/tests/test_logging.py +32 -0
  14. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/tests/test_static_info.py +268 -10
  15. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/LICENSE +0 -0
  16. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/mblt_tracker/device_tracker.py +0 -0
  17. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/mblt_tracker/device_tracker_gpu.py +0 -0
  18. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/mblt_tracker/device_tracker_npu.py +0 -0
  19. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/mblt_tracker/device_tracker_npu.sh +0 -0
  20. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/mblt_tracker.egg-info/dependency_links.txt +0 -0
  21. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/mblt_tracker.egg-info/entry_points.txt +0 -0
  22. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/mblt_tracker.egg-info/requires.txt +0 -0
  23. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/mblt_tracker.egg-info/top_level.txt +0 -0
  24. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/pyproject.toml +0 -0
  25. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/setup.cfg +0 -0
  26. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/tests/test_cpu.py +0 -0
  27. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/tests/test_dram_tracker_unit.py +0 -0
  28. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/tests/test_gpu.py +0 -0
  29. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/tests/test_gpu_tracker_unit.py +0 -0
  30. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/tests/test_npu.py +0 -0
  31. {mblt_tracker-0.2.2 → mblt_tracker-0.2.4}/tests/test_npu_tracker_unit.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mblt-tracker
3
- Version: 0.2.2
3
+ Version: 0.2.4
4
4
  Summary: A Python library to track device usage, such as Mobilint NPU, NVIDIA GPU, Intel CPU, ...
5
5
  Author-email: "Mobilint Inc." <tech-support@mobilint.com>
6
6
  License: BSD-3-Clause
@@ -75,9 +75,9 @@ Dynamic: license-file
75
75
  - **Comprehensive Metrics**: Capture Power (Watts), Utilization (%), Memory Usage (MB/%), and Temperature (C).
76
76
  - **Statistical Summaries**: Automatically calculates averages, peaks (max), and p99 values.
77
77
  - **Time-Series Traces**: Export raw data for custom plotting and analysis.
78
- - **Static Metadata**: Collect best-effort host, OS, PCIe, driver, firmware, and device information for reproducible benchmarks.
78
+ - **Static Metadata**: Collect best-effort host, OS, CPU, DRAM capacity/type/speed, motherboard, PCIe, driver, firmware, and device information for reproducible benchmarks.
79
79
  - **CLI Collection Tool**: Use `mblt-tracker collect` to export static host and PCIe information as JSON.
80
- - **PCIe Discovery**: Detect GPU/NPU-related PCIe devices on Linux and Windows, including link speed/width where available.
80
+ - **PCIe Discovery**: Detect GPU/NPU-related PCIe devices on Linux and Windows, including current and maximum link speed/width where available.
81
81
  - **Lightweight**: Minimal overhead, designed for production and research environments.
82
82
 
83
83
  ---
@@ -163,41 +163,70 @@ mblt-tracker collect --pcie-vendor-id 1ed5 --pcie-device-id 0100
163
163
  mblt-tracker collect --pcie-class-filter 0x12
164
164
  ```
165
165
 
166
- The CLI output is a JSON document containing best-effort host CPU, DRAM, OS, GPU, NPU, driver, and PCIe information. NVIDIA GPU entries are sourced from NVML and enriched with PCIe metadata where available. On Linux, PCIe information is read from sysfs. On Windows, PCI devices are collected through PowerShell/CIM/PnP queries.
166
+ The CLI output is a JSON document containing best-effort host CPU, DRAM, motherboard, OS, GPU, NPU, driver, and PCIe information. For NVIDIA GPU entries, NVML is the source of truth for GPU identity and PCIe link metadata; OS PCIe discovery is used only to attach non-link PCIe identifiers and descriptive fields where available. On Linux, non-NVIDIA PCIe information is read from sysfs. On Windows, non-NVIDIA PCI devices are collected through PowerShell/CIM/PnP queries.
167
167
 
168
168
  ### Example Output
169
169
 
170
170
  The following examples show representative `mblt-tracker collect` outputs across
171
171
  Windows and Linux systems. Public static output intentionally omits
172
- privacy-sensitive host and device instance identifiers: DRAM DIMM
173
- serial/part/manufacturer details are not collected, and PCIe `bus_address` /
174
- Windows `pnp_device_id` are not exposed, including when `--all-pcie-devices` is
175
- used.
172
+ privacy-sensitive host and device instance identifiers: DRAM DIMM part/serial
173
+ numbers, motherboard serial/asset tags, and PCIe `bus_address` / Windows
174
+ `pnp_device_id` are not exposed, including when `--all-pcie-devices` is used.
175
+ DRAM byte counts are accompanied by MB/GB display units; DRAM speed, type,
176
+ module capacity, and estimated theoretical bandwidth are kept to make benchmark results easier to
177
+ interpret.
176
178
 
177
179
  #### Windows host with Intel UHD Graphics, NVIDIA RTX 3090, and Mobilint NPU
178
180
 
179
181
  ```bash
180
182
  $ mblt-tracker collect
181
- WARNING:root:imports error
182
- You need to install pymongo>=3.9.0 in order to use MongoOutput
183
- WARNING:root:imports error
184
- You need to install pandas>=0.25.1 in order to use DataFrameOutput
183
+ WARNING:root:imports error
184
+ You need to install pymongo>=3.9.0 in order to use MongoOutput
185
+ WARNING:root:imports error
186
+ You need to install pandas>=0.25.1 in order to use DataFrameOutput
185
187
  {
186
188
  "hardware": {
187
189
  "cpu": {
188
190
  "architecture": "AMD64",
189
- "logical_cores": 20,
190
191
  "model_name": "13th Gen Intel(R) Core(TM) i5-13500",
191
- "physical_cores": 14,
192
192
  "vendor": "GenuineIntel"
193
193
  },
194
194
  "dram": {
195
- "available_bytes": 15008358400,
195
+ "available_bytes": 15580520448,
196
+ "available_gb": 14.51,
197
+ "available_mb": 14858.74,
196
198
  "configured_speed_mhz": 5600,
199
+ "module_count": 2,
200
+ "modules": [
201
+ {
202
+ "capacity_bytes": 17179869184,
203
+ "capacity_gb": 16.0,
204
+ "capacity_mb": 16384.0,
205
+ "configured_speed_mhz": 5600,
206
+ "data_width_bits": 64,
207
+ "ram_type": "DDR5",
208
+ "speed_mhz": 5600,
209
+ "theoretical_bandwidth_gbps": 44.8,
210
+ "total_width_bits": 64
211
+ },
212
+ {
213
+ "capacity_bytes": 17179869184,
214
+ "capacity_gb": 16.0,
215
+ "capacity_mb": 16384.0,
216
+ "configured_speed_mhz": 5600,
217
+ "data_width_bits": 64,
218
+ "ram_type": "DDR5",
219
+ "speed_mhz": 5600,
220
+ "theoretical_bandwidth_gbps": 44.8,
221
+ "total_width_bits": 64
222
+ }
223
+ ],
197
224
  "ram_type": "DDR5",
198
225
  "speed_mhz": 5600,
199
226
  "theoretical_bandwidth_gbps": 89.6,
200
- "total_bytes": 34113015808
227
+ "total_bytes": 34113015808,
228
+ "total_gb": 31.77,
229
+ "total_mb": 32532.71
201
230
  },
202
231
  "gpus": [
203
232
  {
@@ -226,8 +255,10 @@ WARNING:root:imports error
226
255
  "driver_provider": "NVIDIA",
227
256
  "driver_version": "595.97",
228
257
  "lane_width": "x4",
229
- "link_generation": "Gen1",
258
+ "link_generation": "Gen2",
230
259
  "manufacturer": "NVIDIA",
260
+ "max_lane_width": "x16",
261
+ "max_link_generation": "Gen4",
231
262
  "memory_total_bytes": 25769803776,
232
263
  "name": "NVIDIA GeForce RTX 3090",
233
264
  "revision": "0xa1",
@@ -237,6 +268,17 @@ WARNING:root:imports error
237
268
  "vendor_id": "0x10de"
238
269
  }
239
270
  ],
271
+ "motherboard": {
272
+ "chipset": "INTEL Intel(R) SMBus - 7A23",
273
+ "manufacturer": "Micro-Star International Co., Ltd.",
274
+ "model_name": "MAG B760 TOMAHAWK WIFI (MS-7D96)",
275
+ "pcie": {
276
+ "max_lane_width": "x16",
277
+ "max_link_generation": "Gen4",
278
+ "max_link_speed": "16.0 GT/s PCIe"
279
+ },
280
+ "version": "2.0"
281
+ },
240
282
  "npus": [
241
283
  {
242
284
  "class": "0x078000",
@@ -250,6 +292,8 @@ WARNING:root:imports error
250
292
  "lane_width": "x8",
251
293
  "link_generation": "Gen4",
252
294
  "manufacturer": "MOBILINT, Inc.",
295
+ "max_lane_width": "x8",
296
+ "max_link_generation": "Gen4",
253
297
  "max_link_speed": "16.0 GT/s PCIe",
254
298
  "max_link_width": "8",
255
299
  "name": "MOBILINT NPU Accelerator",
@@ -307,14 +351,16 @@ WARNING:root:imports error
307
351
  "hardware": {
308
352
  "cpu": {
309
353
  "architecture": "x86_64",
310
- "logical_cores": 96,
311
354
  "model_name": "INTEL(R) XEON(R) GOLD 6542Y",
312
- "physical_cores": 48,
313
355
  "vendor": "GenuineIntel"
314
356
  },
315
357
  "dram": {
316
- "available_bytes": 321193263104,
317
- "total_bytes": 405389791232
358
+ "available_bytes": 322689507328,
359
+ "available_gb": 300.53,
360
+ "available_mb": 307740.7,
361
+ "total_bytes": 405389791232,
362
+ "total_gb": 377.55,
363
+ "total_mb": 386609.83
318
364
  },
319
365
  "gpus": [
320
366
  {
@@ -337,6 +383,8 @@ WARNING:root:imports error
337
383
  "lane_width": "x16",
338
384
  "link_generation": "Gen1",
339
385
  "manufacturer": "NVIDIA Corporation",
386
+ "max_lane_width": "x16",
387
+ "max_link_generation": "Gen5",
340
388
  "memory_total_bytes": 102641958912,
341
389
  "name": "NVIDIA RTX PRO 6000 Blackwell Workstation Edition",
342
390
  "revision": "0xa1",
@@ -351,8 +399,10 @@ WARNING:root:imports error
351
399
  "device_id": "0x2bb1",
352
400
  "driver_version": "580.95.05",
353
401
  "lane_width": "x16",
354
- "link_generation": "Gen5",
402
+ "link_generation": "Gen1",
355
403
  "manufacturer": "NVIDIA Corporation",
404
+ "max_lane_width": "x16",
405
+ "max_link_generation": "Gen5",
356
406
  "memory_total_bytes": 102641958912,
357
407
  "name": "NVIDIA RTX PRO 6000 Blackwell Workstation Edition",
358
408
  "revision": "0xa1",
@@ -361,6 +411,17 @@ WARNING:root:imports error
361
411
  "vendor_id": "0x10de"
362
412
  }
363
413
  ],
414
+ "motherboard": {
415
+ "chipset": "ASPEED Technology, Inc. AST1150 PCI-to-PCI Bridge",
416
+ "manufacturer": "Supermicro",
417
+ "model_name": "X13DEG-QT",
418
+ "pcie": {
419
+ "max_lane_width": "x16",
420
+ "max_link_generation": "Gen5",
421
+ "max_link_speed": "32.0 GT/s PCIe"
422
+ },
423
+ "version": "1.10"
424
+ },
364
425
  "npus": [
365
426
  {
366
427
  "board_name": "aries0",
@@ -378,6 +439,8 @@ WARNING:root:imports error
378
439
  "lane_width": "8",
379
440
  "link_generation": "4",
380
441
  "manufacturer": "Mobilint, Inc.",
442
+ "max_lane_width": "x8",
443
+ "max_link_generation": "Gen4",
381
444
  "max_link_speed": "16.0 GT/s PCIe",
382
445
  "max_link_width": "8",
383
446
  "memory_total_bytes": 17179869184,
@@ -441,14 +504,27 @@ Warning: NVML not available. GPU information will not be collected.
441
504
  "hardware": {
442
505
  "cpu": {
443
506
  "architecture": "x86_64",
444
- "logical_cores": 16,
445
- "model_name": "11th Gen Intel(R) Core(TM) i7-11700K @ 3.60GHz",
446
- "physical_cores": 8,
507
+ "model_name": "13th Gen Intel(R) Core(TM) i5-13600K",
447
508
  "vendor": "GenuineIntel"
448
509
  },
449
510
  "dram": {
450
- "available_bytes": 15901192192,
451
- "total_bytes": 67178881024
511
+ "available_bytes": 27281420288,
512
+ "available_gb": 25.41,
513
+ "available_mb": 26017.59,
514
+ "total_bytes": 33379606528,
515
+ "total_gb": 31.09,
516
+ "total_mb": 31833.27
517
+ },
518
+ "motherboard": {
519
+ "chipset": "Intel Corporation Raptor Lake PCI Express Root Port #25",
520
+ "manufacturer": "ASUSTeK COMPUTER INC.",
521
+ "model_name": "ROG STRIX B760-I GAMING WIFI",
522
+ "pcie": {
523
+ "max_lane_width": "x16",
524
+ "max_link_generation": "Gen5",
525
+ "max_link_speed": "32.0 GT/s PCIe"
526
+ },
527
+ "version": "Rev 1.xx"
452
528
  },
453
529
  "npus": [
454
530
  {
@@ -466,11 +542,13 @@ Warning: NVML not available. GPU information will not be collected.
466
542
  },
467
543
  "lane_width": "8",
468
544
  "link_generation": "4",
469
- "manufacturer": "Mobilint, Inc.",
545
+ "manufacturer": "MOBILINT, Inc.",
546
+ "max_lane_width": "x8",
547
+ "max_link_generation": "Gen4",
470
548
  "max_link_speed": "16.0 GT/s PCIe",
471
549
  "max_link_width": "8",
472
550
  "memory_total_bytes": 17179869184,
473
- "name": "Aries",
551
+ "name": "MOBILINT NPU Accelerator",
474
552
  "product": "Aries",
475
553
  "revision": "0x2",
476
554
  "subsystem_device_id": "0x108B",
@@ -492,11 +570,13 @@ Warning: NVML not available. GPU information will not be collected.
492
570
  },
493
571
  "lane_width": "8",
494
572
  "link_generation": "4",
495
- "manufacturer": "Mobilint, Inc.",
573
+ "manufacturer": "MOBILINT, Inc.",
574
+ "max_lane_width": "x8",
575
+ "max_link_generation": "Gen4",
496
576
  "max_link_speed": "16.0 GT/s PCIe",
497
577
  "max_link_width": "8",
498
578
  "memory_total_bytes": 17179869184,
499
- "name": "Aries",
579
+ "name": "MOBILINT NPU Accelerator",
500
580
  "product": "Aries",
501
581
  "revision": "0x2",
502
582
  "subsystem_device_id": "0x108B",
@@ -518,11 +598,13 @@ Warning: NVML not available. GPU information will not be collected.
518
598
  },
519
599
  "lane_width": "8",
520
600
  "link_generation": "4",
521
- "manufacturer": "Mobilint, Inc.",
601
+ "manufacturer": "MOBILINT, Inc.",
602
+ "max_lane_width": "x8",
603
+ "max_link_generation": "Gen4",
522
604
  "max_link_speed": "16.0 GT/s PCIe",
523
605
  "max_link_width": "8",
524
606
  "memory_total_bytes": 17179869184,
525
- "name": "Aries",
607
+ "name": "MOBILINT NPU Accelerator",
526
608
  "product": "Aries",
527
609
  "revision": "0x2",
528
610
  "subsystem_device_id": "0x108B",
@@ -544,11 +626,13 @@ Warning: NVML not available. GPU information will not be collected.
544
626
  },
545
627
  "lane_width": "8",
546
628
  "link_generation": "4",
547
- "manufacturer": "Mobilint, Inc.",
629
+ "manufacturer": "MOBILINT, Inc.",
630
+ "max_lane_width": "x8",
631
+ "max_link_generation": "Gen4",
548
632
  "max_link_speed": "16.0 GT/s PCIe",
549
633
  "max_link_width": "8",
550
634
  "memory_total_bytes": 17179869184,
551
- "name": "Aries",
635
+ "name": "MOBILINT NPU Accelerator",
552
636
  "product": "Aries",
553
637
  "revision": "0x2",
554
638
  "subsystem_device_id": "0x108B",
@@ -573,9 +657,9 @@ Warning: NVML not available. GPU information will not be collected.
573
657
  },
574
658
  "npu_driver_version": "1.12.0",
575
659
  "os": {
576
- "kernel_version": "6.17.0-20-generic",
660
+ "kernel_version": "6.17.0-23-generic",
577
661
  "name": "Linux",
578
- "version": "Ubuntu 24.04.2 LTS"
662
+ "version": "Ubuntu 24.04.4 LTS"
579
663
  },
580
664
  "qbcompiler": {
581
665
  "version": "not_installed"
@@ -597,7 +681,7 @@ Warning: NVML not available. GPU information will not be collected.
597
681
  | **Utilization (%)** | ✅ (`psutil`) | N/A | ✅ (NVML) | ✅ (`mobilint-cli`) |
598
682
  | **Memory (MB/%)** | ✅ (`psutil`) | N/A | ✅ (NVML) | ✅ (`mobilint-cli`) |
599
683
  | **Temperature (C)** | ✅ (`psutil`) | N/A | ✅ (NVML) | ✅ (`mobilint-cli`) |
600
- | **Static Info** | ✅ Host/OS/DRAM | ✅ Host/OS/DRAM | ✅ NVML + PCIe | ✅ PCIe + `mobilint-cli` |
684
+ | **Static Info** | ✅ Host/OS/DRAM/Motherboard | ✅ Host/OS/DRAM/Motherboard | ✅ NVML + PCIe | ✅ PCIe + `mobilint-cli` |
601
685
  | **Per-Device Stats** | ✅ (Sockets) | ✅ (Sockets) | ✅ (GPU Indices) | ✅ (Logical NPU Cards) |
602
686
 
603
687
  ---
@@ -618,7 +702,7 @@ Uses **pyRAPL** for power measurements and **psutil** for utilization/memory.
618
702
 
619
703
  - **Features**: Tracks total system CPU usage or specific indices (e.g., `CPUDeviceTracker(cpu_id=[0, 1])`).
620
704
  - **Temperature**: Uses `psutil.sensors_temperatures()` when the platform exposes CPU thermal sensors.
621
- - **Static Info**: Reports CPU architecture, model, vendor, physical/logical cores, DRAM capacity, OS details, and Linux CPU governor when available.
705
+ - **Static Info**: Reports CPU architecture, model, vendor, DRAM capacity/type/speed, motherboard metadata, OS details, and CPU power policy when available.
622
706
 
623
707
  ### NVIDIA GPU
624
708
 
@@ -627,7 +711,7 @@ Uses **NVML** (via `nvidia-ml-py`) for high-fidelity hardware monitoring.
627
711
  - **Features**: Tracks total system GPU usage or specific indices (e.g., `GPUDeviceTracker(gpu_id=[0, 1])`).
628
712
  - **Dependencies**: Requires NVIDIA Drivers and NVML library installed.
629
713
  - **Temperature**: Reads on-die GPU temperature through NVML.
630
- - **Static Info**: `GPUDeviceTracker.get_static_info()` reports the detected GPU count, tracked device names, NVIDIA driver version, and the raw NVML CUDA driver version. The `mblt-tracker collect` CLI provides richer NVML-discovered GPU metadata enriched with PCIe device/link information when available.
714
+ - **Static Info**: `GPUDeviceTracker.get_static_info()` reports the detected GPU count, tracked device names, NVIDIA driver version, and the raw NVML CUDA driver version. The `mblt-tracker collect` CLI provides richer NVML-discovered GPU metadata; for NVIDIA GPUs, PCIe link generation/width fields come from NVML, while OS PCIe discovery may add non-link identifiers and descriptive metadata.
631
715
 
632
716
  ### Host DRAM
633
717
 
@@ -638,7 +722,7 @@ Uses the **Intel RAPL DRAM domain** through `pyRAPL` for host DRAM power measure
638
722
  - **Features**: Tracks all detected CPU socket DRAM domains by default, or specific socket IDs with `DRAMDeviceTracker(socket_id=0)` / `DRAMDeviceTracker(socket_id=[0, 1])`.
639
723
  - **Metrics**: Reports total host DRAM power through standard keys (`avg_power_w`, `p99_power_w`, `max_power_w`) and DRAM-specific aliases (`avg_dram_power_w`, `p99_dram_power_w`, `max_dram_power_w`). Per-socket statistics are returned under `metrics["dram"]`.
640
724
  - **Trace**: `DRAMDeviceTracker.get_trace()` returns total host DRAM power as `list[(timestamp, power_w)]`.
641
- - **Static Info**: `DRAMDeviceTracker.get_static_info()` returns the same privacy-first host CPU, aggregate DRAM capacity, and OS metadata as host static collection. Individual DIMM identifiers are not collected.
725
+ - **Static Info**: `DRAMDeviceTracker.get_static_info()` returns the same privacy-first host CPU, aggregate DRAM capacity with MB/GB display units, optional DIMM capacity/type/speed summaries, motherboard metadata, and OS metadata as host static collection. Individual DIMM identifiers are not exposed.
642
726
 
643
727
  ### Mobilint NPU
644
728
 
@@ -725,13 +809,15 @@ Static information is collected on a best-effort, privacy-first basis and may va
725
809
 
726
810
  Typical fields include:
727
811
 
728
- - `hardware.cpu`: CPU architecture, model name, vendor, physical cores, logical cores
729
- - `hardware.dram`: total and available memory in bytes, plus optional privacy-safe aggregate fields such as `ram_type`, `speed_mhz`, `configured_speed_mhz`, and `theoretical_bandwidth_gbps` when available. Individual DIMM serial numbers, part numbers, manufacturers, and `hardware.dram.dimms` are not collected or exposed.
812
+ - `hardware.cpu`: CPU architecture, model name, and vendor
813
+ - `hardware.dram`: total and available memory in bytes plus `total_mb`, `total_gb`, `available_mb`, and `available_gb`; optional privacy-safe aggregate fields include `ram_type`, `speed_mhz`, `configured_speed_mhz`, `module_count`, `modules`, and `theoretical_bandwidth_gbps` when available. Per-module entries may include `capacity_bytes`, `capacity_mb`, `capacity_gb`, DDR type, speed, width, and estimated bandwidth. Individual DIMM serial numbers, part numbers, and PCIe/device instance identifiers are not exposed.
814
+ - `hardware.motherboard`: optional baseboard `manufacturer`, `model_name`, `version`, best-effort `chipset`, and `pcie` support/capability summary. Motherboard serial numbers, asset tags, PCI bus addresses, and Windows instance IDs are not exposed.
815
+ - `hardware.motherboard.pcie`: optional maximum PCIe generation/speed/lane-width summary.
730
816
  - `inference.os`: OS name, version, and kernel version
731
817
  - `inference.cpu`: OS-independent CPU power policy object. Linux fills `governor`; Windows fills `power_plan`, `min_processor_state_pct`, and `max_processor_state_pct`. Unavailable OS-specific attributes are kept as `null`.
732
818
  - `hardware.gpu`: `GPUDeviceTracker.get_static_info()` output with `device_count` and a `devices` list containing tracked GPU indices and names
733
- - `hardware.gpus`: `mblt-tracker collect` output containing NVML-discovered NVIDIA GPU devices enriched with PCIe vendor/device IDs and link information where available. Private PCIe instance identifiers such as `bus_address` and `pnp_device_id` are omitted from public output.
734
- - `hardware.npus`: Mobilint PCIe devices, including vendor/device IDs, link information, and firmware metadata where available. Private PCIe instance identifiers such as `bus_address` and `pnp_device_id` are omitted from public output.
819
+ - `hardware.gpus`: `mblt-tracker collect` output containing NVML-discovered NVIDIA GPU devices. For NVIDIA GPUs, current and maximum PCIe link generation/width fields are sourced from NVML; OS PCIe discovery may add non-link fields such as vendor/device IDs and descriptive metadata where available. Private PCIe instance identifiers such as `bus_address` and `pnp_device_id` are omitted from public output.
820
+ - `hardware.npus`: Mobilint PCIe devices, including vendor/device IDs, current/maximum link information, and firmware metadata where available. Private PCIe instance identifiers such as `bus_address` and `pnp_device_id` are omitted from public output.
735
821
  - `hardware.npus[].card_model`: best-effort Mobilint card model classification such as `MLA100` or `MLA400` when `mobilint-cli status -q` exposes enough information
736
822
  - `hardware.npus[].card_id`: logical NPU card ID used by `NPUDeviceTracker(npu_id=...)`; MLA400 Aries chips share the same card ID
737
823
  - `inference.gpu`: NVIDIA driver and CUDA driver versions. The CLI normalizes the CUDA driver version as a string such as `"13.0"`; `GPUDeviceTracker.get_static_info()` returns the raw NVML CUDA driver integer.