Kullanıcı alanı 'perf' aracını çalıştırmak için root (admin) izinlerine ihtiyacım var mı? (perf olaylar Linux çekirdeğinde etkindir)


25

Kullanıcı perfalanı aracını sistem yöneticisi (root) olarak çalıştırmam gerekiyor mu yoksa normal bir kullanıcı olarak çalıştırabilir miyim (veya en azından bazı alt komutları)?


2
İzin eksikliği nedeniyle yapmaları gerekeni yapamayan Unix programları, eğer işlerini yapamazlarsa, genellikle bir hataya neden olurlar. Koş ve gör!
Caleb

1
Bu soruyu, perfaracın ( sıradan bir kullanıcı olarak, $ HOME'da) kullanıcı alanının (önemsiz olan / önemsiz olabilir ) bir kullanıcı alanı yüklemeye değip değmeyeceğine karar vermesini istiyorum .
Jakub Narębski

Bilginize Ubuntu perfolduğunu linux-toolsböylece yükleme, paketin perfbasit yoktur.
Jakub Narębski

1
@ JakubNarębski: Sizin kendi makineniz değilse ve yöneticiler paketleri kurmakta isteksizdir.
Martin Ueding

Yanıtlar:


33

perfKök olmadan yapabilecekleriniz sysctl ayarına bağlıdır .kernel.perf_event_paranoid

  • kernel.perf_event_paranoid= 2: herhangi bir ölçüm alamazsınız. perfYarar hala mevcut kayıtları analiz etmek faydalı olabilir perf ls, perf report, perf timechartveya perf trace.
  • kernel.perf_event_paranoid= 1: Bir komutu perf statveya ile izleyebilir perf recordve çekirdek profil verilerini alabilirsiniz.
  • kernel.perf_event_paranoid= 0: Bir komutu perf statveya ile izleyebilir perf recordve CPU olay verilerini alabilirsiniz.
  • kernel.perf_event_paranoid= -1: çekirdek iz bırakma noktalarına ham erişime sahip olursunuz (özellikle, mmapoluşturduğunuz dosyayı yapabilirsiniz , perf_event_openbunun ne anlama geldiğini bilmiyorum).

1
Güzel. cat /proc/sys/kernel/perf_event_paranoiddöner 1, ben en azından bazı ölçümleri almak mümkün olacağını görünüyor böylece (.? BTW neyin "çekirdek profilleme veri" ve "CPU olay verileri" betwen fark Referans yeterlidir)
Jakub Narębski

2
@ Jakub: Anladığım kadarıyla çekirdek olaylar, çeşitli çekirdek fonksiyonlarını görmenizi sağlar. CPU olayları, CPU'daki bellekte belirli bir yere kaç defa vurulduğunu söyleyen sayaçlardır. Onları hiç kullanmadım, bu yüzden sana onlardan daha fazla söz edemem; LWN'nin konuyla ilgili bir kaç makalesi var ve hala değişiyor.
Gilles 'SO- kötülük' dur

4
Paranoid = 2 ile kullanıcı kodunda kendi kodunuzu hala profilleyebilirsiniz (örn. perf stat awk 'BEGIN{for(i=0;i<10000000;i++){}}'Doğru kullanıcı alanı döngüsü ve talimat sayıları gösterecek ve hatta sayıları uops_issued.any vb. Bile alabilirsiniz ), ancak kod için sayım alamıyorsunuz sistem çağrıları sırasında yapılan / kesintiler. Dolayısıyla, rapor edilen CPU frekansı (döngü / zaman), çekirdekte harcanan zaman nedeniyle gerçek değerden en azından biraz daha düşüktür. Ayrıca bakınız Hangi kısıtlama perf_event_paranoid == 1 aslında x86 perf'i kullanıyor?
Peter Cordes

"CPU olayları", işlem / iş parçacığı yerine, her çekirdeğin her şeyinde profil oluşturma anlamına gelir. yani paranoid = 1 veya daha yüksek bir sayı, diğer kullanıcı kodunun profilini çıkarmanızı engeller ve 1 yalnızca kendi işlemleriniz tarafından çağrılan çekirdek kodunu (sistem çağrıları.)
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.