banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Hỏi về công thức tính max thread trong kernel ?  XML
  [Question]   Hỏi về công thức tính max thread trong kernel ? 16/03/2007 23:17:36 (+0700) | #1 | 47170
[Avatar]
rickb
Reseacher

Joined: 27/01/2007 17:47:27
Messages: 200
Offline
[Profile] [PM] [Yahoo!]
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ỉ ?
[Up] [Print Copy]
  [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

[Minus]    0    [Plus]
Joined: 05/09/2004 06:08:09
Messages: 1666
Offline
[Profile] [PM] [WWW] [Yahoo!]
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
[Up] [Print Copy]
  [Question]   Hỏi về công thức tính max thread trong kernel ? 16/03/2007 23:58:21 (+0700) | #3 | 47185
[Avatar]
rickb
Reseacher

Joined: 27/01/2007 17:47:27
Messages: 200
Offline
[Profile] [PM] [Yahoo!]

Golden Autumn wrote:
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ó .  


Mình vẫn có 1 số thắc mắc
Thứ 1 :

mempages= /PAGE_SIZE size of physical memory 


Đoạn này là sao nhỉ ? bạn ghi chưa rõ lắm

Thứ 2 là

256M of memory machines mempages=256*2^20/2^12=256*2^8 when the largest number of threads 4096. 


con số 2^20 ở đâu ra vậy bạn ? với lại cuối cùng tại sao bạn ko /8 theo công thức nhỉ ?
[Up] [Print Copy]
  [Question]   Re: Hỏi về công thức tính max thread trong kernel ? 18/03/2007 00:19:32 (+0700) | #4 | 47465
[Avatar]
rickb
Reseacher

Joined: 27/01/2007 17:47:27
Messages: 200
Offline
[Profile] [PM] [Yahoo!]
hix, sao ko ai có ý kiến vậy nhỉ smilie
[Up] [Print Copy]
  [Question]   Hỏi về công thức tính max thread trong kernel ? 18/03/2007 03:57:10 (+0700) | #5 | 47501
[Avatar]
gsmth
Elite Member

[Minus]    0    [Plus]
Joined: 15/02/2007 13:25:36
Messages: 749
Offline
[Profile] [PM] [WWW] [Yahoo!]
Lấy calculator ra mà bấm:
512 * 1024 * 1024 / 4096 / (8192 / 4096)/2 = 32768 (hay 32K)
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|