static int lowmem_minfree_size = 4;
+/*
+ * This parameter tracks the kill count per minfree since boot.
+ */
+static int lowmem_per_minfree_count[6];
+
static unsigned long lowmem_deathpending_timeout;
#define lowmem_print(level, x...) \
global_page_state(NR_SHMEM) -
global_page_state(NR_UNEVICTABLE) -
total_swapcache_pages();
+ int minfree_count_offset = 0;
if (lowmem_adj_size < array_size)
array_size = lowmem_adj_size;
minfree = lowmem_minfree[i];
if (other_free < minfree && other_file < minfree) {
min_score_adj = lowmem_adj[i];
+ minfree_count_offset = i;
break;
}
}
task_set_lmk_waiting(selected);
task_unlock(selected);
trace_lowmemory_kill(selected, cache_size, cache_limit, free);
+ lowmem_per_minfree_count[minfree_count_offset]++;
lowmem_print(1, "Killing '%s' (%d) (tgid %d), adj %hd,\n"
" to free %ldkB on behalf of '%s' (%d) because\n"
" cache %ldkB is below limit %ldkB for oom_score_adj %hd\n"
#endif
module_param_array_named(minfree, lowmem_minfree, uint, &lowmem_minfree_size,
0644);
+module_param_array_named(lmk_count, lowmem_per_minfree_count, uint, NULL,
+ S_IRUGO);
module_param_named(debug_level, lowmem_debug_level, uint, 0644);