Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
441b74a936
@ -1145,9 +1145,8 @@ acllog-max-len 128
|
|||||||
#
|
#
|
||||||
# active-expire-effort 1
|
# active-expire-effort 1
|
||||||
|
|
||||||
# Force evictions when RSS memory reaches this percent of total system memory.
|
# Force evictions when used system memory reaches X% of total system memory.
|
||||||
# This is useful as a safeguard to prevent OOM kills when RSS overhead is
|
# This is useful as a safeguard to prevent OOM kills (0 to disable).
|
||||||
# significant (0 to disable).
|
|
||||||
#
|
#
|
||||||
# force-eviction-percent 0
|
# force-eviction-percent 0
|
||||||
|
|
||||||
|
@ -430,16 +430,15 @@ int getMaxmemoryState(size_t *total, size_t *logical, size_t *tofree, float *lev
|
|||||||
if (g_pserver->FRdbSaveInProgress() && !cserver.fForkBgSave)
|
if (g_pserver->FRdbSaveInProgress() && !cserver.fForkBgSave)
|
||||||
maxmemory = static_cast<size_t>(maxmemory*1.2);
|
maxmemory = static_cast<size_t>(maxmemory*1.2);
|
||||||
|
|
||||||
/* If rss memory exceeds configurable percent of system memory, force eviction */
|
/* If available system memory is below a certain threshold, force eviction */
|
||||||
bool mem_rss_max_exceeded;
|
long long sys_available_mem_buffer = 0;
|
||||||
if (g_pserver->force_eviction_percent && g_pserver->cron_malloc_stats.sys_total) {
|
if (g_pserver->force_eviction_percent && g_pserver->cron_malloc_stats.sys_total) {
|
||||||
float sys_total_ratio = (float)(g_pserver->force_eviction_percent)/100;
|
float available_mem_ratio = (float)(100 - g_pserver->force_eviction_percent)/100;
|
||||||
size_t mem_rss_max = static_cast<size_t>(g_pserver->cron_malloc_stats.sys_total * sys_total_ratio);
|
size_t min_available_mem = static_cast<size_t>(g_pserver->cron_malloc_stats.sys_total * available_mem_ratio);
|
||||||
mem_rss_max_exceeded = g_pserver->cron_malloc_stats.process_rss > mem_rss_max;
|
sys_available_mem_buffer = static_cast<long>(g_pserver->cron_malloc_stats.sys_available - min_available_mem);
|
||||||
if (mem_rss_max_exceeded) {
|
if (sys_available_mem_buffer < 0) {
|
||||||
/* This will always set maxmemory < mem_reported */
|
long long mem_threshold = mem_reported + sys_available_mem_buffer;
|
||||||
float frag_ratio = (float)g_pserver->cron_malloc_stats.process_rss / (float)mem_reported;
|
maxmemory = ((long long)maxmemory < mem_threshold) ? maxmemory : static_cast<size_t>(mem_threshold);
|
||||||
maxmemory = static_cast<size_t>((float)mem_rss_max / frag_ratio);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user