void enqueue_io(IoRef &&io) { int id = (io->offset / (OBJECT_SIZE / BLOCK_SIZE)) % concurrence; std::unique_lock<std::mutex> lock(io_datas[id]->mtx); lock.unlock(); io_datas[id]->cond.notify_one(); perf.io_started++; if(perf.get_io_flight() > io_capacity) { std::unique_lock<std::mutex> prod_lock(prod_mtx); prod_cond.wait(prod_lock); } }
uint32_t get_io_processing() { return perf.get_io_flight(); }