randomize interrupts until wort

This commit is contained in:
Alwin Berger 2023-04-24 15:33:03 +02:00
parent dd6be70a01
commit a6052ddad7
2 changed files with 7 additions and 3 deletions

View File

@ -84,7 +84,7 @@ impl Default for MaxIcountMetadata {
/// A piece of metadata tracking all icounts
#[derive(Debug, SerdeAny, Serialize, Deserialize)]
pub struct IcHist(pub Vec<u64>);
pub struct IcHist (pub Vec<u64>, pub u64);
//========== Observer
@ -139,10 +139,11 @@ where
let hist = metadata.get_mut::<IcHist>();
match hist {
None => {
metadata.insert(IcHist(vec![self.end_tick - self.start_tick]));
metadata.insert(IcHist(vec![self.end_tick - self.start_tick], self.end_tick-self.start_tick));
}
Some(v) => {
v.0.push(self.end_tick - self.start_tick);
v.1 = max(v.1, self.end_tick - self.start_tick);
if v.0.len() >= 100 {
if let Ok(td) = env::var("TIME_DUMP") {
let mut file = OpenOptions::new()

View File

@ -351,7 +351,10 @@ where
}
#[cfg(not(feature = "feed_systemtrace"))]
{
let maxtick : u64 = (_input.exec_time().expect("No duration found").as_nanos() >> 4).try_into().unwrap();
let metadata = state.metadata();
let hist = metadata.get::<IcHist>().unwrap();
let maxtick : u64 = hist.1;
// let maxtick : u64 = (_input.exec_time().expect("No duration found").as_nanos() >> 4).try_into().unwrap();
let mut numbers : Vec<u32> = vec![];
for i in 0..num_interrupts {
prefix.push(u32::to_le_bytes(myrand.between(0, maxtick).try_into().unwrap()));