Perf plot

This commit is contained in:
[Quy Anh] «Elliot» Nguyen
2026-06-18 11:59:50 +02:00
committed by Linus Baumberger
parent ca969564a6
commit e7af3103e8
153 changed files with 22042 additions and 24220 deletions
+63
View File
@@ -0,0 +1,63 @@
from pathlib import Path
import re
LOG_DIR = Path('measurements/memory/x86')
CPU_FREQ_GHZ = 2.0
def parse_sysbench_log(file_path):
"""Parses a single sysbench log file to extract memory bandwidth in MiB/s."""
try:
with open(file_path, 'r') as f:
content = f.read()
match = re.search(r'(\d+\.?\d*)\s+MiB/sec', content)
if match:
return float(match.group(1))
else:
print(f"Warning: Could not find 'MiB/sec' in {file_path.name}")
return None
except Exception as e:
print(f'Error reading {file_path}: {e}')
return None
def main():
if not LOG_DIR.exists():
print(f"Error: Directory '{LOG_DIR}' not found.")
return
bandwidths_mib_s = []
log_files = sorted(LOG_DIR.glob('*.log'))
print(f'Found {len(log_files)} log files.')
for file_path in log_files:
val = parse_sysbench_log(file_path)
if val is not None:
bandwidths_mib_s.append(val)
if not bandwidths_mib_s:
print('No valid bandwidth data found.')
return
avg_mi_b_s = sum(bandwidths_mib_s) / len(bandwidths_mib_s)
bytes_per_second = avg_mi_b_s * (1024**2)
cycles_per_second = CPU_FREQ_GHZ * 1e9
bytes_per_cycle = bytes_per_second / cycles_per_second
print('-' * 40)
print(f'Files analyzed: {len(bandwidths_mib_s)}')
print(f'Average Bandwidth: {avg_mi_b_s:.2f} MiB/sec')
print(f'CPU Frequency: {CPU_FREQ_GHZ} GHz')
print('-' * 40)
print(f'Result: {bytes_per_cycle:.2f} bytes/cycle')
print('-' * 40)
if __name__ == '__main__':
main()