Mulai Cepat | Menyumbang
Proyek ini memiliki perpustakaan untuk API acara kinerja Linux. Intinya adalah implementasi syscall perf_event_open (2)
, yang dapat digunakan apa adanya.
Perpustakaan juga berisi beberapa utilitas yang diperlukan untuk penggunaan API yang stabil. Utilitas menyediakan penanganan kesalahan, dukungan validasi dan banyak lagi.
Fokus perpustakaan ini adalah hasil yang sangat akurat tanpa biaya tambahan selama pengukuran . Artinya, menyiapkan pengukuran mungkin mahal, namun melakukan pengukuran tidak memerlukan biaya tambahan apa pun dari pustaka ini. Hal ini memberikan manfaat besar dalam mencapai hasil seakurat mungkin dan sefleksibel mungkin, dengan mengorbankan UX.
Untuk membangun proyek, instal terlebih dahulu libcap
:
sudo apt install libcap-dev
sudo yum install libcap-devel
sudo zapper install libcap-devel
Kemudian, cukup bangun proyeknya.
make build
Contoh tersedia di direktori examples
, keluaran ke direktori build/examples
.
./build/examples/full
Mulai cepat
Fitur
Dokumentasi
Menyumbang
CAP_PERFMON
ditambahkan di 5.9) Ada banyak alat pembuatan profil yang tersedia untuk Linux. Alat seperti Valgrind (dan Callgrind) adalah cara yang bagus dan akurat untuk melakukan analisis kinerja memori dan callstack. Namun, hal ini menghasilkan pengukuran yang disederhanakan untuk nilai-nilai seperti siklus CPU dan instruksi karena tidak mengukur perangkat keras asli. Alat lain seperti gprof, prof, dan gperftools hampir sama dengan perangkat keras, namun kurang mendukung pengukuran kernel dan kejadian idle. Cara lain untuk mengukur instruksi dan siklus yang digunakan dalam SUPERCOP, Papi, dll. bisa jadi tidak akurat, hanya menghitung keseluruhan siklus yang dilakukan oleh inti CPU. Di sinilah kinerja API Linux bersinar. API menyediakan seperangkat alat yang komprehensif untuk mengukur peristiwa pengguna dan kernel - baik melalui titik henti sementara yang ditentukan perangkat lunak atau penghitung perangkat keras.
Alat perf
CLI sangat bagus dalam menyediakan cara menggunakan API ini, tetapi alat ini mengukur eksekusi seluruh program. Panggilan sistem yang mendasarinya, perf_event_open (2)
, tidak memiliki pembungkus glibc dan oleh karena itu cukup bertele-tele - terutama saat melakukan banyak pengukuran.
Perpustakaan ini bertujuan untuk mengisi celah kecil ini di mana pengukuran kode tertentu dalam biner sangat akurat.
Untuk dilanjutkan saat API stabil.
Kontribusi apa pun dipersilakan. Jika Anda tidak dapat mengkodekannya sendiri, mungkin orang lain dapat melakukannya - jadi kirimkan masalah jika ada sesuatu yang Anda pikirkan.
Pastikan Anda memenuhi prasyarat berikut:
$CC
mengacu pada gcc
8 atau yang lebih barulibcap
diinstalclang-format
diinstal (jika Anda ingin memformat kode)compiledb
diinstal (jika Anda ingin memformat kode atau menganalisisnya dengan alat llvm lainnya) # Clone the repository
git clone https://github.com/AlexGustafsson/perf && cd perf
# Format the code
make format
# Build the library
make library
# Build examples
make examples
Contohnya dapat diuji menggunakan Docker.
docker build -t perf .
docker run -it --rm --privileged perf ./pi
mmap
ed