2 ^ 62 या 2 ^ 31 या कुछ और क्यों नहीं?
2 ^ 62 या 2 ^ 31 या कुछ और क्यों नहीं?
जवाबों:
यह एक विशुद्ध रूप से मनमाना विकल्प लगता है। यह कुछ भी हो सकता है, लेकिन किसी को 1 महसूस किया 4 लाख पर्याप्त है। स्रोत का उपयोग करें :
/*
* A maximum of 4 million PIDs should be enough for a while.
* [NOTE: PID/TIDs are limited to 2^29 ~= 500+ million, see futex.h.]
*/
#define PID_MAX_LIMIT (CONFIG_BASE_SMALL ? PAGE_SIZE * 8 : \
(sizeof(long) > 4 ? 4 * 1024 * 1024 : PID_MAX_DEFAULT))
जीआईटी पर इतिहास केवल 2005 तक वापस जाने के लिए लगता है, और मूल्य यह है कि कम से कम लंबे समय तक।
1 मैनपेज कि कहते हैं /proc/sys/kernel/pid_max
2.5.34 में जोड़ा गया है, और को देखकर बदलाव का , यह कैसा दिखता किसी था इंगो मोल्नार :
<mingo@elte.hu>
[PATCH] pid-max-2.5.33-A0
This is the pid-max patch, the one i sent for 2.5.31 was botched. I
have removed the 'once' debugging stupidity - now PIDs start at 0 again.
Also, for an unknown reason the previous patch missed the hunk that had
the declaration of 'DEFAULT_PID_MAX' which made it not compile ...
हालांकि, इंगो केवल जोड़ा गया DEFAULT_PID_MAX
। PID_MAX_LIMIT
लिनुस टोरवाल्ड्स द्वारा 2.5.37 में जोड़ा गया था :
<torvalds@home.transmeta.com>
Make pid_max grow dynamically as needed.
निकला, मैंने चैंज को गलत बताया।
बदलाव 2.5.37 पैचसेट में हैं :
diff -Nru a/include/linux/threads.h b/include/linux/threads.h
--- a/include/linux/threads.h Fri Sep 20 08:20:41 2002
+++ b/include/linux/threads.h Fri Sep 20 08:20:41 2002
@@ -17,8 +17,13 @@
#define MIN_THREADS_LEFT_FOR_ROOT 4
/*
- * This controls the maximum pid allocated to a process
+ * This controls the default maximum pid allocated to a process
*/
-#define DEFAULT_PID_MAX 0x8000
+#define PID_MAX_DEFAULT 0x8000
+
+/*
+ * A maximum of 4 million PIDs should be enough for a while:
+ */
+#define PID_MAX_LIMIT (4*1024*1024)
#endif
जहां तक मेरे खोज कौशल की बात है, तो मुझे।
@ थॉट्स के लिए धन्यवाद, ऐसा लगता है कि इंगो सभी के बाद कोई है । मैंने जो पैच ऊपर उद्धृत किया था, वह सबसे पहले उसके द्वारा भेजा गया था। इसके साथ LKML पोस्ट से :
नए पीआईडी आवंटनकर्ता की मेमोरी पदचिह्न गतिशील रूप से / proc / sys / k गिरी / pid_max के साथ: डिफ़ॉल्ट 32K PIDs एक 4K आवंटन का कारण बनता है, 1 मिलियन का एक pid_max 128K पदचिह्न का कारण बनता है। Pid_max के लिए वर्तमान पूर्ण सीमा 4 मिलियन PID है - इससे कर्नेल में कोई आवंटन नहीं होता है, बिटमैप मांग-आवंटित रनटाइम हैं। पिडमैप टेबल 512 बाइट्स लेती है।
उच्च सीमा होने के बारे में एक गर्म चर्चा थी, लेकिन ऐसा लगता है कि अंत में इससे कुछ भी नहीं निकला।