Track explicit number of cachelines to be reparted
Instead of redunant calculating number of cachlines to be reparted, keep this information in request's info Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
This commit is contained in:
parent
4329e617cf
commit
e26ca30399
@ -128,6 +128,7 @@ void ocf_engine_update_req_info(struct ocf_cache *cache,
|
||||
* Need to move this cache line into other partition
|
||||
*/
|
||||
_entry->re_part = req->info.re_part = true;
|
||||
req->info.re_part_no++;
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -47,6 +47,20 @@ static inline bool ocf_engine_is_hit(struct ocf_request *req)
|
||||
*/
|
||||
#define ocf_engine_is_miss(req) (!ocf_engine_is_hit(req))
|
||||
|
||||
/**
|
||||
* @brief Check if all the cache lines are assigned to a good partition
|
||||
*
|
||||
* @param req OCF request
|
||||
*
|
||||
* @retval true request's cache lines are assigned to a good partition
|
||||
* @retval false some of the request's cache lines needs to be reassigned to
|
||||
* a target partition
|
||||
*/
|
||||
static inline bool ocf_engine_needs_repart(struct ocf_request *req)
|
||||
{
|
||||
return req->info.re_part_no > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Check if all cache lines are mapped fully
|
||||
*
|
||||
@ -98,6 +112,18 @@ static inline uint32_t ocf_engine_unmapped_count(struct ocf_request *req)
|
||||
return req->core_line_count - (req->info.hit_no + req->info.invalid_no);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get number of cache lines to repart
|
||||
*
|
||||
* @param req OCF request
|
||||
*
|
||||
* @retval Number of cache lines to repart
|
||||
*/
|
||||
static inline uint32_t ocf_engine_repart_count(struct ocf_request *req)
|
||||
{
|
||||
return req->info.re_part_no;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get number of IOs to perform cache read or write
|
||||
*
|
||||
|
@ -13,9 +13,10 @@
|
||||
struct ocf_req_allocator;
|
||||
|
||||
struct ocf_req_info {
|
||||
/* Number of hits, invalid, misses. */
|
||||
/* Number of hits, invalid, misses, reparts. */
|
||||
unsigned int hit_no;
|
||||
unsigned int invalid_no;
|
||||
unsigned int re_part_no;
|
||||
|
||||
uint32_t dirty_all;
|
||||
/*!< Number of dirty line in request*/
|
||||
|
Loading…
Reference in New Issue
Block a user