#!/usr/bin/env python3
"""
Read AMD CPU power from MSR (requires root)
PPT = Package Power Tracking (in milliwatts)
"""
import sys
import json
def read_msr(cpu_id, address):
"""Read Model Specific Register."""
path = f'/dev/cpu/{cpu_id}/msr'
try:
with open(path, 'rb') as f:
f.seek(address * 8)
data = f.read(8)
return int.from_bytes(data, 'little')
except Exception as e:
return None
def main():
# AMD PPT MSR - Package Power Tracking (milliwatts)
ppt_raw = read_msr(0, 0xC001029A)
if ppt_raw is None:
print(json.dumps({"error": "Could not read MSR"}))
sys.exit(1)
# Convert to watts
ppt_watts = ppt_raw / 1000.0
result = {
"ppt_mw": ppt_raw,
"ppt_w": round(ppt_watts, 2),
"success": True
}
print(json.dumps(result))
if __name__ == "__main__":
main()