जड़-अधिकारों के बिना पूर्ण चलाओ


27

मैं perfउपकरण के 4.1 कर्नेल और संस्करण 4.1 के साथ डेबियन परीक्षण चला रहा हूं । इस संस्करण में उन्हें लगता है कि सामान्य उपयोगकर्ताओं को उस टूल से डेटा एकत्रित करने के लिए किसी प्रकार की सुरक्षा दी गई है। इसलिए perfसामान्य उपयोगकर्ता के रूप में चलना यह त्रुटि देगा:

perf stat ls
Error:
You may not have permission to collect stats.
Consider tweaking /proc/sys/kernel/perf_event_paranoid:
 -1 - Not paranoid at all
  0 - Disallow raw tracepoint access for unpriv
  1 - Disallow cpu events for unpriv
  2 - Disallow kernel profiling for unpriv

perf_event_paranoidमेरी स्थापना में 3 शामिल हैं। दुर्भाग्य से मैं उस फाइल को रूट के रूप में भी नहीं बदल सकता। मैं अपने स्वयं के उपयोगकर्ता को perfबिना सूडो अधिकारों के उपयोग की अनुमति कैसे दे सकता हूं ?

मेरे पास एक एप्लिकेशन है जिसे मैं बेंचमार्क करना चाहूंगा जिसे रूट की आवश्यकता नहीं है और मैं इसे बेंचमार्क के लिए रूट के रूप में चलाना नहीं चाहता।


perf stat -e cycles:uकाम करता है ? perf_event_paranoid2016 में "3" मूल्य जोड़ा गया lwn.net/Articles/696216 "perf_event_open ()" को अस्वीकार करना और "Android और Debian" (भी lkml.org/lkml/2016/1/11/587 bugs.launchpad में सक्षम किया गया) । नेट / बग्स / 1612790 debian.org/security/2017/dsa-3791 )
ओस्गक्स

1
@osgx: मेरे लिए पैरानॉयड स्तर 3 के साथ आपका सुझाव काम नहीं करता है, फिर भी मुझे इसका उपयोग करने की अनुमति नहीं है।
मार्टिन उडिंग

जवाबों:


41

/procउस में फ़ाइलें माननीय हैं आमतौर पर उनमें एक मान गूँज कर बदला जाता है। तुम्हें कोशिश करनी चाहिए:

sudo sh -c 'echo 1 >/proc/sys/kernel/perf_event_paranoid'

के अंतर्गत फ़ाइलें /proc/sys/भी है sysctl ताकि आप के बजाय कर सकते हैं, आसान पहुँच के लिए आदेश:

sudo sysctl -w kernel.perf_event_paranoid=1

(हालांकि लिखने के -wलिए वैकल्पिक लगता है)। यह सुनिश्चित करने के लिए कि बूट समय पर लाइन के साथ अपनी फ़ाइल बनाएं/etc/sysctl.d/99-mysettings.conf

kernel.perf_event_paranoid=1

एक फ़ाइल नाम में मौजूदा फ़ाइलों पर हावी नहीं होगा चुनें /run/sysctl.d/और /usr/lib/sysctl.d/आदमी sysctl.d देखें ।


12
रिबूट के पार बने रहने के लिए:sudo sh -c 'echo kernel.perf_event_paranoid=1 > /etc/sysctl.d/local.conf'
मेरिको

1
कृपया टिप्पणी को उत्तर में जोड़ें
Leos313

1
@ Leos313 किया। याद दिलाने के लिए शुक्रिया।
meuh

@ Márcio: आप करना चाहते हैं संलग्न करने के लिए local.conf, काट-छांट नहीं। या लिखिए/etc/sysctl.d/perf.conf
पीटर कॉर्ड्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.