summaryrefslogtreecommitdiffstats
path: root/libexec/ftpd/Makefile
diff options
context:
space:
mode:
authorsilby <silby@FreeBSD.org>2002-02-27 18:03:02 +0000
committersilby <silby@FreeBSD.org>2002-02-27 18:03:02 +0000
commit230f96f3ce0496343800b107e3e952de9d7747de (patch)
treec901dac940b687287b5e926cf9d3fee071a8a002 /libexec/ftpd/Makefile
parent62c8af563fb2047ffe16514abfeef77eea1691b8 (diff)
downloadFreeBSD-src-230f96f3ce0496343800b107e3e952de9d7747de.zip
FreeBSD-src-230f96f3ce0496343800b107e3e952de9d7747de.tar.gz
Fix a horribly suboptimal algorithm in the vm_daemon.
In order to determine what to page out, the vm_daemon checks reference bits on all pages belonging to all processes. Unfortunately, the algorithm used reacted badly with shared pages; each shared page would be checked once per process sharing it; this caused an O(N^2) growth of tlb invalidations. The algorithm has been changed so that each page will be checked only 16 times. Prior to this change, a fork/sleepbomb of 1300 processes could cause the vm_daemon to take over 60 seconds to complete, effectively freezing the system for that time period. With this change in place, the vm_daemon completes in less than a second. Any system with hundreds of processes sharing pages should benefit from this change. Note that the vm_daemon is only run when the system is under extreme memory pressure. It is likely that many people with loaded systems saw no symptoms of this problem until they reached the point where swapping began. Special thanks go to dillon, peter, and Chuck Cranor, who helped me get up to speed with vm internals. PR: 33542, 20393 Reviewed by: dillon MFC after: 1 week
Diffstat (limited to 'libexec/ftpd/Makefile')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud