> 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