में प्रक्रियाओं की अधिकतम संख्या लिनक्स सिस्टम में संभव प्रक्रियाओं की संख्या की अधिकतम सीमा क्या है? हम इसे कैसे पा सकते हैं?लिनक्स
लिनक्स
उत्तर
आपका गिरी procfs
में यह जानकारी निर्यात कर लेना चाहिए:
cat /proc/sys/kernel/pid_max
यह अनूठा प्रक्रिया पहचानकर्ता आपके सिस्टम का समर्थन कर सकते की अधिकतम संख्या है।
चूंकि यह एक फ़ाइल है, /proc/sys/kernel/pid_max
किसी भी सक्षम प्रोग्रामिंग भाषा से निरीक्षण किया जा सकता है।
यह सच हो सकता है, लेकिन अधिकांश अच्छे डिस्ट्रोज़ में यह /etc/security/limits.conf द्वारा सीमित है जो उपयोगकर्ता/समूह/डोमेन आधार पर अधिकतम प्रक्रियाओं को फ़िल्टर कर सकता है। – AoeAoe
'ulimit' अधिकतम प्रति-उपयोगकर्ता प्रक्रियाओं को अधिकतम पिड से कम तक सीमित कर सकता है, और कुछ गुगलिंग से, खेल में अन्य सीमाएं भी हैं (लेकिन मुझे पुष्टि करने के लिए कोई निश्चित स्रोत नहीं मिला, जैसे एलकेएमएल या एक प्रसिद्ध देव इसे पोस्ट कर रहा है)। – Kitsune
'int fd = read ("/proc/sys/kernel/pid_max ");' मान्य नहीं है, और न ही यह किसी अन्य फ़ाइल के लिए मान्य है। – immibis
sysctl
या
kernel.pid_maxबिल्ली/proc/sys/कर्नेल/pid_max
Ninefingers द्वारा सुझाव दिया गया है।
पूर्णता के लिए, आप यह अस्थायी रूप से लिख कर को/proc/syskernel/pid_max या स्थायी रूप से जोड़कर बदल सकते हैं:
kernel.pid_max = 4194303
/etc/sysctl.conf करने के लिए । 4186303 x86_64 और x76 के लिए 32767 की अधिकतम सीमा है।
ने अभी 'sysctl kernel.pid_max = 4194304' की कोशिश की और यह सफल हुआ (लिनक्स 3.10.25) –
@ zed_0xff जब तक आप जानते हों कि परिवर्तन लगातार नहीं है यह सब अच्छा है! –
'printf '% x \ n' 4194303'' 3fffff' – Tino
आपके प्रश्न का संक्षिप्त उत्तर: लिनक्स सिस्टम में संभव प्रक्रिया की संख्या असीमित है।
लेकिन प्रति उपयोगकर्ता प्रक्रिया की संख्या पर एक सीमा है (रूट को छोड़कर जिसकी कोई सीमा नहीं है)।
और आप नीचे दिए गए आदेश ("अधिकतम उपयोगकर्ता प्रक्रियाओं" के लिए एपोजिट) के साथ अपनी उपयोगकर्ता सीमाएं देख सकते हैं।
$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 256447
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 128000
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 500000
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
आप (उदाहरण के लिए: Hadoop) एक विशेष उपयोगकर्ता के लिए प्रक्रिया की अधिकतम स्वीकृत संख्या में वृद्धि करना चाहते हैं, तो आप
hadoop - nproc 500000
/etc/security/limits.conf
में प्रवेश नीचे बनाने की जरूरत है
कभी-कभी परिवर्तन के बाद परिवर्तन को प्रभावी रूप से प्राप्त करने के लिए पुनरारंभ करने की आवश्यकता होती है। –
यह पूछता है कि संख्या 'असीमित' है, क्योंकि अल्लिमिट का मतलब है कि इसमें सीमा सेट (असीमित) नहीं है, लेकिन शेड्यूलर की अनुमति की प्रक्रियाओं की संख्या असीमित नहीं है ... अनंत में। उलिमिट सवाल नहीं था। – hpavc
कर्नेल में 4mln की हार्ड सीमा है, मुझे लगता है कि –
kernel.pid_max एक सीमित कारक है, लेकिन कम से कम महत्वपूर्ण है kernel.threads-max। यह ध्यान देने योग्य है कि प्रत्येक उपयोगकर्ता के लिए डिफ़ॉल्ट nproc ulimit कर्नेल। थ्रेड-अधिकतम दो से विभाजित है, और यह कि प्रत्येक थ्रेड उपयोगकर्ता की nproc सीमा की ओर गिना जाता है। इस प्रकार, "ps -u $ USER" ऐसा प्रतीत होता है कि उपयोगकर्ता ने अपनी एनप्रोक सीमा समाप्त नहीं की है, लेकिन "ps -L -u $ USER" एक बहुत अलग कहानी बता सकता है।
स्टैक ओवरफ़्लो प्रोग्रामिंग और विकास प्रश्नों के लिए एक साइट है। यह प्रश्न ऑफ़-विषय प्रतीत होता है क्योंकि यह प्रोग्रामिंग या विकास के बारे में नहीं है। सहायता केंद्र में [मैं यहां कौन से विषय पूछ सकता हूं] (http://stackoverflow.com/help/on-topic) देखें। शायद [सुपर उपयोगकर्ता] (http://superuser.com/) या [यूनिक्स और लिनक्स स्टैक एक्सचेंज] (http://unix.stackexchange.com/) पूछने के लिए एक बेहतर जगह होगी। – jww