Merge pull request #457 from Ostrokrzew/false_stats

Fix broken 'dirty_for' stats
This commit is contained in:
Robert Baldyga 2021-03-18 10:24:02 +01:00 committed by GitHub
commit 8020e7fd67
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 19 additions and 16 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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()));
}
}

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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),

View File

@ -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),
]