2012-02-20 7 views
54

में प्रक्रियाओं की अधिकतम संख्या लिनक्स सिस्टम में संभव प्रक्रियाओं की संख्या की अधिकतम सीमा क्या है? हम इसे कैसे पा सकते हैं?लिनक्स

+0

स्टैक ओवरफ़्लो प्रोग्रामिंग और विकास प्रश्नों के लिए एक साइट है। यह प्रश्न ऑफ़-विषय प्रतीत होता है क्योंकि यह प्रोग्रामिंग या विकास के बारे में नहीं है। सहायता केंद्र में [मैं यहां कौन से विषय पूछ सकता हूं] (http://stackoverflow.com/help/on-topic) देखें। शायद [सुपर उपयोगकर्ता] (http://superuser.com/) या [यूनिक्स और लिनक्स स्टैक एक्सचेंज] (http://unix.stackexchange.com/) पूछने के लिए एक बेहतर जगह होगी। – jww

उत्तर

45

आपका गिरी procfs में यह जानकारी निर्यात कर लेना चाहिए:

cat /proc/sys/kernel/pid_max 

यह अनूठा प्रक्रिया पहचानकर्ता आपके सिस्टम का समर्थन कर सकते की अधिकतम संख्या है।

चूंकि यह एक फ़ाइल है, /proc/sys/kernel/pid_max किसी भी सक्षम प्रोग्रामिंग भाषा से निरीक्षण किया जा सकता है।

+2

यह सच हो सकता है, लेकिन अधिकांश अच्छे डिस्ट्रोज़ में यह /etc/security/limits.conf द्वारा सीमित है जो उपयोगकर्ता/समूह/डोमेन आधार पर अधिकतम प्रक्रियाओं को फ़िल्टर कर सकता है। – AoeAoe

+1

'ulimit' अधिकतम प्रति-उपयोगकर्ता प्रक्रियाओं को अधिकतम पिड से कम तक सीमित कर सकता है, और कुछ गुगलिंग से, खेल में अन्य सीमाएं भी हैं (लेकिन मुझे पुष्टि करने के लिए कोई निश्चित स्रोत नहीं मिला, जैसे एलकेएमएल या एक प्रसिद्ध देव इसे पोस्ट कर रहा है)। – Kitsune

+1

'int fd = read ("/proc/sys/kernel/pid_max ");' मान्य नहीं है, और न ही यह किसी अन्य फ़ाइल के लिए मान्य है। – immibis

20

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 की अधिकतम सीमा है।

+3

ने अभी 'sysctl kernel.pid_max = 4194304' की कोशिश की और यह सफल हुआ (लिनक्स 3.10.25) –

+0

@ zed_0xff जब तक आप जानते हों कि परिवर्तन लगातार नहीं है यह सब अच्छा है! –

+0

'printf '% x \ n' 4194303'' 3fffff' – Tino

16

आपके प्रश्न का संक्षिप्त उत्तर: लिनक्स सिस्टम में संभव प्रक्रिया की संख्या असीमित है।

लेकिन प्रति उपयोगकर्ता प्रक्रिया की संख्या पर एक सीमा है (रूट को छोड़कर जिसकी कोई सीमा नहीं है)।

और आप नीचे दिए गए आदेश ("अधिकतम उपयोगकर्ता प्रक्रियाओं" के लिए एपोजिट) ​​के साथ अपनी उपयोगकर्ता सीमाएं देख सकते हैं।

$ 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 में प्रवेश नीचे बनाने की जरूरत है
+0

कभी-कभी परिवर्तन के बाद परिवर्तन को प्रभावी रूप से प्राप्त करने के लिए पुनरारंभ करने की आवश्यकता होती है। –

+1

यह पूछता है कि संख्या 'असीमित' है, क्योंकि अल्लिमिट का मतलब है कि इसमें सीमा सेट (असीमित) नहीं है, लेकिन शेड्यूलर की अनुमति की प्रक्रियाओं की संख्या असीमित नहीं है ... अनंत में। उलिमिट सवाल नहीं था। – hpavc

+0

कर्नेल में 4mln की हार्ड सीमा है, मुझे लगता है कि –

5

kernel.pid_max एक सीमित कारक है, लेकिन कम से कम महत्वपूर्ण है kernel.threads-max। यह ध्यान देने योग्य है कि प्रत्येक उपयोगकर्ता के लिए डिफ़ॉल्ट nproc ulimit कर्नेल। थ्रेड-अधिकतम दो से विभाजित है, और यह कि प्रत्येक थ्रेड उपयोगकर्ता की nproc सीमा की ओर गिना जाता है। इस प्रकार, "ps -u $ USER" ऐसा प्रतीत होता है कि उपयोगकर्ता ने अपनी एनप्रोक सीमा समाप्त नहीं की है, लेकिन "ps -L -u $ USER" एक बहुत अलग कहानी बता सकता है।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^