From 02b8e51341fe20a4057cc027536e62c5055fc1ef Mon Sep 17 00:00:00 2001 From: Rafal Wojtczuk Date: Fri, 10 Sep 2010 11:35:30 +0200 Subject: [PATCH] qmemman: when a AppVM is low on memory, allow small adjustments A small AppVM (say, with 100MB total) can go below prefmem, and still not be assigned memory, because of the MIN_TOTAL_MEMORY_TRANSFER threshold. So, if AppVM is below prefmem, allow for smaller mem-sets. --- common/meminfo-writer.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/common/meminfo-writer.c b/common/meminfo-writer.c index d97c68d..2f6f217 100644 --- a/common/meminfo-writer.c +++ b/common/meminfo-writer.c @@ -17,7 +17,8 @@ char *parse(char *buf) static char outbuf[4096]; int val; int len; - int MemTotal=0, MemFree=0, Buffers=0, Cached=0, SwapTotal=0, SwapFree=0; + int MemTotal = 0, MemFree = 0, Buffers = 0, Cached = 0, SwapTotal = + 0, SwapFree = 0; unsigned long long key; long used_mem, used_mem_diff; int nitems = 0; @@ -54,10 +55,12 @@ char *parse(char *buf) return NULL; used_mem_diff = used_mem - prev_used_mem; - prev_used_mem = used_mem; if (used_mem_diff < 0) used_mem_diff = -used_mem_diff; - if (used_mem_diff > used_mem_change_threshold) { + if (used_mem_diff > used_mem_change_threshold + || (used_mem > prev_used_mem && used_mem * 13 / 10 > MemTotal + && used_mem_diff > used_mem_change_threshold/2)) { + prev_used_mem = used_mem; sprintf(outbuf, "MemTotal: %d kB\nMemFree: %d kB\nBuffers: %d kB\nCached: %d kB\n" "SwapTotal: %d kB\nSwapFree: %d kB\n", MemTotal, @@ -82,8 +85,7 @@ void send_to_qmemman(struct xs_handle *xs, char *data) } } -int -main(int argc, char **argv) +int main(int argc, char **argv) { char buf[4096]; int n;