কেন একটি 64-বিট লিনাক্স সিস্টেমে সর্বাধিক পিআইডি 2 ^ 22?


22

কেন 2 ^ 62, বা 2 ^ 31 বা অন্য কিছু নয়?

প্রক্রিয়া আইডির সর্বোচ্চ মান কত?


2
এটা? আপনার উত্স কি?
মুরু


এটি লিনাক্সের জন্য খুব নির্দিষ্ট। এটি সাধারণভাবে ইউনিক্সের জন্য প্রযোজ্য নয়।
মুরু

আমি একটি পূর্ণ bit৪ বিট পূর্ণসংখ্যার ব্যবহার পছন্দ করতাম, আপনি কখনই সেগুলি পুনরায় ব্যবহার না করার চেয়ে গ্যারান্টি দিতে পারেন। পুনরায় ব্যবহারের ফলে জাতিগুলির অবস্থার দিকে পরিচালিত হয় যেখানে কোনও আইডির অর্থ আপনি এটি গ্রহণ এবং ব্যবহারের সময়টির মধ্যে পরিবর্তন হয়।
কোডসইনচাউস

উত্তর:


34

এটি নিখুঁতভাবে স্বেচ্ছাসেবী পছন্দ বলে মনে হচ্ছে। এটি যে কোনও কিছু হতে পারে তবে কেউ 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_max2.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_MAXPID_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 বাইট নেয়

উচ্চতর সীমাবদ্ধতা থাকার বিষয়ে উত্তপ্ত আলোচনা হয়েছিল, তবে মনে হয় শেষ পর্যন্ত এর বাইরে কিছুই আসেনি।


2
আপনি লিনাক্সের গভীর ইতিহাসের সাথে একটি গিট রেপো পেতে পারেন, পুরাতত্ত্বের জন্য উপযুক্ত, স্ট্যাকওভারফ্লো / প্রশ্নগুলি / 64৩64৪২৪৩/২ নির্দেশিকা ব্যবহার করে । এটি এঙ্গো মোলনার দ্বারা a5b5f6a "[প্যাচচ] জেনেরিক-পিধাশ -২.৩6-জে ২, বি কে-কারার" পরিণত হয়, এখানে এলডব্লিউএন-তে দৃশ্যমান
hobbs

@ হোবস দুর্দান্ত! সুতরাং এটি সব পরে ইনগো মোলনার থেকে। আমি ভাবছি কেন লিনাস চেঞ্জলগে মালিকানা নিয়েছিল?
মুরু

1
@ মুরু: আমি বিশ্বাস করি বিটকিপার প্রতিশ্রুতিবদ্ধ এবং লেখকের মধ্যে পার্থক্যকে সমর্থন করে না, লিনাস যখন গিতের নকশা তৈরি করেছিলেন তখন এটি প্রয়োগ করেছিলেন of আইআইআরসি, ইনগো বিটকিপারকে ব্যবহার করতে অস্বীকার করেছিল, তাই তিনি প্রতি মেইল ​​প্রতি প্যাচগুলি প্রেরণ করেছিলেন এবং তারা স্বয়ংক্রিয়ভাবে উত্পাদিত চেঞ্জলগগুলিতে প্রতিশ্রুতিবদ্ধকে দোষ দিয়েছিল, কারণ বিটকিপারের লেখকের আলাদা ধারণা নেই। এটা যাইহোক আমার অনুমান।
Jörg ডব্লু মিটাগ

@ জার্গডব্লিউমিত্যাগ সম্ভব এখন আমি ভাবছি আমি চেঞ্জলগটি ভুলভাবে পড়েছি এবং এটি কিছুটা আলাদা প্যাচ হতে পারে।
মুরু

3
এই উত্তরের শেষের নিকটবর্তী উক্তিটি ইঙ্গিত দেয় যে একটি নির্বিচারে বড় মান বাছাই না করার কারণ স্মৃতিশক্তি বাধা। প্রতি 1 এম পিআইডি-তে 128 কেবি র‌্যামে, এমনকি its৩ বিট (সাইন বিট রেখে) ব্যবহার করে, আমি যদি গণিতটি বোল না করি তবে কেবল পিআইডি টেবিলের জন্য এক মিলিয়ন টিবি র‌্যামের প্রয়োজন। সাম্প্রতিক সিস্টেমগুলির জন্য উচ্চ দিকে কিছুটা little
একটি সিভিএন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.