ओएस एक्स पर प्रोसेसर की आत्मीयता कैसे सेट करें?


17

आप मैकबुक प्रो पर स्नो लेपर्ड में प्रोसेसर आत्मीयता कैसे सेट करते हैं? मुझे पता है कि विंडोज में आप इसे टास्क मैनेजर में बदल सकते हैं।


2
<snarky-comment> OS X को वर्चुअल मशीन में चलाएँ, और वर्चुअल मशीन की आत्मीयता सेट करें </ snarky-comment>
zildjohn01

तुमने ऐसा क्यों करना चाहोगे? यह आमतौर पर एक बुरा विचार है जब तक आप पुराने कार्यक्रमों को चलाने की कोशिश नहीं कर रहे हैं जो इतनी बुरी तरह से कोडित हैं कि वे मल्टीकोर सिस्टम पर टूट जाते हैं।
jalf

2
@jalf: प्रोसेसर आत्मीयता प्रदर्शन में सुधार कर सकता है क्योंकि यह कुछ मामलों में कैश अमान्यकरण और ट्रैशिंग को कम करता है।

1
यह निराशाजनक है। लगता है कि मैक वास्तविक समय सॉफ्टवेयर विकास के लिए एक आदर्श मंच नहीं होगा।
इवान प्लाइस

1
@jweyrich QPI (इंटेल के NUMA) के साथ सीपीयू में मैक प्रो पर पसंद करता है , जहां सीपीयू आत्मीयता स्थापित करने से मेमोरी एफिशिएंसी डिसेबल हो जाती है और परफॉर्मेंस कम हो जाती है। हालांकि यह मोबाइल प्रोसेसर पर लागू नहीं होता है।
Jano

जवाबों:


14

OS X ने संस्करण 10.5 के बाद से थ्रेड एफिनिटी एपीआई का समर्थन किया है । यहां मैं जिस वेबपेज से जुड़ा हुआ हूं, उससे संबंधित कुछ प्रासंगिक सामग्री है।

आत्मीयता सेट

एक आत्मीयता सेट धागे का एक संग्रह है जो स्मृति संसाधनों को साझा करता है और एक L2 कैश साझा करना चाहता है। विशिष्ट आत्मीयता के सेट अलग-अलग समृद्धि का प्रतिनिधित्व करते हैं - अर्थात, एक अलग सेट से संबंधित थ्रेड्स को एक अलग L2 कैश का उपयोग करना चाहिए और इसलिए एक अलग तार्किक प्रोसेसर पर चलाया जाना चाहिए।

एक आत्मीयता सेट की पहचान एक "टैग" द्वारा की जाती है। थ्रेड्स को उस सेट की पहचान करने वाले टैग को असाइन करके एक विशेष आत्मीयता को सौंपा जाता है। एक धागा अधिकतम एक आत्मीयता के सेट पर हो सकता है; यह है, यह एक आत्मीयता टैग है।

डिस्टिक्ट एफिनिटी टैग सेट करने का प्रभाव

उदाहरण के लिए, अलग एल 2 कैश पर 2 थ्रेड चलाने के लिए एक आवेदन अलग आत्मीय टैग के साथ थ्रेड सेट करेगा। एक दोहरी कोर मशीन पर, इस आत्मीयता को प्रभावी रूप से अनदेखा किया जाएगा। हालांकि, 4-कोर मैकप्रो पर, शेड्यूलर अलग-अलग पैकेज पर थ्रेड चलाने की कोशिश करेगा। इसी तरह, 8-कोर मैकप्रो पर, अनुसूचक इन थ्रेड्स को अलग-अलग मर जाने पर चलाने की कोशिश करेगा (जो कि एक ही भौतिक सीपीयू पैकेज में हो भी सकता है और नहीं भी)।

उदाहरण उपयोग

एक अनुप्रयोग जो प्रत्येक उपलब्ध प्रोसेसर पर एक थ्रेड रखना चाहता है, वह निम्न कार्य करेगा:

  • सिस्टम पर sysctl (3) का उपयोग करके प्रोसेसर की संख्या प्राप्त करें।
  • उस थ्रेड की संख्या बनाएँ।
  • प्रत्येक धागे को एक अलग आत्मीयता टैग के साथ सेट करें।
  • सभी सूत्र प्रारंभ करें।

डिफ़ॉल्ट आत्मीयता की नीति वाले धागे किसी भी प्रोसेसर पर अधिक स्वतंत्र रूप से अनुसूचित होंगे। इन थ्रेड्स को अधिमानतः एक निष्क्रिय प्रोसेसर पर चलाने के लिए माइग्रेट किया जाएगा। आत्मीयता के साथ टैग जगह में बने रहेंगे।

कोड लिस्टिंग के लिए स्रोत से परामर्श करें, और माता-पिता और बच्चे की प्रक्रियाओं के बीच संबंध टैग के बंटवारे के बारे में जानकारी प्राप्त करें, सीपीयू कैश कॉन्फ़िगरेशन प्राप्त करें, और बहुत कुछ।


क्या इस एपीआई के अतिरिक्त कमांडलाइन उपयोगिता है?
विक्टर आइजखौट

11

http://developer.apple.com/mac/library/releasenotes/Performance/RN-AffinityAPI/

Mac OS X उन इंटरफेस को निर्यात नहीं करता है जो प्रोसेसर की पहचान करते हैं या थ्रेड प्लेसमेंट को नियंत्रित करते हैं-प्रोसेसर बाइंडिंग को स्पष्ट धागा समर्थित नहीं है । इसके बजाय, कर्नेल सभी थ्रेड प्लेसमेंट का प्रबंधन करता है। अनुप्रयोगों को उम्मीद है कि अनुसूचक, ज्यादातर परिस्थितियों में, कैश आत्मीयता के संबंध में एक अच्छा प्रोसेसर प्लेसमेंट का उपयोग करके अपने धागे चलाएगा।


2
OS X ने संस्करण 10.5 के बाद से थ्रेड एफिनिटी एपीआई का समर्थन किया है। विवरण के लिए मेरा उत्तर देखें।
शून्य-सूचक

4

अब तक, XNU (1504.3.12) अनुसूचक प्रक्रियाओं और न ही थ्रेड्स के लिए प्रोसेसर संबंध को लागू नहीं करता है।

तो MacOSX ऐसा करने के लिए कोई साधन प्रदान नहीं करता है।


2

से http://images.apple.com/macosx/docs/OSX_for_UNIX_Users_TB_July2011.pdf

• कुशल कर्नेल धागे। प्रत्येक POSIX थ्रेड को एक विशेष सीपीयू पर पंक्तिबद्ध किया जाता है, जो लॉक कॉन्टैक्शन को कम करते हुए प्रोसेसर की आत्मीयता और मापनीयता में सुधार करता है। थ्रेड्स POSIX (1c) के अनुरूप हैं, जिसमें रद्दीकरण और साझा म्यूटेक्स के लिए समर्थन शामिल है।

यह मेरे लिए विज्ञापन की तरह दिखता है, मेरा आईमैक रनिंग लायन उस समय का सम्मान करता है, लेकिन यह कोर के लिए प्रक्रिया नहीं करता है।

मुझे वैसे भी डार्विन के लिए प्रक्रिया संबंध को नियंत्रित करने के लिए कोई एपीआई नहीं मिला।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.