* [patch] Unlimited number of processes, x86, 2.1.131
@ 1998-12-08 0:01 mingo
1998-12-08 16:51 ` Petko Manolov
0 siblings, 1 reply; 2+ messages in thread
From: mingo @ 1998-12-08 0:01 UTC (permalink / raw)
To: linux-kernel; +Cc: linux-smp, Robert Krawitz, Stephen C. Tweedie
the attached patch removes the per-thread TSS architecture and adds an
architecture that has no limits on the number of processes (other than
available RAM). The patch removes the former NR_TASKS limit and creates a
runtime '/proc/sys/kernel/max-threads' sysctl instead. With this patch i
was able to create 10 thousand processes on my box:
[root@hell /root]# echo "100000" > /proc/sys/kernel/max-threads
[root@hell /root]# cat /proc/sys/kernel/max-threads
100000
[root@hell forks]# ./fork 10000
[root@hell forks]# pstree
init-+-atd
|-crond
|-10000*[fork] <======= these are the 10k processes
|-gpm
|-inetd
(hm, this probably is the first Linux box in the world with more than
10000 processes, on x86 at least)
The patch is rather big, nontrivial and changes just about everything in
the x86 arch and quite some things in the generic code too, so i dont
think this is an appropriate thing for 2.2. I'll maintain this patch as an
additional 'big server patch' to 2.2, and i aim for getting it merged into
2.3 as soon as possible.
the patch is otherwise transparent, no user-visible changes or
restrictions were added. All those special x86 features work just like
before. These are the main improvements to the x86 code:
- unlimited number of threads/processes
- unlimited number of LDTs (one per process, but no global GDT
restrictions)
- LDT sharing code is fixed, the LDT between cloned threads is
shared even if the LDT was created after the thread.
- the size of the GDT is down from 64k to ~128 bytes on UP.
(slightly bigger but still much smaller than 64K on SMP)
(this GDT layout btw. supports up to 512 processors)
- struct task_struct got smaller, this means clone/fork speedups.
i have tested all 'special' x86 features: LDTs, iopl/ioperm, debug
registers, ptrace, etc. X, wine, svgalib/quake, dosemu and other
x86-specific binaries work without any problems on my SMP box. (the patch
compiles/boots/works on UP too.)
the new layout of the GDT is:
* 0 - null
* 1 - not used
* 2 - kernel code segment
* 3 - kernel data segment
* 4 - user code segment <-- new cacheline
* 5 - user data segment
* 6 - not used
* 7 - not used
* 8 - APM BIOS support <-- new cacheline
* 9 - APM BIOS support
* 10 - APM BIOS support
* 11 - APM BIOS support
* 12 - CPU#0 TSS <-- new cacheline
* 13 - CPU#0 LDT
* 14 - not used
* 15 - not used
* 16 - CPU#1 TSS <-- new cacheline
* 17 - CPU#1 LDT
* 18 - not used
* 19 - not used
* ... NR_CPUS per-CPU TSS+LDT's if on SMP
(the reason for the gaps between per-CPU TSS+LDT sections is to localize
those cachelines to specific CPUs without extra cache-invalidation
traffic) For more details, take a look at the code.
bug reports, success reports, comments and suggestions welcome,
-- mingo
begin 664 manythreads-2.1.131.gz
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
M@XY;BE0A1^&&PY-	]=M<XO/K00Z^_G:_N4ZQ)7B>S:^)3E]8#*P#OH'7-O
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
M-#A@ES'3SCI8(D'*4:^3MJ?^N$H1T(/8->8*Z1?N*@@:>P:F,\1C6=GMP
M'R&042?6P2@YEN28,(AW\&"RB/(C9ACAVY!*DGY&,\"(R1,31"S5\`,J:+CQ
M`@[Z0X#R/;+QD-@Q=.01X,L.QQJ60(PR$LI%?N;;<PE\RAI8*82B,LA@X]DG
MQ\</KM!V!R]&QM.A$&>)B2HDHI)"QQ#D]>C=5>OHY#<"$CL[>G?V7ZV39_H/
MFE^J,7M0N.:*@BG.7GK)14,X+.8MIEJ$V.-7.K5B<;*G`8(`-D;^5]ABQU?U
M]H?SUI_Z^^6',_/]YOK$?#]I%98C9N>WAAHP6W$(C%O1>IJ8))F%(K]0Y!5R
M%(,G(<8@!-;2J!:_2=_I5BD*7ERR!AQ5]HF!\7-#-L]-()4L":^F@MV@=^RO
M:0/`M'6$O(S`+T6CB34S9>)KN/&1_3ZPUACO]T8R;(,!'[2JL..3O(T9M39<
MU`&"L>;A0)-W0FDXUK"2"G]4^:,&'QR)H=_E6`S]+D9CH,0&YQ$][_<+TI(>
MGWB=.$6+(@IC9%8U(9LY\(D)_]-#]9_+T_8OUZT3*.61A:YSGX#",$HNT(#_
)"^%?3`=`]@``
`
end
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/
^ permalink raw reply [flat|nested] 2+ messages in thread
* Unlimited number of processes, x86, 2.1.131
1998-12-08 0:01 [patch] Unlimited number of processes, x86, 2.1.131 mingo
@ 1998-12-08 16:51 ` Petko Manolov
0 siblings, 0 replies; 2+ messages in thread
From: Petko Manolov @ 1998-12-08 16:51 UTC (permalink / raw)
To: mingo; +Cc: linux-kernel
> sure. I've attached a cleartext version too. (it's my freshest version,
> one slight bug fixed and some debugging code removed)
>
> feel free to ask questions and please Cc: linux-kernel too, so others see
> the questions too. (and thus i have to answer them only once :)
Ok, the patch applied cleanly. Sadly there was a problem with compiling.
You'd forgot to comment mmu_cr4_features in arch/i386/mm/init.c and
linkker is moaning for duplicate. The variable is in
arch/i386/kernel/setup.c. Except this all went OK. I'm writing this
with your kernel running ;-).
If i understand correctly this can't be aplied for 2.0.xx series -
you remove tr field from tss struct(as tss itself) - where we do
task switch thru TSS descriptor in GDT. But this is obviously not
necessery for 2.1.xxx where we do SW task switch.
I'm still not so familiar with the patch, but "soft_thread_struct" is
far smaller than task_struct and this should be an improvement for
clone().
All this is general change of concept (GDT, task structures, etc...)
and i'm curious what Linus will say about this ;-))
regards
--
Petko Manolov - petkan@varel.bg
http://www.varel.bg/~petkan
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~1998-12-08 14:41 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
1998-12-08 0:01 [patch] Unlimited number of processes, x86, 2.1.131 mingo
1998-12-08 16:51 ` Petko Manolov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox