> 20,000 did not work because it ran out of kernel physical memory. That
> preallocation could be adjusted, but at some point the available kernel
> virtual address space will limit what it can allocate.

at the cost of moving KZERO down 256MB on the pae kernel,

        ivey# ps|wc
          15961  111727  957732

and even more

        ivey; ps|wc
          30064  210448 1803915

        ivey# cat /dev/swap
        17153769472 memory
        4096 pagesize
        131072 kernel
        271322/4056860 user
        0/0 swap
        0/17877472 kernel malloc
        0/17877472 kernel draw

interestingly, the time to launch 1000 sleeps went up in a non-linear way
here's the time to launch each 1000 processes

1000    0
2000    0
3000    1
4000    0
5000    1
6000    0
7000    1
8000    1
9000    0
10000   1
11000   1
12000   1
13000   1
14000   1
15000   2
16000   1
17000   2
18000   2
19000   2
20000   3
21000   3
22000   4
23000   4
24000   5
25000   5
26000   5
27000   7
28000   7
29000   8
30000   8

launching 32000 processes was not possible.  the kernel got stuck.

here's one thing that's not immediately obvious, even when running the
kernel.  conv.nmach must be less than 0x7fffffff/(1000*1000) = 2147
to prevent reprioritize from doing silly things:

        /*
         *  fairshare = 1.000 * conf.nproc * 1.000/load,
         * except the decimal point is moved three places
         * on both load and fairshare.
         */
        fairshare = (conf.nmach*1000*1000)/load;

- erik

Reply via email to