Kök hakları olmadan mükemmel çalışın


27

4.1 çekirdeği ve perfaracın 4.1 sürümü ile debian test çalıştırıyorum . Bu sürümde, normal kullanıcıların bu araçtan veri toplamasını önlemek için bir tür koruma eklediler. Yani perfnormal kullanıcı olarak çalıştırmak bu hatayı verecektir:

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_paranoidkurulumumda 3 tane var. Ne yazık ki bu dosyayı kök olarak bile değiştiremiyorum. Kendi kullanıcımın perfsudo hakları olmadan kullanmasına nasıl izin verebilirim ?

Kök gerektirmeyen kıyaslama yapmak istediğim bir uygulama var ve kıyaslama yapmak için root olarak çalıştırmak istemiyorum.


Mu perf stat -e cycles:uiş? Arasında "3" değeri perf_event_paranoid2016 yılında eklenmiştir lwn.net/Articles/696216 "izin vermeme perf_event_open ()" ve ayrıca "Android ve Debian" (etkinleştirilmiştir lkml.org/lkml/2016/1/11/587 bugs.launchpad. net / hatalar / 1612790 debian.org/security/2017/dsa-3791 )
osgx

1
@osgx: Benim için paranoyak seviye 3 ile öneriniz çalışmıyor, hala kullanmama izin verilmiyor.
Martin Ueding,

Yanıtlar:


41

/procYazılabilir dosyalar genellikle bunlara bir değer yansıtılarak değiştirilir. Denemelisin:

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

Altındaki dosyalar /proc/sys/da kolay erişim için sysctl komutuna sahiptir, bunun yerine şunları yapabilirsiniz:

sudo sysctl -w kernel.perf_event_paranoid=1

( -wfor yazma isteğe bağlı gibi görünüyor olsa da ). Bunun önyükleme zamanında yapıldığından emin olmak için kendi /etc/sysctl.d/99-mysettings.confdosyanızı satırla oluşturun

kernel.perf_event_paranoid=1

/run/sysctl.d/Ve içindeki mevcut dosyaları geçersiz kılmayacak bir dosya adı seçin /usr/lib/sysctl.d/. Bakınız insan sistemi . D.


12
Yeniden başlatmalarda devam etmek için:sudo sh -c 'echo kernel.perf_event_paranoid=1 > /etc/sysctl.d/local.conf'
Márcio


1
@ Leos313 bitti. hatırlatma için teşekkürler.
meuh

Márcio @: Sen istediğiniz eklemek için local.conf, kesmek değil. Veya yazın/etc/sysctl.d/perf.conf
Peter Cordes
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.