Запускайте perf без root-прав


27

Я запускаю тестування debian за допомогою ядра 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 в моїй установці. На жаль, я не можу змінити цей файл навіть як root. Як я можу дозволити власному користувачеві користуватися perfбез прав sudo?

У мене є програма, яку я хотів би порівняти, яка не потребує root, і я не хочу запускати її як root, щоб орієнтувати її.


Чи perf stat -e cycles:uпрацює? Значення "3" perf_event_paranoidбуло додано в 2016 році 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 )
osgx

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/. Дивіться man sysctl.d .


12
Наполягати в перезавантаженнях:sudo sh -c 'echo kernel.perf_event_paranoid=1 > /etc/sysctl.d/local.conf'
Марчо

1
додайте коментар до відповіді, будь ласка
Leos313

1
@ Leos313 зроблено. дякую за нагадування.
meuh

@ Марсіо: Ви хочете додати до local.conf, чи не скорочуйте. Або пишіть на адресу/etc/sysctl.d/perf.conf
Пітер Кордес
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.