fix ARC checks for available memory:

there's an extra check that we inherited from FreeBSD that tries to
detect KVA exhaustion on platforms with limited KVA, but the condition
that decided whether to use the extra check was using a FreeBSDism
that doesn't exist on NetBSD, resulting in this check being used on
all platforms.  on amd64 systems with lots of memory, this extra check
would result in the ARC thinking that it constantly needed to reclaim memory,
resulting in all the xcall threads running all the time but not doing
anything useful.  change this condition so that this extra check for
KVA exhaustion is only used on 32-bit platforms.  fixes PR 55707.
This commit is contained in:
chs 2022-05-04 15:49:55 +00:00
parent 5b7e7e1855
commit 28cd7476b4
1 changed files with 2 additions and 2 deletions

View File

@ -3963,7 +3963,7 @@ arc_available_memory(void)
}
#endif /* illumos */
#if defined(__i386) || !defined(UMA_MD_SMALL_ALLOC)
#if !defined(_LP64)
/*
* If we're on an i386 platform, it's possible that we'll exhaust the
* kernel heap space before we ever run out of available physical
@ -5750,7 +5750,7 @@ arc_memory_throttle(uint64_t reserve, uint64_t txg)
static uint64_t page_load = 0;
static uint64_t last_txg = 0;
#if defined(__i386) || !defined(UMA_MD_SMALL_ALLOC)
#if !defined(_LP64)
available_memory =
MIN(available_memory, ptob(vmem_size(heap_arena, VMEM_FREE)));
#endif