64 से अधिक प्रोसेसर वाले विंडोज 2012 सर्वर पर अचानक काम करने के कारण, हमें कई प्रोसेसर समूहों के साथ संघर्ष करने के लिए मजबूर होना पड़ता है।

हमारे सेटअप के साथ, प्रक्रियाओं को शुरू करना और लक्ष्य प्रोसेसर समूह को निर्दिष्ट करना मुश्किल होगा, इसलिए हम सी # या सी ++ में कई प्रक्रियाओं के प्रोसेसर समूह को बदलने का लक्ष्य बना रहे हैं।

यह देखते हुए कि हम प्रक्रिया हैंडल की सूची प्राप्त कर सकते हैं, इसके लिए क्या आवश्यक है:

  1. प्रोसेसर समूह प्राप्त करें कि उनमें से प्रत्येक प्रक्रिया चल रही है

  2. उन प्रक्रियाओं के प्रोसेसर समूह मानों के एक निश्चित सेट को अपडेट करें कि वे किस समूह पर चल रहे हैं।

1
evpo 18 अप्रैल 2018, 08:02

2 जवाब

सबसे बढ़िया उत्तर

मैं इस संबंधित एमएसडीएन फोरम उत्तर को उद्धृत करना चाहता हूं: 128 प्रोसेसर वाले सिस्टम पर प्रोसेस एफ़िनिटी

सिद्धांत रूप में आप एक छोटा ड्राइवर बना सकते हैं जो उपयोग करता है आत्मीयता को बदलने के लिए KeSetSystemGroupAffinityThread। मैं कहता हूँ सिद्धांत क्योंकि साइन यह एक नई कॉल और सीमित दस्तावेज है काम नहीं कर सकता। बेशक एक बार जब आप ऐसा कर लेते हैं तो सवाल उठता है कि क्या आवेदन काम करेगा, मुझे लगता है कि आपने पढ़ा है http://download। microsoft.com/download/a/d/f/adf1347d-08dc-41a4-9084-623b1194d4b2/MoreThan64proc.docx कई समूहों और अनुप्रयोगों के बारे में इसकी चेतावनियों के साथ जो नहीं थे उनका फायदा उठाने के लिए लिखा है।

इसे भी देखें: C++ में SetProcessAffinityMask का उदाहरण उपयोग?

0
wp78de 18 अप्रैल 2018, 08:43

जब कोई प्रक्रिया बनाई जाती है तो उसे विंडोज़ द्वारा एक समूह को सौंपा जाता है। ऐसा नहीं लगता कि इसे सीधे तौर पर बदला जा सकता है।

प्रोसेसर समूहों की सूची प्राप्त करने के लिए एक प्रक्रिया संबंधित है (एक से अधिक हो सकती है), GetProcessGroupAffinity

किसी प्रक्रिया के लिए समूह को अपडेट करने के लिए, आपको SetThreadGroupAffinity। यह स्पष्ट रूप से सबसे आसान होगा जब यह अभी शुरू हो रहा है और इसमें केवल एक धागा है।

1
1201ProgramAlarm 18 अप्रैल 2018, 08:34