मैं लिनक्स पर एक प्रक्रिया के प्रोसेसर आत्मीयता को कैसे सेट कर सकता हूं?


29

मैं लिनक्स पर एक प्रक्रिया के प्रोसेसर आत्मीयता को कैसे सेट कर सकता हूं?

जवाबों:


24

मैंने इसके लिए टास्कसेट का इस्तेमाल किया है। यदि आपके पास टास्किट स्थापित है, तो कुछ इस तरह है:

taskset -c 1,3 -p 45678

आईडी 45678 के साथ प्रक्रिया सेट करने के लिए cpus 1 और 3 के लिए एक आत्मीयता होगी।


1
एक गुमनाम संपादन ने सुझाव दिया कि कमांड के taskset -p -c 1,3 45678बजाय होना चाहिए taskset -c 1,3 -p 45678; यानी, -c 1,3यह एक मुखौटा विनिर्देश है और, जैसे, -pऔर के बीच रखा जाना चाहिए pid
जी-मैन का कहना है कि 'मोनिका'

7

प्रक्रिया के अंदर, कॉल होगा sched_setaffinity(), या pthreads सामान के लिए;pthread_setaffinity_np()

संबंधित नोट पर, यदि आप अपने प्रोग्राम के सीपीयू आत्मीयता के बारे में चिंता कर रहे हैं, तो यह ध्यान देने योग्य हो सकता है कि यह मेमोरी आवंटन कैसे कर रहा है। एक से अधिक नियंत्रक (यानी कई सीपीयू सॉकेट, प्रत्येक अपने स्वयं के साथ) से जुड़ी मेमोरी वाले सिस्टम में विभिन्न सीपीयू-मेमोरी जोड़े के बीच चर विलंबता और बैंडविड्थ होगा। आप NUMA आत्मीयता के साथ-साथ numactlकमांड या सिस्टम कॉल का उपयोग करना चाहते हैं, जिस पर वह काम करता है। मैंने जिस एक कार्यक्रम पर काम किया, उसमें से 10% प्रदर्शन में सुधार हुआ।


3

आपको schedutils(लिनक्स अनुसूचक उपयोगिताओं) को स्थापित करने की आवश्यकता है । मैंने इसका उपयोग अपने उबंटू डेस्कटॉप पर किया है।

एसएफ लिंक


1
taskset -c 1-3 ./a.out arg1 arg2

a.outप्रोसेसर 1, 2 या 3 (शून्य आधारित) पर दिए गए तर्कों और आत्मीयता के साथ प्रक्रिया को लॉन्च करता है।

यहां एक न्यूनतम सी परीक्षण कार्यक्रम है जो इसे कार्रवाई में देखने के लिए इस्तेमाल किया जा सकता है: https://stackoverflow.com/questions/10490756/how-to-use-sched-getaffinity-and-sched-setaffinity-in-linux-from -c / 50117787 # 50117787

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