[Question] Hỏi về công thức tính max thread trong kernel ? |
16/03/2007 23:17:36 (+0700) | #1 | 47170 |
|
rickb
Reseacher
|
Joined: 27/01/2007 17:47:27
Messages: 200
Offline
|
|
Mình đang đọc 1 bài viết về kernel, nó đề cập đến công thức để tính max thread của kernel dựa trên số physical memory trên máy tính như sau :
Every process under Linux is dynamically allocated a struct task_struct structure. The maximum number of processes which can be created on Linux is limited only by the amount of physical memory present, and is equal to (see kernel/fork.c:fork_init()):
/*
* The default maximum number of threads is set to a safe
* value: the thread structures can take up at most half
* of memory.
*/
max_threads = mempages / (THREAD_SIZE/PAGE_SIZE) / 2;
which, on IA32 architecture, basically means num_physpages/4. As an example, on a 512M machine, you can create 32k threads. This is a considerable improvement over the 4k-epsilon limit for older (2.2 and earlier) kernels.
Nhưng mình chưa hiểu lắm về công thức & vd của nó, từ 512 MB Ram làm sao nó có thể tính ra là 32k threads nhỉ ? |
|
|
|
|
[Question] Hỏi về công thức tính max thread trong kernel ? |
16/03/2007 23:44:52 (+0700) | #2 | 47177 |
subnetwork
Member
|
0 |
|
|
Joined: 05/09/2004 06:08:09
Messages: 1666
Offline
|
|
Max_threads = mempages / (THREAD_SIZE/PAGE_SIZE) / 8
In from beginning for the i386, THREAD_SIZE=2*PAGE_SIZE, PAGE_SIZE=2^12 (4KB), mempages= /PAGE_SIZE size of physical memory, 256M of memory machines mempages=256*2^20/2^12=256*2^8 when the largest number of threads 4096.
Dành cho kernel 2.4 , Kernel 2.6 mình không biết, chắc tìm tài liệu về Kernel mới khám phá được nó . |
|
Quản lý máy chủ, cài đặt, tư vấn, thiết kế, bảo mật hệ thống máy chủ dùng *nix
http://chamsocmaychu.com |
|
|