02/07/2018

Linux Performance — Probe

Linux performans konusunda henüz maalesef bir Solaris (Oracle) 10 gibi DTrace benzeri bir yapıya sahip değildir. Başka bir sürü yapıya sahiptir ancak bunları kullanabilmek için iyi derecede yazılım bilmek gerekebilir. Performans inceleme ve problem tespiti yöntemleri genellikle “kernel” üzerinden gerçekleştiği için anlamak ve algılamak için yazılım bilmeye gerek vardır.
Özellikle Brendan Gregg ‘in kitabını okuduğum, video larını seyrettiğim ve ayrıca daha önce Solaris 10 üzerinde DTrace çalıştığım için anlaması kendi açımdan en kolay olan eBPF üzerine yönelmeye devam ediyorm.
Bu kapsamda iki çeşit sonda varlığını öğrendim KProbe ve UProbe.
Kprobe : Kernel Sondası
UProbe : Kullanıcı Sondası olarak Türkçe’ye çevrilebilir.
Temel olarak çalışan kodun içinde belirli bir komut gelince o komuttan sonraki satıra ” şuraya git ” komutunu girer. O gittği yer “patch” programın olduğu yerdir. Artık sistem bizim istediğimiz komutu koşar sonrasında da ordan geri kaldığı yere gönderilir.
Yani kısaca kodun arasına bi parantez açıp bişiler yaptırıp parantezi kapatıp devam etmesini sağlamak gibi. İşte o parantezi koyma işlemide sonda yada Probe.
Resimde de görüldüğü gibi Komutlar (Instr) arasına girip bir yere yönlendirip (Jump) birşeyler yaptırıp geri getiriyor. Başka sondalarda olabilir. Bundan sonrası artık kernel detaylarına giriyor ve benim (henüz) ilgi ve bilgi alanımın biraz ötesinde. Brendan Gregg in güzzel bir scripti var : https://github.com/brendangregg/perf-tools/blob/master/kernel/kprobe Bunu indirip kurduğumuzda (not henüz denemedim)

./kprobe 'p:myopen do_sys_open filename=+0(%si):string'

Bilgisayarın açtığı tüm dosyaları göstermesi gerekiyor. (Centos 7 minimal üzerinde denedim sorunsuz çalışıyor. Tabii scripte derinden bakmak lazım ama son derece başarılı) Resim kaynak : https://vjordan.info/log/fpga/how-linux-kprobes-works.html

Leave a Reply