Merge pull request #457 from Ostrokrzew/false_stats
Fix broken 'dirty_for' stats
This commit is contained in:
commit
8020e7fd67
@ -53,7 +53,7 @@ struct ocf_cache_info {
|
||||
* out of WB mode
|
||||
*/
|
||||
|
||||
uint32_t dirty_for;
|
||||
uint64_t dirty_for;
|
||||
/*!< How long there are dirty cache lines (in seconds) */
|
||||
|
||||
ocf_cache_mode_t cache_mode;
|
||||
|
@ -32,7 +32,7 @@ struct ocf_core_info {
|
||||
};
|
||||
|
||||
/** How long core is dirty in seconds unit */
|
||||
uint32_t dirty_for;
|
||||
uint64_t dirty_for;
|
||||
|
||||
/** Sequential cutoff threshold (in bytes) */
|
||||
uint32_t seq_cutoff_threshold;
|
||||
|
@ -1192,8 +1192,9 @@ static void _recovery_rebuild_cline_metadata(ocf_cache_t cache,
|
||||
env_atomic_inc(&core->runtime_meta->dirty_clines);
|
||||
env_atomic_inc(&core->runtime_meta->
|
||||
part_counters[part_id].dirty_clines);
|
||||
env_atomic64_cmpxchg(&core->runtime_meta->dirty_since,
|
||||
0, env_get_tick_count());
|
||||
if (!env_atomic64_read(&core->runtime_meta->dirty_since))
|
||||
env_atomic64_cmpxchg(&core->runtime_meta->dirty_since, 0,
|
||||
env_ticks_to_secs(env_get_tick_count()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -57,11 +57,11 @@ ocf_cache_mode_t ocf_cache_get_mode(ocf_cache_t cache)
|
||||
return cache->conf_meta->cache_mode;
|
||||
}
|
||||
|
||||
static uint32_t _calc_dirty_for(uint64_t dirty_since)
|
||||
static uint64_t _calc_dirty_for(uint64_t dirty_since)
|
||||
{
|
||||
return dirty_since ?
|
||||
(env_ticks_to_msecs(env_get_tick_count() - dirty_since) / 1000)
|
||||
: 0;
|
||||
uint64_t current_time = env_ticks_to_secs(env_get_tick_count());
|
||||
|
||||
return dirty_since ? (current_time - dirty_since) : 0;
|
||||
}
|
||||
|
||||
int ocf_cache_get_info(ocf_cache_t cache, struct ocf_cache_info *info)
|
||||
|
@ -147,11 +147,11 @@ int ocf_core_visit(ocf_cache_t cache, ocf_core_visitor_t visitor, void *cntx,
|
||||
|
||||
/* *** HELPER FUNCTIONS *** */
|
||||
|
||||
static uint32_t _calc_dirty_for(uint64_t dirty_since)
|
||||
static uint64_t _calc_dirty_for(uint64_t dirty_since)
|
||||
{
|
||||
return dirty_since ?
|
||||
(env_ticks_to_msecs(env_get_tick_count() - dirty_since) / 1000)
|
||||
: 0;
|
||||
uint64_t current_time = env_ticks_to_secs(env_get_tick_count());
|
||||
|
||||
return dirty_since ? (current_time - dirty_since) : 0;
|
||||
}
|
||||
|
||||
static inline struct ocf_request *ocf_io_to_req(struct ocf_io *io)
|
||||
|
@ -157,8 +157,10 @@ void set_cache_line_dirty(struct ocf_cache *cache, uint8_t start_bit,
|
||||
/*
|
||||
* If this is first dirty cline set dirty timestamp
|
||||
*/
|
||||
env_atomic64_cmpxchg(&req->core->runtime_meta->dirty_since,
|
||||
0, env_get_tick_count());
|
||||
if (!env_atomic64_read(&req->core->runtime_meta->dirty_since))
|
||||
env_atomic64_cmpxchg(
|
||||
&req->core->runtime_meta->dirty_since, 0,
|
||||
env_ticks_to_secs(env_get_tick_count()));
|
||||
|
||||
/*
|
||||
* Update the number of dirty cached data for that
|
||||
|
@ -24,7 +24,7 @@ class CacheInfo(Structure):
|
||||
("occupancy", c_uint32),
|
||||
("dirty", c_uint32),
|
||||
("dirty_initial", c_uint32),
|
||||
("dirty_for", c_uint32),
|
||||
("dirty_for", c_uint64),
|
||||
("cache_mode", c_uint32),
|
||||
("fallback_pt", _FallbackPt),
|
||||
("state", c_uint8),
|
||||
|
@ -15,7 +15,7 @@ class CoreInfo(Structure):
|
||||
("core_size_bytes", c_uint64),
|
||||
("dirty", c_uint32),
|
||||
("flushed", c_uint32),
|
||||
("dirty_for", c_uint32),
|
||||
("dirty_for", c_uint64),
|
||||
("seq_cutoff_threshold", c_uint32),
|
||||
("seq_cutoff_policy", c_uint32),
|
||||
]
|
||||
|
Loading…
Reference in New Issue
Block a user