Make the evictor thread just receive from a channel details about each page that is loaded when it is loaded. This way the active pages would not require a large lock like on this line
async-bpm/src/page/page_handle.rs
Line 177 in f66b7d8
let mut active_guard = self.bpm.active_pages.lock().await;
So instead, it can just be a push to a channel and there will be no contention on a global lock for the active_pages hash map because there will be no hash map.