मैं सैद्धांतिक सीमाओं में रुचि रखता हूं, शायद सीपीयू की बड़ी संख्या वाले सिस्टम के उदाहरणों के साथ।
मैं सैद्धांतिक सीमाओं में रुचि रखता हूं, शायद सीपीयू की बड़ी संख्या वाले सिस्टम के उदाहरणों के साथ।
जवाबों:
कम से कम 2048 अभ्यास में। एक ठोस उदाहरण के रूप में, SGI अपने यूवी सिस्टम को बेचता है, जो 256 सॉकेट (2,048 कोर) और 16TB साझा मेमोरी का उपयोग कर सकता है, जो सभी एक कर्नेल के तहत चल रहे हैं। मुझे पता है कि कम से कम कुछ सिस्टम हैं जो इस कॉन्फ़िगरेशन में बेचे गए हैं।
SGI के अनुसार:
Altix UV पूरी तरह से अनमॉडिफाइड लिनक्स चलाता है, जिसमें नोवेल और रेड हैट दोनों के मानक वितरण शामिल हैं।
यह लॉन्चपैड को उबंटू के बारे में कहना है, इसलिए मुझे लगता है कि यह दूसरों पर लागू होता है:
1.Intel x86:
Maximum CPUs: 32 (including logical CPUs)
Maximum memory: 64GB
Maximum filesize: 8TB
Maximum filesystem size (ext3) 16TB
Maximum per-process virtual address space: 4GB
2.AMD64/EM64T:
Maximum CPUs: 64
Maximum memory: 128GB
Maximum filesize: 8TB
Maximum filesystem size (ext3): 16TB
Maximum per-process virtual address space: N/A
These are standard max limitations whereas Linux cluster systems can scale up to 1024 CPU's.
जो कि x86 और x86_64 के लिए क्रमशः 32 या 64 सीपीयू है।
रैदाट वही कहते हैं, लेकिन प्रबंधन के अनुकूल तालिका में । Redhat EL6 x86 के लिए 32, या x86_64 के लिए 128 या 4096 CPUs कोर कर सकता है।
CONFIG_NR_CPUS
अगर CONFIG_MAXSMP
ये सक्षम है तो ये सीमाएं बढ़ाई जा सकती हैं ।
X86_64 लिनक्स कर्नेल एकल सिस्टम छवि में अधिकतम 4096 प्रोसेसर थ्रेड्स को संभाल सकता है। इसका मतलब यह है कि हाइपर थ्रेडिंग सक्षम होने के साथ, प्रोसेसर कोर की अधिकतम संख्या 2048 है। हां 2048 से अधिक प्रोसेसर कोर वाले कंप्यूटर हैं; लेकिन ये क्लस्टर के रूप में चलते हैं जहां कई लिनक्स कर्नेल सहयोग करते हैं, एक उच्च गति इंटरकनेक्ट से जुड़े होते हैं, आमतौर पर एक इनफिनिबेंड कपड़े।
सबसे वर्तमान कर्नेल ३.१३ से, ~ / आर्च / x86 / कोन्कफिग में:
config NR_CPUS
---help---
This allows you to specify the maximum number of CPUs which this
kernel will support. If CPUMASK_OFFSTACK is enabled, the maximum
supported value is 4096, otherwise the maximum value is 512. The
minimum value which makes sense is 2.
This is purely to save memory - each supported CPU adds
approximately eight kilobytes to the kernel image.
अपडेट: नए कर्नेल पर यह आर्किटेक्चर विशिष्ट है - उदाहरण के लिए 4.15 x86_64 पर आपको सही परिस्थितियों में NR_CPUS को 8192 पर सेट करने की अनुमति मिलती है जबकि 32 बिट आर्म 32 पर रुक जाता है ।
यह बच्चा 10,368 चलाता है!
थ्रेड मल्टीटास्किंग मॉडल और थ्रेड मैनेजमेंट स्कीम के लिए व्यक्तिपरक हैं। अगर मैं सही तरीके से याद करूं तो Gdt of Intel based सिस्टम का उपयोग linux में किया जाता है। विचार यह है कि इसमें अधिकतम आकार में 8192 धागे होने की संभावना है। यह मानते हुए कि सिस्टम थ्रेड्स को प्रबंधित करने के लिए gdt का उपयोग कर रहा है। 32 बिट मशीनों पर टास्क स्विचिंग का प्रबंधन किया जाता है और 32 और 64 बिट मशीनों पर वैक्टर में जीडीटी प्रविष्टियाँ होनी आवश्यक हैं। यह सुनिश्चित नहीं है कि यह कैसे होता है लेकिन एक ही मुखरता को प्राप्त करना होता है। टास्क स्विचिंग कॉन्सेप्ट्स टास्किंग मॉडल में GDT को इट्रिएट करते हैं।
यदि आप जीडीटी योजना से बाहर निकलते हैं, तो आप निश्चित रूप से उस तक पहुंच सकते हैं जो आपके पास है जब आपके पास मेमोरी है, प्रत्येक थ्रेड के लिए, एक पेज स्टैक फ्रेम, थ्रेड के लिए पेज कोड बेस और हीप स्पेस का पेज। आप यह नहीं मान सकते हैं कि आपके पास कोड या हीप का एक पृष्ठ है, जो यादृच्छिक चर है। आम तौर पर प्रत्येक धागे के लिए दो स्टैक फ्रेम होते हैं, एक धागे द्वारा बनाए रखा जाता है और एक लिनक्स कर्नेल द्वारा बनाए रखा जाता है। आप स्वैप स्थान की आभासी मेमोरी अवधारणाओं को जोड़ते हैं और मॉडल पानी से बाहर निकल जाता है लेकिन यह थ्रेड प्राथमिकता के बारे में है।
इसके अलावा:
यदि आप UV SGI पर नियंत्रण के रूप में लिनक्स का उपयोग कर रहे हैं, और आप अपने साथ 4.15 कर्नेल पर Bladecenters का उपयोग कर रहे हैं, तो आप मोमेंट पर उपयोग कर सकते हैं:
4096 ब्लेड रैक। 1 रैक 1024 कोर x 4096 करोड़ का उपयोग कर। यह विन्यास उस समय होगा जब लिनक्स के तहत उच्चतम कोर का उपयोग किया जाएगा। आप Red Hat के अंतर्गत सभी कोर को नियंत्रित कर सकते हैं।