রুট-অধিকার ছাড়াই পারফেক্ট চালান


26

আমি 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 " পারফেক্ট_ভেন্ট_উপেন ()" অস্বীকার করা এবং "অ্যান্ড্রয়েড এবং ডেবিয়ান" এ সক্ষম করা হয়েছে (এছাড়াও lkml.org/lkML/2016/1/11/587 বাগ.লাঞ্চপ্যাড। নেট / বাগ / 1612790 debian.org/security/2017/dsa-3791 )
osgx

1
@osgx: আমার জন্য ভৌতিক স্তর 3 নিয়ে আপনার পরামর্শটি কার্যকর হয় না, এখনও আমি এটি ব্যবহারের অনুমতি পাচ্ছি না।
মার্টিন উয়েডিং

উত্তর:


36

লিখিতযোগ্য ফাইলগুলিতে /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 দেখুন ।


11
পুনরায় বুট চালিয়ে যাওয়ার জন্য:sudo sh -c 'echo kernel.perf_event_paranoid=1 > /etc/sysctl.d/local.conf'
মারসিও

1
উত্তরে মন্তব্য যুক্ত করুন, দয়া করে
Leos313

1
@ Leos313 সম্পন্ন হয়েছে। অনুস্মারক জন্য ধন্যবাদ।
meuh
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.