#!/bin/bash
# run-tlb.sh — ejecuta ./tlb para 1, 2, 4, ... páginas, con páginas de 4 KB
# y pidiendo páginas grandes (THP), y muestra los resultados en una tabla.
# La última columna dice cuántos KB quedaron de verdad en páginas grandes:
# una región de menos de 2 MB no puede usarlas.
#
# Uso:   ./run-tlb.sh [máximo_de_páginas]     (por defecto 32768)
set -e
MAX=${1:-32768}
ACCESSES=10000000   # accesos por medición: ~10^7 para que el reloj sea preciso

printf "%7s %10s %8s %8s %10s\n" "páginas" "memoria" "ns 4KB" "ns THP" "KB en THP"
p=1
while [ "$p" -le "$MAX" ]; do
    trials=$(( ACCESSES / p ))
    [ "$trials" -lt 10 ] && trials=10
    read -r _ small _ < <(./tlb "$p" "$trials")
    read -r _ big hugekb < <(./tlb "$p" "$trials" huge)
    printf "%7d %7d KB %8s %8s %10s\n" "$p" $(( p * 4 )) "$small" "$big" "$hugekb"
    p=$(( p * 2 ))
done
