क्या मुझे उपयोगकर्ता के 'perf' टूल को चलाने के लिए रूट (व्यवस्थापक) की अनुमति की आवश्यकता है? (लिनक्स कर्नेल में पूर्ण घटनाएँ सक्षम हैं)


25

क्या मुझे perfसिस्टम एडमिनिस्ट्रेटर (रूट) के रूप में यूजरस्पेस टूल को चलाने की आवश्यकता है , या क्या मैं इसे एक साधारण उपयोगकर्ता के रूप में चला सकता हूं (या कम से कम कुछ उपकमांड)?


2
यूनिक्स कार्यक्रम जो अनुमतियों की कमी के लिए क्या करने की आवश्यकता नहीं कर सकते हैं वे आमतौर पर एक त्रुटि फेंक देंगे यदि वे अपना काम नहीं कर सकते हैं। इसे चलाएं और देखें!
कालेब

1
मैं यह सवाल तय करने के लिए कह रहा हूं कि क्या यह ($ $ में सामान्य उपयोगकर्ता के रूप में) स्थापित करने की कोशिश कर रहा है, perfउपकरण का उपयोगकर्ता भाग (जो कि / गैर-तुच्छ हो सकता है)।
जैकब नर

Ubuntu में FYI पैकेज perfमें linux-toolsहै, इसलिए perfवहां स्थापित करना सरल है।
जकुब नारबस्की 16

1
@ JakubNar Jakbski: सिवाय अगर यह आपकी खुद की मशीन नहीं है और व्यवस्थापक पैकेज स्थापित करने के लिए अनिच्छुक हैं।
मार्टिन उडिंग

जवाबों:


33

perfरूट किए बिना आप क्या कर सकते हैं यह sysctl सेटिंग पर निर्भर करता है ।kernel.perf_event_paranoid

  • kernel.perf_event_paranoid= 2: आप कोई माप नहीं ले सकते। perfउपयोगिता अब भी साथ मौजूदा रिकॉर्ड का विश्लेषण करने के लिए उपयोगी हो सकता है perf ls, perf report, perf timechartया perf trace
  • kernel.perf_event_paranoid= 1: आप के साथ एक कमांड का पता लगा सकते हैं , perf statया perf recordकर्नेल प्रोफाइलिंग डेटा प्राप्त कर सकते हैं ।
  • kernel.perf_event_paranoid= 0: आप perf statया के साथ एक कमांड का पता लगा सकते हैं perf record, और CPU ईवेंट डेटा प्राप्त कर सकते हैं ।
  • kernel.perf_event_paranoid= -1: आपको कर्नेल ट्रेसपॉइंट्स के लिए कच्ची पहुंच मिलती है (विशेष रूप से, आप mmapद्वारा बनाई गई फ़ाइल कर सकते हैं perf_event_open, मुझे नहीं पता कि इसके निहितार्थ क्या हैं)।

1
अच्छा लगा। cat /proc/sys/kernel/perf_event_paranoidरिटर्न 1, इसलिए ऐसा लगता है कि मैं कम से कम कुछ माप लेने में सक्षम
होऊंगा

2
@ याकूब: मैं जो समझता हूं, कर्नेल घटनाओं से आप कॉल को विभिन्न कर्नेल कार्यों में देख सकते हैं। सीपीयू इवेंट सीपीयू में काउंटर हैं जो आपको बताते हैं कि मेमोरी में किसी विशेष स्थान को कितनी बार हिट किया गया था। मैंने उनका कभी उपयोग नहीं किया है, इसलिए मैं आपको उनके बारे में अधिक नहीं बता सकता; LWN के विषय पर काफी कुछ लेख है, और यह अभी भी विकसित हो रहा है।
गिल्स एसओ-

4
पैरानॉयड = 2 के साथ, आप अभी भी उपयोगकर्ता-स्पेस में अपना खुद का कोड प्रोफाइल कर सकते हैं (जैसे perf stat awk 'BEGIN{for(i=0;i<10000000;i++){}}'सटीक उपयोगकर्ता-स्पेस चक्र और इंस्ट्रक्शन काउंट दिखाएगा, और आप इसके लिए काउंट भी प्राप्त कर सकते हैं uops_issued.any ), लेकिन आपको कोड के लिए काउंट्स नहीं मिलते हैं जो सिस्टम कॉल / इंटरप्ट के दौरान चला। इसलिए रिपोर्ट की गई सीपीयू आवृत्ति (चक्र / समय) कर्नेल में बिताए गए समय के कारण वास्तविक से कम से कम थोड़ी कम है। यह भी देखें कि कौन सा प्रतिबंध perf_event_paranoid == 1 वास्तव में x86 perf पर डाल रहा है?
पीटर कॉर्ड्स

"सीपीयू इवेंट्स" का अर्थ है, प्रति-प्रक्रिया / थ्रेड के बजाय पूरे कोर पर सब कुछ प्रोफाइलिंग करना। यानी पैरानॉइड = 1 या उच्चतर आपको अन्य उपयोगकर्ता के कोड को प्रोफाइल करने से रोकता है, और 1 केवल आपको अपनी प्रक्रिया (सिस्टम कॉल) द्वारा कोड किए गए कर्नेल कोड को प्रोफाइल करने देता है
पीटर कॉर्ड्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.