2012-09-16 12 views
10

कितने प्रोसेसर कोर करता है जिज्ञासा से बाहर मैं जानना चाहता हूं कि .NET कार्य शेड्यूलर कितने प्रोसेसर कोर का समर्थन करता है।.NET कार्य शेड्यूलर समर्थन

विंडोज सर्वर 2012 640 कोर तक का समर्थन करता है। था (है) .NET 64 तक सीमित है या क्या यह सभी उपलब्ध कोर का उपयोग करेगा?

उत्तर

10

.NET सभी कोर का समर्थन करता है। MSDN Parallel Extensions Forum में Stehphen Toub से उत्तर:

डिफ़ॉल्ट TPL TaskScheduler लक्ष्य नेट ThreadPool। डिफ़ॉल्ट रूप से, पूल एक processor group तक सीमित है, और इस प्रकार 64 कोर तक है। हालांकि, .NET 4.5 में आप <Thread_UseAllCpuGroups enabled="true"/> ध्वज सेट कर सकते हैं।जब आपके कंप्यूटर में एकाधिक सीपीयू समूह होते हैं, तो इस तत्व को सक्षम करने से रनटाइम केवल एक तक सीमित होने के बजाय सभी CPU समूहों में प्रबंधित थ्रेड वितरित करने का कारण बनता है, और इस प्रकार डिफ़ॉल्ट शेड्यूलर ओएस का समर्थन करने वाले किसी भी लक्ष्य को लक्षित कर सकता है। (GCCpuGroup को इस सेटिंग को प्रभावी होने के लिए भी सक्षम किया जाना चाहिए।)

+1

' 'हमारे लिए 2s/16c/32T मशीन पर .NET 4.6.2 के साथ सर्वर 2016 पर काम नहीं करता है। (हाँ, हमने पूरा सेटअप किया:' ') – mbx

2

CLR via C#, 3rd ed. के अनुसार, अध्याय 25 थ्रेड मूल बातें:

आज, CLR [...] केवल 64 कोर के लिए जब पर 64-बिट Windows चल रहा है उपयोग कर सकते हैं। [... एम] विंडोज़ के 32-बिट संस्करण पर चलने पर प्रबंधित अनुप्रयोग 32 कोर तक का उपयोग कर सकते हैं।

पुस्तक 2010 में लिखा गया था, तो यह नेट 4.0 के लिए प्रासंगिक जानकारी और Windows Server 2008 R2 शामिल है, लेकिन मुझे नहीं लगता कि नेट 4.5 इस संबंध में कुछ भी बदल सकते हैं। संपादित करें: ऐसा लगता है कि नेट 4.5 वास्तव में इसे बदल चुका है, पीटर मीनल के जवाब स्टीफन टब का हवाला देते हुए देखें।

+0

मैंने पुस्तक को पढ़ने के बाद मेरे प्रश्न से पूछा कि क्या आप सोच रहे हैं कि चीजें .NET 4.5 के साथ बदल सकती हैं या नहीं। यह मेरे लिए अजीब लग रहा है कि .NET जैसे एक महत्वपूर्ण ढांचे में ओएस का समर्थन करने वाले कोर की पूर्ण संख्या का उपयोग करने की अनुमति नहीं है। –

+0

मुझे लगता है कि 64 से अधिक कोर वाले सर्वर अभी भी बहुत दुर्लभ हैं और यदि आपके पास कोई है, तो शायद आप प्रदर्शन के बारे में बहुत अधिक परवाह करते हैं, इसलिए आपको .NET का उपयोग करने की संभावना नहीं है। इसके कारण, मुझे लगता है कि अधिक कोर का समर्थन प्राथमिकता नहीं था। – svick

+0

32 कोर और 32 जीबी के साथ एक मुख्य बोर्ड 2500 € से कम लागत। शायद .NET में 64 कोर से अधिक का समर्थन नहीं करने के पीछे एक तर्क है जिसे मैं अवगत नहीं हूं। मैंने अभी टीपीएल के साथ खेलना शुरू कर दिया और चीजों के लिए एक महसूस करने की कोशिश की। –

2

एरिक Lippert तक (source)

CLR 4.0 का बीटा 1 के लिए, TPL के लिए डिफ़ॉल्ट अनुसूचक CLR थ्रेड पूल

यह मोटे तौर पर मतलब यह है कि हो जाएगा काम एक फीफो कतार में आता है और प्रत्येक कोर वर्कलोड आइटम को हटा देता है। दूसरे शब्दों में, अब सीएलआर थ्रेडपूल का समर्थन करने वाले कोर की संख्या के लिए कोई निश्चित ऊपरी सीमा नहीं है। यह ऊपरी सीमा अन्य पार्टियों - ओएस, हार्डवेयर और सीपीयू प्लेटफॉर्म द्वारा लागू की जाती है।

एक पूल में धागे की डिफ़ॉल्ट संख्या (this answer प्रति)

  • 1023 फ्रेमवर्क 4.0 (32-बिट वातावरण)
  • फ्रेमवर्क 4.0 में 32768 (64-बिट वातावरण)
  • में फ्रेमवर्क 3.5
  • कोर प्रति 25 में प्रति कोर 250 फ्रेमवर्क में 2,0

कौन सा तकनीकी रूप से समर्पित कोर पर कई समांतर निष्पादन की अनुमति देता है।

नोट इसका मतलब यह नहीं है कि किसी भी समय पर, पूल में कई धागे हैं। सीएलआर और ओएस आम तौर पर उपयोग किए जाने वाले संसाधनों को रिहा करने के लिए पूल में धागे की संख्या को धीरे-धीरे कम करने का प्रयास करते हैं।

+2

लेकिन यह वास्तव में उत्तर नहीं देता है कि उन सभी धागे द्वारा कितने * कोर * का उपयोग किया जा सकता है। – svick