summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/include/kernel/pagemgr.H8
-rw-r--r--src/kernel/block.C4
-rw-r--r--src/kernel/pagemgr.C4
3 files changed, 12 insertions, 4 deletions
diff --git a/src/include/kernel/pagemgr.H b/src/include/kernel/pagemgr.H
index 7b5deddb4..d2500601f 100644
--- a/src/include/kernel/pagemgr.H
+++ b/src/include/kernel/pagemgr.H
@@ -188,14 +188,18 @@ class PageManager
enum
{
- KERNEL_HEAP_RESERVED_PAGES = 4,
+ // Always keep this many free pages for the kernel to use
+ KERNEL_HEAP_RESERVED_PAGES = 10,
+ // Triggers a NORMAL page castout
#ifdef CONFIG_P9_VPO_COMPILE // VPO has constrained mem env -> higher threshold
LOWMEM_NORM_LIMIT = 32,
#else
LOWMEM_NORM_LIMIT = 16,
#endif
- LOWMEM_CRIT_LIMIT = 5,
+
+ // Triggers CRITICAL page castout
+ LOWMEM_CRIT_LIMIT = KERNEL_HEAP_RESERVED_PAGES+1,
};
static size_t cv_coalesce_count; //!< running coalesced counter
diff --git a/src/kernel/block.C b/src/kernel/block.C
index b80db2aac..5b24ae1a6 100644
--- a/src/kernel/block.C
+++ b/src/kernel/block.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2011,2018 */
+/* Contributors Listed Below - COPYRIGHT 2011,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -387,7 +387,7 @@ void Block::castOutPages(uint64_t i_type)
(iv_baseAddr != VMM_ADDR_EXTEND_BLOCK)) // Skip extended memory.
{
size_t rw_constraint = 5;
- size_t ro_constraint = 3;
+ size_t ro_constraint = 10;
if(i_type == VmmManager::CRITICAL)
{
diff --git a/src/kernel/pagemgr.C b/src/kernel/pagemgr.C
index ee3a3ff39..3b5966421 100644
--- a/src/kernel/pagemgr.C
+++ b/src/kernel/pagemgr.C
@@ -318,6 +318,10 @@ void* PageManager::_allocatePage(size_t n, bool userspace)
{
printkd("PAGEMANAGER: kernel heap used\n");
page = iv_heapKernel.allocatePage(n);
+
+ // Any time we dip into the kernel heap we should start
+ // evicting user pages
+ CpuManager::forceMemoryPeriodic();
}
// If still not successful, we're out of memory. Assert.
OpenPOWER on IntegriCloud