git: test - Add various 900,000 process tests

Matthew Dillon dillon at
Mon Aug 14 14:13:27 PDT 2017

commit b5daedd44b0cb06b9a9df40d3288467b31d0b5e1
Author: Matthew Dillon <dillon at>
Date:   Mon Aug 14 14:03:57 2017 -0700

    test - Add various 900,000 process tests
    Add tests involving a large number of user processes.  These tests default
    to creating 900,000 user processes and require a machine with at least
    128GB of ram.  The machine must be booted with kern.maxproc=4000000 in
    These test kernel resource management in the face of a large number of
    processes.  scheduler, pipe kvm, concurrent fork and exec, general kernel
    handling of large numbers of processes, callout, tsleep, and wakeup.
    Also concurrent teardown for 900,000 processes when you hit ^C.
    * loop900k -	Fork/exec's 900,000 processes which sleep 80 seconds and
    		then go into an infinite loop.
    		Tests the scheduler and kernel resource management.
    * pipe900k -	Fork/exec's 900,000 processes which chain 900,000 pipe()s
    		between them and runs an end-to-end test.
    		Tests pipe chaining, kernel pipe resource creation and
    		teardown, and kernel resource management.
    * sleep900k -	Fork/exec's 900,000 processes which sleep 60 seconds and
    		then go into an infinite loop with a 1/10 second sleep.
    		Tests callout / tsleep / wakeup, and kernel resource
    Generally speaking these programs require about 80 seconds to stabilize
    once all 900,000 processes have forked.  Fork speed will depend on numerous
    factors but should scale fairly well with cpu threads.  Initial forking
    usually takes around 30 seconds.  When you ^C, the machine may take upwards
    of 10 seconds for basic teardown, and will continue clean up additional memory
    and exit handling for the next 60 seconds or so.
    Machine should stay responsive through all stages in all tests except for
    a few seconds just after hitting ^C.

Summary of changes:
 test/sysperf/loop900k.c  |  81 ++++++++++++++++++++++++++++++++++
 test/sysperf/pipe900k.c  | 112 +++++++++++++++++++++++++++++++++++++++++++++++
 test/sysperf/sleep900k.c |  81 ++++++++++++++++++++++++++++++++++
 3 files changed, 274 insertions(+)
 create mode 100644 test/sysperf/loop900k.c
 create mode 100644 test/sysperf/pipe900k.c
 create mode 100644 test/sysperf/sleep900k.c

DragonFly BSD source repository

More information about the Commits mailing list