কেন 2 ^ 62, বা 2 ^ 31 বা অন্য কিছু নয়?
কেন 2 ^ 62, বা 2 ^ 31 বা অন্য কিছু নয়?
উত্তর:
এটি নিখুঁতভাবে স্বেচ্ছাসেবী পছন্দ বলে মনে হচ্ছে। এটি যে কোনও কিছু হতে পারে তবে কেউ 1 জন অনুভব করেছেন 4 মিলিয়ন যথেষ্ট is উত্সটি ব্যবহার করুন :
/*
* 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 র manpage বলে /proc/sys/kernel/pid_max
2.5.34 যোগ করা হয়েছিল এবং এ খুঁজছেন পরিবর্তণের , এটা দেখে মনে হচ্ছে কারো ছিল ইঙ্গো Molnár :
<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
এটি আমার অনুসন্ধান দক্ষতা যতদূর পাওয়া যায়।
@ হোবসকে ধন্যবাদ, মনে হচ্ছে ইনগো হ'ল সর্বোপরি কেউ । আমি উপরে যে প্যাচটি উদ্ধৃত করেছি তা প্রথমে তাঁর পাঠানো হয়েছিল। এটি সহ এলকেএমএল পোস্ট থেকে :
নতুন পিআইডি বরাদ্দকারীর মেমরি পদচিহ্নগুলি / proc / sys / কার্নেল / পিড_ম্যাক্সের সাথে গতিশীলভাবে স্কেল করে: ডিফল্ট 32K পিআইডি একটি 4 কে বরাদ্দ দেয়, 1 মিলিয়নের একটি পিড_ম্যাক্স 128 কে পাদদেশের ছাপ দেয়। পিড_ম্যাক্সের জন্য বর্তমান পরম সীমাটি 4 মিলিয়ন পিআইডি - এটি কার্নেলের কোনও বরাদ্দ সৃষ্টি করে না, বিটম্যাপগুলি চাহিদা-বরাদ্দ রানটাইমকে আবদ্ধ করে। পিডম্যাপ টেবিলটি 512 বাইট নেয়
উচ্চতর সীমাবদ্ধতা থাকার বিষয়ে উত্তপ্ত আলোচনা হয়েছিল, তবে মনে হয় শেষ পর্যন্ত এর বাইরে কিছুই আসেনি।