34 lines
1.4 KiB
OCaml
34 lines
1.4 KiB
OCaml
let () =
|
|
print_endline "testing icepick ocaml bindings...";
|
|
print_endline "";
|
|
|
|
try
|
|
let topo = Icepick.Topology.discover () in
|
|
Printf.printf "l3 cache:\n";
|
|
Printf.printf " ways: %d\n" (Icepick.Topology.l3_ways topo);
|
|
Printf.printf " size: %d mb\n" (Icepick.Topology.l3_size topo / 1024 / 1024);
|
|
Printf.printf " way size: %d kb\n" (Icepick.Topology.way_size topo / 1024);
|
|
Printf.printf " max clos: %d\n" (Icepick.Topology.max_clos topo);
|
|
Printf.printf " ccx count: %d\n" (Icepick.Topology.ccx_count topo);
|
|
Printf.printf " cat: %b\n" (Icepick.Topology.cat_supported topo);
|
|
print_endline "";
|
|
|
|
print_endline "attempting to lock 2mb region...";
|
|
let region = Icepick.Region.lock topo ~size:(2 * 1024 * 1024) ~clos:1 () in
|
|
Printf.printf " locked %d bytes at 0x%nx\n"
|
|
(Icepick.Region.size region)
|
|
(Icepick.Region.ptr region);
|
|
Printf.printf " clos: %d\n" (Icepick.Region.clos region);
|
|
|
|
print_endline "verifying...";
|
|
let stats = Icepick.verify region in
|
|
Printf.printf " mean latency: %d ns\n" stats.mean_ns;
|
|
Printf.printf " p99 latency: %d ns\n" stats.p99_ns;
|
|
|
|
print_endline "unlocking...";
|
|
Icepick.Region.unlock region;
|
|
print_endline "done."
|
|
|
|
with Icepick.Icepick_error msg ->
|
|
Printf.printf "icepick error: %s\n" msg;
|
|
print_endline "(this is expected if cat is not supported on this cpu)"
|