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 * out of WB mode
*/ */
uint32_t dirty_for; uint64_t dirty_for;
/*!< How long there are dirty cache lines (in seconds) */ /*!< How long there are dirty cache lines (in seconds) */
ocf_cache_mode_t cache_mode; ocf_cache_mode_t cache_mode;

View File

@ -32,7 +32,7 @@ struct ocf_core_info {
}; };
/** How long core is dirty in seconds unit */ /** How long core is dirty in seconds unit */
uint32_t dirty_for; uint64_t dirty_for;
/** Sequential cutoff threshold (in bytes) */ /** Sequential cutoff threshold (in bytes) */
uint32_t seq_cutoff_threshold; 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->dirty_clines);
env_atomic_inc(&core->runtime_meta-> env_atomic_inc(&core->runtime_meta->
part_counters[part_id].dirty_clines); part_counters[part_id].dirty_clines);
env_atomic64_cmpxchg(&core->runtime_meta->dirty_since, if (!env_atomic64_read(&core->runtime_meta->dirty_since))
0, env_get_tick_count()); 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; 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 ? uint64_t current_time = env_ticks_to_secs(env_get_tick_count());
(env_ticks_to_msecs(env_get_tick_count() - dirty_since) / 1000)
: 0; return dirty_since ? (current_time - dirty_since) : 0;
} }
int ocf_cache_get_info(ocf_cache_t cache, struct ocf_cache_info *info) 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 *** */ /* *** 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 ? uint64_t current_time = env_ticks_to_secs(env_get_tick_count());
(env_ticks_to_msecs(env_get_tick_count() - dirty_since) / 1000)
: 0; return dirty_since ? (current_time - dirty_since) : 0;
} }
static inline struct ocf_request *ocf_io_to_req(struct ocf_io *io) 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 * If this is first dirty cline set dirty timestamp
*/ */
env_atomic64_cmpxchg(&req->core->runtime_meta->dirty_since, if (!env_atomic64_read(&req->core->runtime_meta->dirty_since))
0, env_get_tick_count()); 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 * Update the number of dirty cached data for that

View File

@ -24,7 +24,7 @@ class CacheInfo(Structure):
("occupancy", c_uint32), ("occupancy", c_uint32),
("dirty", c_uint32), ("dirty", c_uint32),
("dirty_initial", c_uint32), ("dirty_initial", c_uint32),
("dirty_for", c_uint32), ("dirty_for", c_uint64),
("cache_mode", c_uint32), ("cache_mode", c_uint32),
("fallback_pt", _FallbackPt), ("fallback_pt", _FallbackPt),
("state", c_uint8), ("state", c_uint8),

View File

@ -15,7 +15,7 @@ class CoreInfo(Structure):
("core_size_bytes", c_uint64), ("core_size_bytes", c_uint64),
("dirty", c_uint32), ("dirty", c_uint32),
("flushed", c_uint32), ("flushed", c_uint32),
("dirty_for", c_uint32), ("dirty_for", c_uint64),
("seq_cutoff_threshold", c_uint32), ("seq_cutoff_threshold", c_uint32),
("seq_cutoff_policy", c_uint32), ("seq_cutoff_policy", c_uint32),
] ]