รัน perf โดยไม่มีสิทธิ์รูท


27

ฉันใช้การทดสอบเดเบียนกับเคอร์เนล 4.1 และเวอร์ชัน 4.1 ของperfเครื่องมือ ในรุ่นนี้ดูเหมือนว่าพวกเขาได้เพิ่มการป้องกันบางอย่างเพื่อป้องกันไม่ให้ผู้ใช้ปกติรวบรวมข้อมูลจากเครื่องมือนั้น ดังนั้นการทำงาน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โดยไม่มีสิทธิ์ sudo ได้อย่างไร

ฉันมีแอปพลิเคชันที่ฉันต้องการเปรียบเทียบซึ่งไม่จำเป็นต้องรูทและฉันไม่ต้องการเรียกใช้เป็นรูทเพื่อทำการเปรียบเทียบ


ไม่perf stat -e cycles:uทำงานหรือไม่ perf_event_paranoidเพิ่มค่า "3" ของในปี 2016 lwn.net/Articles/696216 "ไม่อนุญาต perf_event_open ()" และเปิดใช้งานใน "Android และ Debian" (เช่นlkml.org/lkml/2016/1/11/587 บัก .launchpad net / bugs / 1612790 debian.org/security/2017/dsa-3791 )
osgx

1
@osgx: สำหรับฉันที่มีระดับหวาดระแวง 3 ข้อเสนอแนะของคุณไม่ทำงานฉันยังคงไม่ได้รับอนุญาตให้ใช้
Martin Ueding

คำตอบ:


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'
Márcio

1
เพิ่มความคิดเห็นในคำตอบโปรด
Leos313

1
ทำเสร็จแล้ว @ Leos313 ขอบคุณสำหรับคำเตือน
meuh

@ Márcio: คุณต้องการที่จะผนวกจะlocal.confไม่ตัด หรือเขียนถึง/etc/sysctl.d/perf.conf
Peter Cordes
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.