Add test programs for frequency / cache component on post-sleep timing differences
This commit is contained in:
parent
f06e60b9c1
commit
d102a755ce
58
cache_utils/src/bin/sleep_freq_test_flush_only.rs
Normal file
58
cache_utils/src/bin/sleep_freq_test_flush_only.rs
Normal file
@ -0,0 +1,58 @@
|
||||
use cache_utils::calibration::only_flush;
|
||||
use cache_utils::frequency::get_freq_cpufreq_kernel;
|
||||
use cache_utils::rdtsc_fence;
|
||||
use static_assertions::_core::time::Duration;
|
||||
use std::thread::sleep;
|
||||
|
||||
const SAMPLE_BETWEEN_SLEEP: usize = 100;
|
||||
const NUM_ITERATION: usize = 10;
|
||||
|
||||
fn main() {
|
||||
let SLEEP_TIME: Duration = Duration::new(1, 0);
|
||||
let p = Box::new(42u8);
|
||||
let pointer = p.as_ref() as *const u8;
|
||||
// preheat
|
||||
for i in 0..SAMPLE_BETWEEN_SLEEP {
|
||||
unsafe { only_flush(pointer) };
|
||||
}
|
||||
|
||||
let mut results = vec![(0u64, 0u64); SAMPLE_BETWEEN_SLEEP * NUM_ITERATION];
|
||||
let mut frequency_info: Vec<(u64, u64)> = vec![(0, 0); NUM_ITERATION];
|
||||
|
||||
println!("CSV:Freq_Sample,Iteration,Sample,time,duration");
|
||||
println!("FREQ:Freq_Sample,Iteration,time,freq");
|
||||
|
||||
for frequency_sample in 0..SAMPLE_BETWEEN_SLEEP {
|
||||
for i in 0..NUM_ITERATION {
|
||||
sleep(SLEEP_TIME);
|
||||
for j in 0..SAMPLE_BETWEEN_SLEEP {
|
||||
if j == frequency_sample {
|
||||
let t = unsafe { rdtsc_fence() };
|
||||
let f = get_freq_cpufreq_kernel();
|
||||
frequency_info[i] = (t, f.ok().unwrap());
|
||||
}
|
||||
let t = unsafe { rdtsc_fence() };
|
||||
let d = unsafe { only_flush(pointer) };
|
||||
results[i * SAMPLE_BETWEEN_SLEEP + j] = (t, d);
|
||||
}
|
||||
}
|
||||
for i in 0..NUM_ITERATION {
|
||||
for j in 0..SAMPLE_BETWEEN_SLEEP {
|
||||
if j == frequency_sample {
|
||||
println!(
|
||||
"FREQ:{},{},{},{}",
|
||||
frequency_sample, i, frequency_info[i].0, frequency_info[i].1
|
||||
);
|
||||
}
|
||||
println!(
|
||||
"CSV:{},{},{},{},{}",
|
||||
frequency_sample,
|
||||
i,
|
||||
j,
|
||||
results[i * SAMPLE_BETWEEN_SLEEP + j].0,
|
||||
results[i * SAMPLE_BETWEEN_SLEEP + j].1
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
58
cache_utils/src/bin/sleep_freq_test_reload_only.rs
Normal file
58
cache_utils/src/bin/sleep_freq_test_reload_only.rs
Normal file
@ -0,0 +1,58 @@
|
||||
use cache_utils::calibration::only_reload;
|
||||
use cache_utils::frequency::get_freq_cpufreq_kernel;
|
||||
use cache_utils::rdtsc_fence;
|
||||
use static_assertions::_core::time::Duration;
|
||||
use std::thread::sleep;
|
||||
|
||||
const SAMPLE_BETWEEN_SLEEP: usize = 100;
|
||||
const NUM_ITERATION: usize = 10;
|
||||
|
||||
fn main() {
|
||||
let SLEEP_TIME: Duration = Duration::new(1, 0);
|
||||
let p = Box::new(42u8);
|
||||
let pointer = p.as_ref() as *const u8;
|
||||
// preheat
|
||||
for i in 0..SAMPLE_BETWEEN_SLEEP {
|
||||
unsafe { only_reload(pointer) };
|
||||
}
|
||||
|
||||
let mut results = vec![(0u64, 0u64); SAMPLE_BETWEEN_SLEEP * NUM_ITERATION];
|
||||
let mut frequency_info: Vec<(u64, u64)> = vec![(0, 0); NUM_ITERATION];
|
||||
|
||||
println!("CSV:Freq_Sample,Iteration,Sample,time,duration");
|
||||
println!("FREQ:Freq_Sample,Iteration,time,freq");
|
||||
|
||||
for frequency_sample in 0..SAMPLE_BETWEEN_SLEEP {
|
||||
for i in 0..NUM_ITERATION {
|
||||
sleep(SLEEP_TIME);
|
||||
for j in 0..SAMPLE_BETWEEN_SLEEP {
|
||||
if j == frequency_sample {
|
||||
let t = unsafe { rdtsc_fence() };
|
||||
let f = get_freq_cpufreq_kernel();
|
||||
frequency_info[i] = (t, f.ok().unwrap());
|
||||
}
|
||||
let t = unsafe { rdtsc_fence() };
|
||||
let d = unsafe { only_reload(pointer) };
|
||||
results[i * SAMPLE_BETWEEN_SLEEP + j] = (t, d);
|
||||
}
|
||||
}
|
||||
for i in 0..NUM_ITERATION {
|
||||
for j in 0..SAMPLE_BETWEEN_SLEEP {
|
||||
if j == frequency_sample {
|
||||
println!(
|
||||
"FREQ:{},{},{},{}",
|
||||
frequency_sample, i, frequency_info[i].0, frequency_info[i].1
|
||||
);
|
||||
}
|
||||
println!(
|
||||
"CSV:{},{},{},{},{}",
|
||||
frequency_sample,
|
||||
i,
|
||||
j,
|
||||
results[i * SAMPLE_BETWEEN_SLEEP + j].0,
|
||||
results[i * SAMPLE_BETWEEN_SLEEP + j].1
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user