fixes
This commit is contained in:
parent
65b7fafd29
commit
60d74262dc
@ -428,14 +428,14 @@ int getMaxmemoryState(size_t *total, size_t *logical, size_t *tofree, float *lev
|
||||
if (g_pserver->FRdbSaveInProgress())
|
||||
maxmemory = static_cast<size_t>(maxmemory*1.2);
|
||||
|
||||
/* If free system memory is below a certain threshold, force eviction */
|
||||
long sys_free_mem_buffer = 0;
|
||||
/* If available system memory is below a certain threshold, force eviction */
|
||||
long sys_available_mem_buffer = 0;
|
||||
if (g_pserver->force_eviction_percent && g_pserver->cron_malloc_stats.sys_total) {
|
||||
float free_mem_ratio = (float)(100 - g_pserver->force_eviction_percent)/100;
|
||||
size_t min_free_mem = static_cast<size_t>(g_pserver->cron_malloc_stats.sys_total * free_mem_ratio);
|
||||
sys_free_mem_buffer = static_cast<long>(g_pserver->cron_malloc_stats.sys_free - min_free_mem);
|
||||
if (sys_free_mem_buffer < 0) {
|
||||
long mem_threshold = mem_reported + sys_free_mem_buffer;
|
||||
float available_mem_ratio = (float)(100 - g_pserver->force_eviction_percent)/100;
|
||||
size_t min_available_mem = static_cast<size_t>(g_pserver->cron_malloc_stats.sys_total * available_mem_ratio);
|
||||
sys_available_mem_buffer = static_cast<long>(g_pserver->cron_malloc_stats.sys_available - min_available_mem);
|
||||
if (sys_available_mem_buffer < 0) {
|
||||
long mem_threshold = mem_reported + sys_available_mem_buffer;
|
||||
maxmemory = ((long)maxmemory < mem_threshold) ? maxmemory : static_cast<size_t>(mem_threshold);
|
||||
}
|
||||
}
|
||||
@ -450,9 +450,9 @@ int getMaxmemoryState(size_t *total, size_t *logical, size_t *tofree, float *lev
|
||||
size_t overhead = freeMemoryGetNotCountedMemory();
|
||||
mem_used = (mem_used > overhead) ? mem_used-overhead : 0;
|
||||
|
||||
/* If system free memory is too low, we want to force evictions no matter
|
||||
/* If system available memory is too low, we want to force evictions no matter
|
||||
* what so we also offset the overhead from maxmemory. */
|
||||
if (sys_free_mem_buffer < 0) {
|
||||
if (sys_available_mem_buffer < 0) {
|
||||
maxmemory = (maxmemory > overhead) ? maxmemory-overhead : 0;
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
#include <fstream>
|
||||
|
||||
static size_t getMemKey(std::string key) {
|
||||
# ifdef __linux__
|
||||
// # ifdef __linux__
|
||||
std::string token;
|
||||
std::ifstream f("/proc/meminfo");
|
||||
while (f >> token) {
|
||||
@ -15,11 +15,11 @@ static size_t getMemKey(std::string key) {
|
||||
}
|
||||
f.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
|
||||
}
|
||||
return 0; // nothing found
|
||||
}
|
||||
# else
|
||||
return 0;
|
||||
# endif
|
||||
// # else
|
||||
// return 0;
|
||||
// # endif
|
||||
}
|
||||
|
||||
size_t getMemAvailable() {
|
||||
|
@ -2316,7 +2316,7 @@ void cronUpdateMemoryStats() {
|
||||
|
||||
if (g_pserver->force_eviction_percent) {
|
||||
g_pserver->cron_malloc_stats.sys_available = getMemAvailable();
|
||||
serverLog(LL_WARNING, "Setting sys_available:%llu", g_pserver->cron_malloc_stats.sys_available);
|
||||
serverLog(LL_WARNING, "Setting sys_available:%lu", g_pserver->cron_malloc_stats.sys_available);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user