Page MenuHomeFreeBSD

D702.id1294.diff
No OneTemporary

D702.id1294.diff

Index: sys/cddl/compat/opensolaris/kern/opensolaris_kmem.c
===================================================================
--- sys/cddl/compat/opensolaris/kern/opensolaris_kmem.c
+++ sys/cddl/compat/opensolaris/kern/opensolaris_kmem.c
@@ -170,12 +170,19 @@
}
uint64_t
-kmem_used(void)
+kmem_map_used(void)
{
return (vmem_size(kmem_arena, VMEM_ALLOC));
}
+uint64_t
+kmem_map_free(void)
+{
+
+ return (vmem_size(kmem_arena, VMEM_FREE));
+}
+
static int
kmem_std_constructor(void *mem, int size __unused, void *private, int flags)
{
Index: sys/cddl/compat/opensolaris/sys/kmem.h
===================================================================
--- sys/cddl/compat/opensolaris/sys/kmem.h
+++ sys/cddl/compat/opensolaris/sys/kmem.h
@@ -66,7 +66,8 @@
void *zfs_kmem_alloc(size_t size, int kmflags);
void zfs_kmem_free(void *buf, size_t size);
uint64_t kmem_size(void);
-uint64_t kmem_used(void);
+uint64_t kmem_map_used(void);
+uint64_t kmem_map_free(void);
u_int kmem_page_count(void);
/*
Index: sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
===================================================================
--- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
+++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
@@ -2563,7 +2563,7 @@
#else /* sun */
#ifdef __i386__
/* i386 has KVA limits that the raw page counts above don't consider */
- if (kmem_used() > (kmem_size() * 3) / 4) {
+ if (kmem_map_used() > (kmem_size() * 3) / 4) {
DTRACE_PROBE2(arc__reclaim_used, uint64_t,
kmem_used(), uint64_t, (kmem_size() * 3) / 4);
return (1);
@@ -3946,8 +3946,7 @@
arc_memory_throttle(uint64_t reserve, uint64_t txg)
{
#ifdef _KERNEL
- uint64_t available_memory =
- ptoa((uintmax_t)vm_cnt.v_free_count + vm_cnt.v_cache_count);
+ uint64_t available_memory = ptoa((uintmax_t)kmem_free_count());
static uint64_t page_load = 0;
static uint64_t last_txg = 0;
@@ -3956,10 +3955,14 @@
available_memory =
MIN(available_memory, vmem_size(heap_arena, VMEM_FREE));
#endif
+#else /* sun */
+#ifdef __i386__
+ available_memory = MIN(available_memory,
+ ptoa((uintmax_t)kmem_map_free()));
+#endif
#endif /* sun */
- if (vm_cnt.v_free_count + vm_cnt.v_cache_count >
- (uint64_t)physmem * arc_lotsfree_percent / 100)
+ if (kmem_free_count() > (uint64_t)physmem * arc_lotsfree_percent / 100)
return (0);
if (txg > last_txg) {

File Metadata

Mime Type
text/plain
Expires
Mon, Mar 3, 6:51 PM (4 h, 31 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16950990
Default Alt Text
D702.id1294.diff (2 KB)

Event Timeline