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:
parent
5b7e7e1855
commit
28cd7476b4
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue