From d48f4d508b80a5813a40cd8272c132d2cdae3118 Mon Sep 17 00:00:00 2001 From: Mark Johnston Date: Tue, 31 May 2016 18:00:16 -0700 Subject: [PATCH 16/16] Remove v_cache_count. --- sys/amd64/conf/MARKJ | 355 +++++++++++++++++++++++++++++++++ sys/cddl/compat/opensolaris/sys/kmem.h | 2 +- sys/compat/linprocfs/linprocfs.c | 12 +- sys/fs/tmpfs/tmpfs_subr.c | 3 +- sys/sys/vmmeter.h | 18 +- sys/vm/swap_pager.c | 4 +- sys/vm/vm_meter.c | 3 +- sys/vm/vm_page.c | 31 ++- sys/vm/vnode_pager.c | 3 +- 9 files changed, 386 insertions(+), 45 deletions(-) create mode 100644 sys/amd64/conf/MARKJ diff --git a/sys/amd64/conf/MARKJ b/sys/amd64/conf/MARKJ new file mode 100644 index 0000000..89a711a --- /dev/null +++ b/sys/amd64/conf/MARKJ @@ -0,0 +1,355 @@ +# $FreeBSD$ + +cpu HAMMER +ident MARKJ + +makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols +makeoptions WITH_CTF=1 # Run ctfconvert(1) for DTrace support + +makeoptions MODULES_OVERRIDE="netgraph/netgraph netgraph/ether \ + netgraph/iface netgraph/socket \ + opensolaris dtrace ksyms \ + drm2/drm2 drm2/i915kms i2c/iic i2c/iicbb \ + i2c/iicbus i2c/controllers/ichsmb i2c/smbus\ + ichwd coretemp \ + linux_common linux linprocfs \ + geom/geom_eli \ + wlan_acl wlan_xauth \ + procfs nullfs fuse unionfs fdescfs tmpfs zfs \ + ipfw dummynet ipdivert if_tap if_lagg if_vlan\ + if_bridge bridgestp ipfw_nat libalias \ + snp hwpmc \ + usb/usb usb/run usb/umass usb/ucom usb/ums \ + usb/runfw usb/uether usb/axe usb/axge \ + usb/uplcom usb/uslcom \ + vmm" + +options SCHED_ULE # ULE scheduler +options PREEMPTION # Enable kernel thread preemption +options INET # InterNETworking +options INET6 # IPv6 communications protocols +options IPSEC # IP (v6/v6) security +options TCP_OFFLOAD # TCP offload +options SCTP # Stream Control Transmission Protocol +options FFS # Berkeley Fast Filesystem +options SOFTUPDATES # Enable FFS soft updates support +options UFS_ACL # Support for access control lists +options UFS_DIRHASH # Improve performance on big directories +options UFS_GJOURNAL # Enable gjournal-based UFS journaling +options QUOTA # Enable disk quotas for UFS +options MD_ROOT # MD is a potential root device +options NFSCL # New Network Filesystem Client +options NFSD # New Network Filesystem Server +options NFSLOCKD # Network Lock Manager +options NFS_ROOT # NFS usable as /, requires NFSCL +options MSDOSFS # MSDOS Filesystem +options CD9660 # ISO 9660 Filesystem +options PROCFS # Process filesystem (requires PSEUDOFS) +options PSEUDOFS # Pseudo-filesystem framework +options GEOM_PART_GPT # GUID Partition Tables. +options GEOM_RAID # Soft RAID functionality. +options GEOM_LABEL # Provides labelization +options COMPAT_FREEBSD32 # Compatible with i386 binaries +options COMPAT_FREEBSD4 # Compatible with FreeBSD4 +options COMPAT_FREEBSD5 # Compatible with FreeBSD5 +options COMPAT_FREEBSD6 # Compatible with FreeBSD6 +options COMPAT_FREEBSD7 # Compatible with FreeBSD7 +options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI +options KTRACE # ktrace(1) support +options STACK # stack(9) support +options SYSVSHM # SYSV-style shared memory +options SYSVMSG # SYSV-style message queues +options SYSVSEM # SYSV-style semaphores +options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions +options PRINTF_BUFR_SIZE=128 # Prevent printf output being interspersed. +options KBD_INSTALL_CDEV # install a CDEV entry in /dev +options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4) +options AUDIT # Security event auditing +options CAPABILITY_MODE # Capsicum capability mode +options CAPABILITIES # Capsicum capabilities +options MAC # TrustedBSD MAC Framework +options KDTRACE_FRAME # Ensure frames are compiled in +options KDTRACE_HOOKS # Kernel DTrace hooks +options DDB_CTF # Kernel ELF linker loads CTF data +options INCLUDE_CONFIG_FILE # Include this file in kernel +options RACCT # Resource accounting framework +options RACCT_DEFAULT_TO_DISABLED # Set kern.racct.enable=0 by default +options RCTL # Resource limits + +options GZIO +options USB_REQ_DEBUG + +# Debugging support. Always need this: +options KDB # Enable kernel debugger support. +options KDB_UNATTENDED +# For minimum debugger support (stable branch) use: +#options KDB_TRACE # Print a stack trace for a panic. +# For full debugger support use this instead: +options DDB # Support DDB. +options GDB # Support remote GDB. +options DEADLKRES # Enable the deadlock resolver +options INVARIANTS # Enable calls of extra sanity checking +options INVARIANT_SUPPORT # Extra sanity checks of internal structures, required by INVARIANTS +options WITNESS # Enable checks to detect deadlocks and cycles +options WITNESS_SKIPSPIN # Don't run witness on spinlocks for speed +options MALLOC_DEBUG_MAXZONES=8 # Separate malloc(9) zones +options ALT_BREAK_TO_DEBUGGER + +# Make an SMP-capable kernel by default +options SMP # Symmetric MultiProcessor Kernel + +# CPU frequency control +device cpufreq + +# Bus support. +device acpi +device pci + +# Floppy drives +#device fdc + +# ATA controllers +device ahci # AHCI-compatible SATA controllers +#device ata # Legacy ATA/SATA controllers +#device mvs # Marvell 88SX50XX/88SX60XX/88SX70XX/SoC SATA +#device siis # SiliconImage SiI3124/SiI3132/SiI3531 SATA + +# SCSI Controllers +#device ahc # AHA2940 and onboard AIC7xxx devices +#options AHC_REG_PRETTY_PRINT # Print register bitfields in debug + # output. Adds ~128k to driver. +#device ahd # AHA39320/29320 and onboard AIC79xx devices +#options AHD_REG_PRETTY_PRINT # Print register bitfields in debug + # output. Adds ~215k to driver. +#device esp # AMD Am53C974 (Tekram DC-390(T)) +#device hptiop # Highpoint RocketRaid 3xxx series +#device isp # Qlogic family +#device ispfw # Firmware for QLogic HBAs- normally a module +#device mpt # LSI-Logic MPT-Fusion +#device mps # LSI-Logic MPT-Fusion 2 +#device ncr # NCR/Symbios Logic +#device sym # NCR/Symbios Logic (newer chipsets + those of `ncr') +#device trm # Tekram DC395U/UW/F DC315U adapters + +#device adv # Advansys SCSI adapters +#device adw # Advansys wide SCSI adapters +#device aic # Adaptec 15[012]x SCSI adapters, AIC-6[23]60. +#device bt # Buslogic/Mylex MultiMaster SCSI adapters +device isci # Intel C600 SAS controller + +# ATA/SCSI peripherals +device scbus # SCSI bus (required for ATA/SCSI) +device ch # SCSI media changers +device da # Direct Access (disks) +device sa # Sequential Access (tape etc) +device cd # CD +device pass # Passthrough device (direct ATA/SCSI access) +device ses # Enclosure Services (SES and SAF-TE) +device ctl # CAM Target Layer + +# RAID controllers interfaced to the SCSI subsystem +#device amr # AMI MegaRAID +#device arcmsr # Areca SATA II RAID +#XXX it is not 64-bit clean, -scottl +#device asr # DPT SmartRAID V, VI and Adaptec SCSI RAID +#device ciss # Compaq Smart RAID 5* +#device dpt # DPT Smartcache III, IV - See NOTES for options +#device hptmv # Highpoint RocketRAID 182x +#device hptrr # Highpoint RocketRAID 17xx, 22xx, 23xx, 25xx +#device hpt27xx # Highpoint RocketRAID 27xx +#device iir # Intel Integrated RAID +#device ips # IBM (Adaptec) ServeRAID +#device mly # Mylex AcceleRAID/eXtremeRAID +#device twa # 3ware 9000 series PATA/SATA RAID +#device tws # LSI 3ware 9750 SATA+SAS 6Gb/s RAID controller + +# RAID controllers +#device aac # Adaptec FSA RAID +#device aacp # SCSI passthrough for aac (requires CAM) +#device ida # Compaq Smart RAID +#device mfi # LSI MegaRAID SAS +#device mlx # Mylex DAC960 family +#device mrsas # LSI/Avago MegaRAID SAS/SATA, 6Gb/s and 12Gb/s +#device pmspcv # PMC-Sierra SAS/SATA Controller driver +#XXX pointer/int warnings +#device pst # Promise Supertrak SX6000 +#device twe # 3ware ATA RAID + +# atkbdc0 controls both the keyboard and the PS/2 mouse +device atkbdc # AT keyboard controller +device atkbd # AT keyboard +device psm # PS/2 mouse + +device kbdmux # keyboard multiplexer + +#device vga # VGA video card driver +options VESA # Add support for VESA BIOS Extensions (VBE) + +device splash # Splash screen and screen saver support + +# syscons is the default console driver, resembling an SCO console +#device sc +#options SC_PIXEL_MODE # add support for the raster text mode +device vt +device vt_vga + +device agp # support several AGP chipsets + +# PCCARD (PCMCIA) support +# PCMCIA and cardbus bridge support +#device cbb # cardbus (yenta) bridge +#device pccard # PC Card (16-bit) bus +#device cardbus # CardBus (32-bit) bus + +# Serial (COM) ports +device uart # Generic UART driver + +# Parallel port +#device ppc +#device ppbus # Parallel port bus (required) +#device lpt # Printer +#device plip # TCP/IP over parallel +#device ppi # Parallel port interface device +#device vpo # Requires scbus and da + +#device puc # Multi I/O cards and multi-channel UARTs + +# PCI Ethernet NICs. +#device bxe # Broadcom BCM57710/BCM57711/BCM57711E 10Gb Ethernet +#device de # DEC/Intel DC21x4x (``Tulip'') +device em # Intel PRO/1000 Gigabit Ethernet Family +device igb # Intel PRO/1000 PCIE Server Gigabit Family +#device ixgbe # Intel PRO/10GbE PCIE Ethernet Family +#device le # AMD Am7900 LANCE and Am79C9xx PCnet +#device ti # Alteon Networks Tigon I/II gigabit Ethernet +#device txp # 3Com 3cR990 (``Typhoon'') +#device vx # 3Com 3c590, 3c595 (``Vortex'') + +# PCI Ethernet NICs that use the common MII bus controller code. +# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs! +device miibus # MII bus support +#device ae # Attansic/Atheros L2 FastEthernet +#device age # Attansic/Atheros L1 Gigabit Ethernet +device alc # Atheros AR8131/AR8132 Ethernet +#device ale # Atheros AR8121/AR8113/AR8114 Ethernet +#device bce # Broadcom BCM5706/BCM5708 Gigabit Ethernet +#device bfe # Broadcom BCM440x 10/100 Ethernet +#device bge # Broadcom BCM570xx Gigabit Ethernet +#device cas # Sun Cassini/Cassini+ and NS DP83065 Saturn +#device dc # DEC/Intel 21143 and various workalikes +#device et # Agere ET1310 10/100/Gigabit Ethernet +#device fxp # Intel EtherExpress PRO/100B (82557, 82558) +#device gem # Sun GEM/Sun ERI/Apple GMAC +#device hme # Sun HME (Happy Meal Ethernet) +#device jme # JMicron JMC250 Gigabit/JMC260 Fast Ethernet +#device lge # Level 1 LXT1001 gigabit Ethernet +#device msk # Marvell/SysKonnect Yukon II Gigabit Ethernet +#device nfe # nVidia nForce MCP on-board Ethernet +#device nge # NatSemi DP83820 gigabit Ethernet +#device nve # nVidia nForce MCP on-board Ethernet Networking +#device pcn # AMD Am79C97x PCI 10/100 (precedence over 'le') +device re # RealTek 8139C+/8169/8169S/8110S +#device rl # RealTek 8129/8139 +#device sf # Adaptec AIC-6915 (``Starfire'') +#device sge # Silicon Integrated Systems SiS190/191 +#device sis # Silicon Integrated Systems SiS 900/SiS 7016 +#device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet +#device ste # Sundance ST201 (D-Link DFE-550TX) +#device stge # Sundance/Tamarack TC9021 gigabit Ethernet +#device tl # Texas Instruments ThunderLAN +#device tx # SMC EtherPower II (83c170 ``EPIC'') +#device vge # VIA VT612x gigabit Ethernet +#device vr # VIA Rhine, Rhine II +#device wb # Winbond W89C840F +#device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'') + +# ISA Ethernet NICs. pccard NICs included. +#device cs # Crystal Semiconductor CS89x0 NIC +# 'device ed' requires 'device miibus' +#device ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards +#device ex # Intel EtherExpress Pro/10 and Pro/10+ +#device ep # Etherlink III based cards +#device fe # Fujitsu MB8696x based cards +#device sn # SMC's 9000 series of Ethernet chips +#device xe # Xircom pccard Ethernet + +# Wireless NIC cards +device wlan # 802.11 support +options IEEE80211_DEBUG # enable debug msgs +options IEEE80211_AMPDU_AGE # age frames in AMPDU reorder q's +options IEEE80211_SUPPORT_MESH # enable 802.11s draft support +device wlan_wep # 802.11 WEP support +device wlan_ccmp # 802.11 CCMP support +device wlan_tkip # 802.11 TKIP support +device wlan_amrr # AMRR transmit rate control algorithm +#device an # Aironet 4500/4800 802.11 wireless NICs. +device ath # Atheros NICs +device ath_pci # Atheros pci/cardbus glue +device ath_hal # pci/cardbus chip support +options AH_SUPPORT_AR5416 # enable AR5416 tx/rx descriptors +options AH_AR5416_INTERRUPT_MITIGATION # AR5416 interrupt mitigation +options ATH_ENABLE_11N # Enable 802.11n support for AR5416 and later +device ath_rate_sample # SampleRate tx rate control for ath +#device bwi # Broadcom BCM430x/BCM431x wireless NICs. +#device bwn # Broadcom BCM43xx wireless NICs. +#device ipw # Intel 2100 wireless NICs. +#device iwi # Intel 2200BG/2225BG/2915ABG wireless NICs. +device iwn # Intel 4965/1000/5000/6000 wireless NICs. +#device malo # Marvell Libertas wireless NICs. +#device mwl # Marvell 88W8363 802.11n wireless NICs. +#device ral # Ralink Technology RT2500 wireless NICs. +#device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs. +#device wpi # Intel 3945ABG wireless NICs. + +# Pseudo devices. +device loop # Network loopback +device random # Entropy device +#device padlock_rng # VIA Padlock RNG +device rdrand_rng # Intel Bull Mountain RNG +device ether # Ethernet support +device vlan # 802.1Q VLAN support +device tun # Packet tunnel. +device md # Memory "disks" +device gif # IPv6 and IPv4 tunneling +device firmware # firmware assist module +device bridge + +# The `bpf' device enables the Berkeley Packet Filter. +# Be aware of the administrative consequences of enabling this! +# Note that 'bpf' is required for DHCP. +device bpf # Berkeley packet filter + +# USB support +options USB_DEBUG # enable debug msgs +device uhci # UHCI PCI->USB interface +device ohci # OHCI PCI->USB interface +device ehci # EHCI PCI->USB interface (USB 2.0) +device xhci # XHCI PCI->USB interface (USB 3.0) +device usb # USB Bus (required) +device ukbd # Keyboard +#device umass # Disks/Mass storage - Requires scbus and da + +# Sound support +device sound # Generic sound driver (required) +device snd_cmi # CMedia CMI8338/CMI8738 +device snd_csa # Crystal Semiconductor CS461x/428x +device snd_emu10kx # Creative SoundBlaster Live! and Audigy +device snd_es137x # Ensoniq AudioPCI ES137x +device snd_hda # Intel High Definition Audio +device snd_ich # Intel, NVidia and other ICH AC'97 Audio +device snd_via8233 # VIA VT8233x Audio + +# MMC/SD +#device mmc # MMC/SD bus +#device mmcsd # MMC/SD memory card +#device sdhci # Generic PCI SD Host Controller + +# VirtIO support +device virtio # Generic VirtIO bus (required) +device virtio_pci # VirtIO PCI device +device vtnet # VirtIO Ethernet device +device virtio_blk # VirtIO Block device +device virtio_scsi # VirtIO SCSI device +device virtio_balloon # VirtIO Memory Balloon device + +device crypto # Required by IPSEC diff --git a/sys/cddl/compat/opensolaris/sys/kmem.h b/sys/cddl/compat/opensolaris/sys/kmem.h index 5616067..c0e9760 100644 --- a/sys/cddl/compat/opensolaris/sys/kmem.h +++ b/sys/cddl/compat/opensolaris/sys/kmem.h @@ -77,7 +77,7 @@ void kmem_reap(void); int kmem_debugging(void); void *calloc(size_t n, size_t s); -#define freemem (vm_cnt.v_free_count + vm_cnt.v_cache_count) +#define freemem vm_cnt.v_free_count #define minfree vm_cnt.v_free_min #define heap_arena kmem_arena #define kmem_alloc(size, kmflags) zfs_kmem_alloc((size), (kmflags)) diff --git a/sys/compat/linprocfs/linprocfs.c b/sys/compat/linprocfs/linprocfs.c index 86c4b05..2661322 100644 --- a/sys/compat/linprocfs/linprocfs.c +++ b/sys/compat/linprocfs/linprocfs.c @@ -145,7 +145,7 @@ linprocfs_domeminfo(PFS_FILL_ARGS) unsigned long memused; /* used memory in bytes */ unsigned long memfree; /* free memory in bytes */ unsigned long memshared; /* shared memory ??? */ - unsigned long buffers, cached; /* buffer / cache memory ??? */ + unsigned long buffers; /* buffer */ unsigned long long swaptotal; /* total swap space in bytes */ unsigned long long swapused; /* used swap space in bytes */ unsigned long long swapfree; /* free swap space in bytes */ @@ -185,23 +185,21 @@ linprocfs_domeminfo(PFS_FILL_ARGS) * like unstaticizing it just for linprocfs's sake. */ buffers = 0; - cached = vm_cnt.v_cache_count * PAGE_SIZE; sbuf_printf(sb, - " total: used: free: shared: buffers: cached:\n" - "Mem: %lu %lu %lu %lu %lu %lu\n" + " total: used: free: shared: buffers:\n" + "Mem: %lu %lu %lu %lu %lu\n" "Swap: %llu %llu %llu\n" "MemTotal: %9lu kB\n" "MemFree: %9lu kB\n" "MemShared:%9lu kB\n" "Buffers: %9lu kB\n" - "Cached: %9lu kB\n" "SwapTotal:%9llu kB\n" "SwapFree: %9llu kB\n", - memtotal, memused, memfree, memshared, buffers, cached, + memtotal, memused, memfree, memshared, buffers, swaptotal, swapused, swapfree, B2K(memtotal), B2K(memfree), - B2K(memshared), B2K(buffers), B2K(cached), + B2K(memshared), B2K(buffers), B2K(swaptotal), B2K(swapfree)); return (0); diff --git a/sys/fs/tmpfs/tmpfs_subr.c b/sys/fs/tmpfs/tmpfs_subr.c index fcc8782..5dd2214 100644 --- a/sys/fs/tmpfs/tmpfs_subr.c +++ b/sys/fs/tmpfs/tmpfs_subr.c @@ -105,8 +105,7 @@ tmpfs_mem_avail(void) { vm_ooffset_t avail; - avail = swap_pager_avail + vm_cnt.v_free_count + vm_cnt.v_cache_count - - tmpfs_pages_reserved; + avail = swap_pager_avail + vm_cnt.v_free_count + - tmpfs_pages_reserved; if (__predict_false(avail < 0)) avail = 0; return (avail); diff --git a/sys/sys/vmmeter.h b/sys/sys/vmmeter.h index 19dfb49..a1b6750 100644 --- a/sys/sys/vmmeter.h +++ b/sys/sys/vmmeter.h @@ -97,7 +97,7 @@ struct vmmeter { u_int v_inactive_target; /* (c) pages desired inactive */ u_int v_inactive_count; /* (q) pages inactive */ u_int v_laundry_count; /* (q) pages dirty */ - u_int v_cache_count; /* (f) pages on cache queue */ + u_int v_spare2[1]; u_int v_pageout_free_min; /* (c) min pages reserved for kernel */ u_int v_interrupt_free_min; /* (c) reserved pages for int code */ u_int v_free_severe; /* (c) severe page depletion point */ @@ -131,8 +131,7 @@ static __inline int vm_page_count_severe(void) { - return (vm_cnt.v_free_severe > (vm_cnt.v_free_count + - vm_cnt.v_cache_count)); + return (vm_cnt.v_free_severe > vm_cnt.v_free_count); } /* @@ -149,7 +148,7 @@ static __inline int vm_page_count_min(void) { - return (vm_cnt.v_free_min > (vm_cnt.v_free_count + vm_cnt.v_cache_count)); + return (vm_cnt.v_free_min > vm_cnt.v_free_count); } /* @@ -161,12 +160,11 @@ static __inline int vm_page_count_target(void) { - return (vm_cnt.v_free_target > (vm_cnt.v_free_count + - vm_cnt.v_cache_count)); + return (vm_cnt.v_free_target > vm_cnt.v_free_count); } /* - * Return the number of pages we need to free-up or cache + * Return the number of pages we need to free up. * A positive number indicates that we do not have enough free pages. */ @@ -174,8 +172,7 @@ static __inline int vm_paging_target(void) { - return (vm_cnt.v_free_target - (vm_cnt.v_free_count + - vm_cnt.v_cache_count)); + return (vm_cnt.v_free_target - vm_cnt.v_free_count); } /* @@ -186,8 +183,7 @@ static __inline int vm_paging_needed(void) { - return (vm_cnt.v_free_count + vm_cnt.v_cache_count < - vm_pageout_wakeup_thresh); + return (vm_cnt.v_free_count < vm_pageout_wakeup_thresh); } #endif diff --git a/sys/vm/swap_pager.c b/sys/vm/swap_pager.c index f68e166..dad3f2e 100644 --- a/sys/vm/swap_pager.c +++ b/sys/vm/swap_pager.c @@ -2224,10 +2224,8 @@ swapoff_one(struct swdevt *sp, struct ucred *cred) * of data we will have to page back in, plus an epsilon so * the system doesn't become critically low on swap space. */ - if (vm_cnt.v_free_count + vm_cnt.v_cache_count + swap_pager_avail < - nblks + nswap_lowat) { + if (vm_cnt.v_free_count + swap_pager_avail < nblks + nswap_lowat) return (ENOMEM); - } /* * Prevent further allocations on this device. diff --git a/sys/vm/vm_meter.c b/sys/vm/vm_meter.c index 48954ac..1602a84 100644 --- a/sys/vm/vm_meter.c +++ b/sys/vm/vm_meter.c @@ -219,7 +219,7 @@ vmtotal(SYSCTL_HANDLER_ARGS) } } mtx_unlock(&vm_object_list_mtx); - total.t_free = vm_cnt.v_free_count + vm_cnt.v_cache_count; + total.t_free = vm_cnt.v_free_count; return (sysctl_handle_opaque(oidp, &total, sizeof(total), req)); } @@ -303,7 +303,6 @@ VM_STATS_VM(v_active_count, "Active pages"); VM_STATS_VM(v_inactive_target, "Desired inactive pages"); VM_STATS_VM(v_inactive_count, "Inactive pages"); VM_STATS_VM(v_laundry_count, "Dirty pages"); -VM_STATS_VM(v_cache_count, "Pages on cache queue"); VM_STATS_VM(v_pageout_free_min, "Min pages reserved for kernel"); VM_STATS_VM(v_interrupt_free_min, "Reserved pages for interrupt code"); VM_STATS_VM(v_forks, "Number of fork() calls"); diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index 52f4191..ccecd62 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -1469,11 +1469,10 @@ vm_page_alloc(vm_object_t object, vm_pindex_t pindex, int req) /* XXX is it still possible for this to recurse? */ mtx_lock_flags(&vm_page_queue_free_mtx, MTX_RECURSE); - if (vm_cnt.v_free_count + vm_cnt.v_cache_count > vm_cnt.v_free_reserved || + if (vm_cnt.v_free_count > vm_cnt.v_free_reserved || (req_class == VM_ALLOC_SYSTEM && - vm_cnt.v_free_count + vm_cnt.v_cache_count > vm_cnt.v_interrupt_free_min) || - (req_class == VM_ALLOC_INTERRUPT && - vm_cnt.v_free_count + vm_cnt.v_cache_count > 0)) { + vm_cnt.v_free_count > vm_cnt.v_interrupt_free_min) || + (req_class == VM_ALLOC_INTERRUPT && vm_cnt.v_free_count > 0)) { /* * Allocate from the free queue if the number of free pages * exceeds the minimum for the request class. @@ -1640,11 +1639,11 @@ vm_page_alloc_contig(vm_object_t object, vm_pindex_t pindex, int req, req_class = VM_ALLOC_SYSTEM; mtx_lock(&vm_page_queue_free_mtx); - if (vm_cnt.v_free_count + vm_cnt.v_cache_count >= npages + - vm_cnt.v_free_reserved || (req_class == VM_ALLOC_SYSTEM && - vm_cnt.v_free_count + vm_cnt.v_cache_count >= npages + - vm_cnt.v_interrupt_free_min) || (req_class == VM_ALLOC_INTERRUPT && - vm_cnt.v_free_count + vm_cnt.v_cache_count >= npages)) { + if (vm_cnt.v_free_count >= npages + vm_cnt.v_free_reserved || + (req_class == VM_ALLOC_SYSTEM && + vm_cnt.v_free_count >= npages + vm_cnt.v_interrupt_free_min) || + (req_class == VM_ALLOC_INTERRUPT && + vm_cnt.v_free_count >= npages)) { #if VM_NRESERVLEVEL > 0 retry: if (object == NULL || (object->flags & OBJ_COLORED) == 0 || @@ -1802,11 +1801,11 @@ vm_page_alloc_freelist(int flind, int req) * Do not allocate reserved pages unless the req has asked for it. */ mtx_lock_flags(&vm_page_queue_free_mtx, MTX_RECURSE); - if (vm_cnt.v_free_count + vm_cnt.v_cache_count > vm_cnt.v_free_reserved || + if (vm_cnt.v_free_count > vm_cnt.v_free_reserved || (req_class == VM_ALLOC_SYSTEM && - vm_cnt.v_free_count + vm_cnt.v_cache_count > vm_cnt.v_interrupt_free_min) || + vm_cnt.v_free_count > vm_cnt.v_interrupt_free_min) || (req_class == VM_ALLOC_INTERRUPT && - vm_cnt.v_free_count + vm_cnt.v_cache_count > 0)) + vm_cnt.v_free_count > 0)) m = vm_phys_alloc_freelist_pages(flind, VM_FREEPOOL_DIRECT, 0); else { mtx_unlock(&vm_page_queue_free_mtx); @@ -2336,7 +2335,7 @@ vm_page_reclaim_contig(int req, u_long npages, vm_paddr_t low, vm_paddr_t high, * Return if the number of free pages cannot satisfy the requested * allocation. */ - count = vm_cnt.v_free_count + vm_cnt.v_cache_count; + count = vm_cnt.v_free_count; if (count < npages + vm_cnt.v_free_reserved || (count < npages + vm_cnt.v_interrupt_free_min && req_class == VM_ALLOC_SYSTEM) || (count < npages && req_class == VM_ALLOC_INTERRUPT)) @@ -2609,7 +2608,7 @@ vm_page_free_wakeup(void) * some free. */ if (vm_pageout_pages_needed && - vm_cnt.v_cache_count + vm_cnt.v_free_count >= vm_cnt.v_pageout_free_min) { + vm_cnt.v_free_count >= vm_cnt.v_pageout_free_min) { wakeup(&vm_pageout_pages_needed); vm_pageout_pages_needed = 0; } @@ -3449,7 +3448,6 @@ vm_page_assert_pga_writeable(vm_page_t m, uint8_t bits) DB_SHOW_COMMAND(page, vm_page_print_page_info) { db_printf("vm_cnt.v_free_count: %d\n", vm_cnt.v_free_count); - db_printf("vm_cnt.v_cache_count: %d\n", vm_cnt.v_cache_count); db_printf("vm_cnt.v_inactive_count: %d\n", vm_cnt.v_inactive_count); db_printf("vm_cnt.v_active_count: %d\n", vm_cnt.v_active_count); db_printf("vm_cnt.v_laundry_count: %d\n", vm_cnt.v_laundry_count); @@ -3464,8 +3462,7 @@ DB_SHOW_COMMAND(pageq, vm_page_print_pageq_info) { int dom; - db_printf("pq_free %d pq_cache %d\n", - vm_cnt.v_free_count, vm_cnt.v_cache_count); + db_printf("pq_free %d\n", vm_cnt.v_free_count); for (dom = 0; dom < vm_ndomains; dom++) { db_printf( "dom %d page_cnt %d free %d pq_act %d pq_inact %d pq_laund %d pass %d\n", diff --git a/sys/vm/vnode_pager.c b/sys/vm/vnode_pager.c index fe296dd..76ef978 100644 --- a/sys/vm/vnode_pager.c +++ b/sys/vm/vnode_pager.c @@ -1112,8 +1112,7 @@ vnode_pager_putpages(vm_object_t object, vm_page_t *m, int count, * daemon up. This should be probably be addressed XXX. */ - if (vm_cnt.v_free_count + vm_cnt.v_cache_count < - vm_cnt.v_pageout_free_min) + if (vm_cnt.v_free_count < vm_cnt.v_pageout_free_min) flags |= VM_PAGER_PUT_SYNC; /* -- 2.8.1