alru: add parameter `max_dirty_ratio'
With a high dirty ratio and occupancy, OCF might unable to map cache lines for new requests, thus pass-through the I/O to core devices. IOPS will drop afterwards. We need to control the dirty ratio. Existing `alru' policy gives user the chance to control the stale buffer time, activity threshold etc. They can affect the dirty ratio of the cache device, but in an empirical manner, more or less. Introducing `max_dirty_ratio' can make it explicit. At first glance, it might be better to implement a dedicated cleaner policy directly targeting dirty ratio goal, so that the `alru' parameters remains orthogonal. But one the other hand, we still need to flush dirty cache lines periodically, instead of just keeping a watermark of dirty ratio. It indicates that existing `alru' parameters are still required if we develop a new policy, and it seems reasonable to make it a parameter. To sum up, this patch does the following: - added a 'max_dirty_ratio' parameter with default value 100; - with default value 100, `alru' cleaner is identical to what is was; - with value N less than 100, the cleaner (when waken up) will active brought dirty ratio to N, regardless of staleness time. Signed-off-by: David Lee <live4thee@gmail.com>
This commit is contained in:
@@ -15,6 +15,7 @@ enum ocf_cleaning_alru_parameters {
|
||||
ocf_alru_stale_buffer_time,
|
||||
ocf_alru_flush_max_buffers,
|
||||
ocf_alru_activity_threshold,
|
||||
ocf_alru_max_dirty_ratio,
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -66,6 +67,16 @@ enum ocf_cleaning_alru_parameters {
|
||||
/** Idle time before flushing thread can start default value */
|
||||
#define OCF_ALRU_DEFAULT_ACTIVITY_THRESHOLD 10000
|
||||
|
||||
/**
|
||||
* ALRU max dirty ratio for a cache device
|
||||
*/
|
||||
|
||||
/** Minimum dirty ratio value */
|
||||
#define OCF_ALRU_MIN_MAX_DIRTY_RATIO 0
|
||||
/** Maximum dirty ratio value */
|
||||
#define OCF_ALRU_MAX_MAX_DIRTY_RATIO 100
|
||||
/** Default dirty ratio value */
|
||||
#define OCF_ALRU_DEFAULT_MAX_DIRTY_RATIO OCF_ALRU_MAX_MAX_DIRTY_RATIO
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user