İngilizceFransızcaİspanyolca

Ad


OnWorks favicon'u

perf-script-python - Bulutta Çevrimiçi

Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü üzerinden OnWorks ücretsiz barındırma sağlayıcısında perf-script-python'u çalıştırın

Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen perf-script-python komutudur.

Program:

ADI


perf-script-python - İzleme verilerini bir Python betiğiyle işleyin

SİNOPSİS


perf senaryo [-s [Python]:script[.py] ]

TANIM


Bu perf betiği seçeneği perf'in yerleşik Python'unu kullanarak mükemmel betik verilerini işlemek için kullanılır
Tercüman. Girdi dosyasını okur ve işler ve izlemenin sonuçlarını görüntüler.
Varsa, verilen Python betiğinde uygulanan analiz.

A HIZLI ÖRNEK


Bu bölüm, çalışan bir Python betiği oluşturma sürecini baştan sona gösterir.
ham mükemmel komut dosyası akışından yararlı bilgileri toplar ve çıkarır. Kaçınabilirsin
bir örnek sizin için yeterliyse bu belgenin devamını okuyun; gerisi
belge her adımla ilgili daha fazla ayrıntı sağlar ve kullanabileceğiniz kitaplık işlevlerini listeler.
senaryo yazarları.

Bu örnek aslında oluşturmak için kullanılan adımları detaylandırmaktadır. sistem çağrısı sayıları senaryo
aracılığıyla mevcut mükemmel komut dosyası komut dosyalarını listelediğinizde görürsünüz. perf senaryo -l. Bunun gibi, bu
komut dosyası ayrıca komut dosyanızı genel amaçlı dosyalar listesine nasıl entegre edeceğinizi de gösterir. perf
senaryo bu komut tarafından listelenen komut dosyaları.

Sistem çağrısı sayımları betiği basit bir betiktir ancak tüm temel fikirleri gösterir
kullanışlı bir komut dosyası oluşturmak için gereklidir. İşte çıktısının bir örneği (sistem çağrısı adları
henüz desteklenmiyor, sayı olarak görünecekler):

.ftC
sistem çağrısı olayları:

olay sayısı
----------------------------- ---------- -
sys_write 455067
sys_getdents 4072
sys_close 3037
sys_swapoff 1769
sys_read 923
sys_sched_setparam 826
sistem_açık 331
sys_newfstat 326
sys_mmap 217
sys_munmap 216
sys_futex 141
sys_select 102
sys_anket 84
sys_settimer 12
sys_writev 8
15 8
sys_lseek 7
sys_rt_sigprocmask 6
sys_wait4 3
sys_ioctl 3
sys_set_robust_list 1
sys_exit 1
56 1
sys_access 1
.ft

Temel olarak görevimiz, bir sistem her kurulduğunda güncellenen sistem çağrısı başına bir çetele tutmaktır.
Sistemde çağrı gerçekleşir. Komut dosyamız bunu yapacak, ancak önce verileri kaydetmemiz gerekiyor
bu komut dosyası tarafından işlenecek. Teorik olarak yapabileceğimiz birkaç yol var.
yap bunu:

· trace/events/syscalls dizini altındaki her olayı etkinleştirebiliriz, ancak bu
600'den fazla sistem çağrısı, perf tarafından izin verilen sayının çok ötesinde. Bu bireysel sistem çağrısı
Ancak daha sonra rehberden aldığımız rehberliği kullanmak istersek etkinlikler yararlı olacaktır.
bireysel sistem çağrıları hakkında ayrıntılı bilgi edinmek ve daha fazla ayrıntı elde etmek için genel amaçlı komut dosyaları
ilgi.

· altında bulunan sys_enter ve/veya sys_exit sistem çağrılarını etkinleştirebiliriz
izleme/olaylar/raw_syscalls. Bunlar tüm sistem çağrıları için çağrılır; the id alan olabilir
Bireysel sistem çağrısı numaralarını ayırt etmek için kullanılır.

Bu komut dosyası için yalnızca bir sistem çağrısının girildiğini bilmemiz gerekir; nasıl olduğu umurumuzda değil
çıkıldı, bu yüzden kullanacağız perf kayıt yalnızca sys_enter olaylarını kaydetmek için:

.ftC
# perf kaydı -a -e raw_syscalls:sys_enter

^C[ perf kaydı: Veri yazmak için 1 kez uyandım ]
[ mükemmel kayıt: 56.545 MB perf.data alındı ​​ve yazıldı (~2470503 örnek) ]
.ft

Seçenekler temel olarak sistem çapındaki her sistem çağrısı olayı için veri toplayacağını söylüyor ve
CPU başına çıkışı tek bir akışta çoğaltın. Bu tek akış şuraya kaydedilecek:
geçerli dizindeki perf.data adlı bir dosya.

Verilerimizi içeren bir perf.data dosyamız olduğunda -g komutunu kullanabiliriz. perf senaryo için seçenek
bulunan her olay türü için bir geri çağırma işleyicisi içerecek bir Python betiği oluşturun.
perf.data izleme akışı (daha fazla ayrıntı için BAŞLANGIÇ KOMUTLARI bölümüne bakın).

.ftC
# perf betiği -g python
oluşturulan Python betiği: perf-script.py

Geçerli dizinde de oluşturulan çıktı dosyasına şu ad verilir:
perf-script.py. İşte dosyanın tamamı:

# perf betiği -g python tarafından oluşturulan perf betiği olay işleyicileri
# GNU GPL Lisansı sürüm 2 koşulları kapsamında lisanslanmıştır

# Common_* olay işleyicisi alanları, ortak olan en kullanışlı alanlardır
#tüm etkinlikler. 'Ortak_*' alanlarına mutlaka karşılık gelmezler
# format dosyalarında. İşleyici parametreleri olarak mevcut olmayan alanlar
#, common_*(context) biçimindeki Python işlevleri kullanılarak alınabilir.
# Kullanılabilir işlevlerin listesi için perf-script-python Belgelerine bakın.

ithal os
ithalat sistemi

sys.path.append(os.environ['PERF_EXEC_PATH'] + \
'/scripts/python/Perf-Trace-Util/lib/Perf/Trace')

perf_trace_context içe aktarımından *
Çekirdek içe aktarmadan *

def trace_begin():
"trace_begin'de" yazdır

def trace_end():
"trace_end"de yazdır

def raw_syscalls__sys_enter(olay_adı, bağlam, ortak_cpu,
ortak_sn'ler, ortak_nsec'ler, ortak_pid, ortak_iletişim,
kimlik, argümanlar):
print_header(olay_adı, ortak_cpu, ortak_sn, ortak_nsn,
ortak_pid, ortak_iletişim)

print "id=%d, args=%s\n" % \
(kimlik, bağımsız değişkenler),

def trace_unhandled(olay_adı, bağlam, ortak_cpu, ortak_sn'ler, ortak_nsn'ler,
ortak_pid, ortak_iletişim):
print_header(olay_adı, ortak_cpu, ortak_sn, ortak_nsn,
ortak_pid, ortak_iletişim)

def print_header(olay_adı, işlemci, saniye, nsan, pid, iletişim):
print "%-20s %5u %05u.%09u %8u %-20s " % \
(olay_adı, cpu, sn, nsec, pid, iletişim),
.ft

En üstte bir yorum bloğu ve ardından bazı içe aktarma ifadeleri ve bir yol ekleme bulunur.
her mükemmel betik betiği içermelidir.

Bunu takiben, trace_begin() ve trace_end() adlı birkaç oluşturulmuş fonksiyon bulunmaktadır.
sırasıyla betiğin başında ve sonunda çağrılır (daha fazla ayrıntı için bkz.
SCRIPT_LAYOUT bölümü aşağıdadır).

Bunları takip eden olay işleyicisi işlevler her olay için bir tane oluşturdu perf
kayıt çıktı. İşleyici işlevleri alt sistem biçimini alıretkinlik adı, ve içermek adlı
parametreler bir için her alan in the etkinlik; in Re-Tweet vaka, var bir tek bir Etkinlik,
raw_syscallssys_enter(). (olay hakkında daha fazla bilgi için aşağıdaki OLAY YÖNETİCİLERİ bölümüne bakın)
işleyiciler).

Son birkaç fonksiyon, başlangıç ​​ve bitiş fonksiyonları gibi, her biri için üretilir.
senaryo. İlki, trace_unhandled(), betiğin her olay bulması durumunda çağrılır.
betikteki herhangi bir olay işleyicisine karşılık gelmeyen perf.data dosyası. Bu olabilir
ya kayıt adımının gerçekten ilgilenmediği olay türlerini kaydettiği anlamına gelir,
veya komut dosyası, komut dosyasına karşılık gelmeyen bir izleme dosyasında çalıştırıldı.

-g seçeneği tarafından oluşturulan komut dosyası, izlemede bulunan her olay için basitçe bir satır yazdırır
akışı, yani temelde olayı ve parametre değerlerini stdout'a aktarır.
print_header() işlevi yalnızca bu amaç için kullanılan bir yardımcı işlevdir. Yeniden adlandıralım
betiği açın ve varsayılan çıktıyı görmek için çalıştırın:

.ftC
# mv perf-script.py sistem çağrısı-sayımı.py
# perf betiği -s sistem çağrısı-sayımı.py

raw_syscalls__sys_enter 1 00840.847582083 7506 performans kimliği=1, args=
raw_syscalls__sys_enter 1 00840.847595764 7506 performans kimliği=1, args=
raw_syscalls__sys_enter 1 00840.847620860 7506 performans kimliği=1, args=
raw_syscalls__sys_enter 1 00840.847710478 6533 npviewer.bin kimliği=78, args=
raw_syscalls__sys_enter 1 00840.847719204 6533 npviewer.bin kimliği=142, args=
raw_syscalls__sys_enter 1 00840.847755445 6533 npviewer.bin kimliği=3, args=
raw_syscalls__sys_enter 1 00840.847775601 6533 npviewer.bin kimliği=3, args=
raw_syscalls__sys_enter 1 00840.847781820 6533 npviewer.bin kimliği=3, args=
.
.
.
.ft

Elbette bu komut dosyası için her izleme olayını yazdırmakla ilgilenmiyoruz, bunun yerine
yararlı bir şekilde bir araya getiriyoruz. Böylece baskıyla ilgili her şeyden de kurtulacağız
kullanmayacağımız trace_begin() ve trace_unhandled() işlevleri olarak. Bu ayrılır
bu minimalist iskeletle:

.ftC
ithal os
ithalat sistemi

sys.path.append(os.environ['PERF_EXEC_PATH'] + \
'/scripts/python/Perf-Trace-Util/lib/Perf/Trace')

perf_trace_context içe aktarımından *
Çekirdek içe aktarmadan *

def trace_end():
"trace_end"de yazdır

def raw_syscalls__sys_enter(olay_adı, bağlam, ortak_cpu,
ortak_sn'ler, ortak_nsec'ler, ortak_pid, ortak_iletişim,
kimlik, argümanlar):
.ft

trace_end()'de sonuçları basitçe yazdıracağız, ancak önce bazı sonuçlar üretmemiz gerekiyor
yazdırmak. Bunu yapmak için sys_enter() işleyicimizin gerekli hesaplamayı yapmasına ihtiyacımız var.
tüm olaylar sayılana kadar. Sistem çağrısı kimliği tarafından indekslenen bir karma tablosu, bunu yapmanın iyi bir yoludur.
bu bilgiyi saklayın; sys_enter() işleyicisi her çağrıldığında, basitçe artırırız
söz konusu sistem çağrısı kimliği tarafından dizine eklenen söz konusu karma girişiyle ilişkili bir sayı:

.ftC
sistem çağrıları = autodict()

deneyin:
sistem çağrıları[id] += 1
TypeError hariç:
sistem çağrıları[id] = 1
.ft

Sistem çağrıları kendi kendine karar vermek nesne özel bir tür Python sözlüğüdür (uygulanmıştır)
Core.py) Perl'ünkini uygular kendi kendini canlandıran Python'daki karmalar, yani otomatik canlandırma ile
hash'ler oluşturma zahmetine girmeden iç içe hash değerleri atayabilirsiniz.
orta düzeyler, eğer mevcut değilse, örneğin sistem çağrıları[comm][pid][id] = 1 şunu oluşturacaktır:
ara karma seviyeleri ve son olarak karma girişine 1 değerini atayın id (Çünkü
atanan değer bir hash nesnesinin kendisi değildir; başlangıç ​​değeri
TypeError istisnası. Bunu Python'da yapmanın daha iyi bir yolu olabilir ama olan da bu
şimdilik çalışıyor).

Bu kodu raw_syscalls__sys_enter() işleyicisine yerleştirerek etkili bir şekilde sonuç elde ederiz.
sistem çağrısı kimliğine anahtarlanmış ve değer olarak saydığımız sayıları içeren tek düzeyli sözlük.

print_syscall_totals() işlevi sözlükteki girişler üzerinde yinelenir ve
sistem çağrısı adını içeren her giriş için bir satır görüntüler (sözlük anahtarları
çeviren Util işlevi syscall_name()'e iletilen sistem çağrısı kimlikleri
ham sistem çağrısı numaralarını ilgili sistem çağrısı adı dizelerine aktarın). Çıktı:
izlemedeki tüm olaylar işlendikten sonra, çağrılarak görüntülenir.
betiğin sonunda çağrılan trace_end() işleyicisinden print_syscall_totals() işlevi
işleme.

Yukarıda gösterilen çıktıyı üreten son komut dosyası aşağıda bütünüyle gösterilmiştir.
(syscall_name() yardımcısı henüz mevcut değil, şimdilik yalnızca kimliklerle ilgilenebilirsiniz):

.ftC
ithal os
ithalat sistemi

sys.path.append(os.environ['PERF_EXEC_PATH'] + \
'/scripts/python/Perf-Trace-Util/lib/Perf/Trace')

perf_trace_context içe aktarımından *
Çekirdek içe aktarmadan *
Util içe aktarmadan *

sistem çağrıları = autodict()

def trace_end():
print_syscall_totals()

def raw_syscalls__sys_enter(olay_adı, bağlam, ortak_cpu,
ortak_sn'ler, ortak_nsec'ler, ortak_pid, ortak_iletişim,
kimlik, argümanlar):
deneyin:
sistem çağrıları[id] += 1
TypeError hariç:
sistem çağrıları[id] = 1

def print_syscall_totals():
for_comm Yok değilse:
"\n%s için sistem çağrısı olaylarını yazdır:\n\n" % (for_comm),
Başka:
"\nsistem çağrısı etkinlikleri:\n\n" yazdır,

print "%-40s %10s\n" % ("olay", "count"),
print "%-40s %10s\n" % ("-------------------------- ---", \
"---------------"),

kimlik için val in sorted(syscalls.iteritems()), anahtar = lambda(k, v): (v, k), \
ters = Doğru):
print "%-40s %10d\n" % (sistem çağrısı_adı(id), val),
.ft

Komut dosyası daha önce olduğu gibi çalıştırılabilir:

# perf betiği -s sistem çağrısı-sayımı.py

Yani bunlar bir senaryo yazmanın ve çalıştırmanın temel adımlarıdır. Süreç olabilir
ilgilendiğiniz herhangi bir izleme noktasına veya izleme noktası kümesine genelleştirilmiştir - temel olarak bul
tarafından gösterilen mevcut olayların listesine bakarak ilgilendiğiniz izleme noktaları
perf liste ve/veya ayrıntılı olay ve alan için /sys/kernel/debug/tracing olaylarına bakın
info'yu kullanarak karşılık gelen izleme verilerini kaydedin. perf kayıt, listesini ileterek
ilginç olaylar, kullanarak bir iskelet komut dosyası oluşturun perf senaryo -g piton ve değiştir
özel ihtiyaçlarınıza göre bir araya getirmek ve görüntülemek için kod.

Bunu yaptıktan sonra elinizde tutmak istediğiniz genel amaçlı bir komut dosyası olabilir.
civarındadır ve ileride kullanılmak üzere hazır bulundurulur. Birkaç basit kabuk betiği yazarak
ve bunları doğru yere koyarak, senaryonuzun diğerlerinin yanında listelenmesini sağlayabilirsiniz.
tarafından listelenen komut dosyaları perf senaryo -l komut örneğin:

.ftC
root@tropicana:~# mükemmel komut dosyası -l
Mevcut izleme komut dosyalarının listesi:
uyanma gecikmesi sistem genelinde minimum/maks/ortalama uyanma gecikmesi
dosya bazında rw Bir programın dosyaya göre r/w etkinliği
rw-by-pid sistem çapında r/w etkinliği
.ft

Bunu yapmanın güzel bir yan etkisi, daha sonra muhtemelen uzun olan fotoğrafları da yakalamanızdır. perf
kayıt Komut dosyasına ilişkin olayları kaydetmek için gereken komut.

Komut dosyasının şu şekilde görünmesini sağlamak için: yerleşik komut dosyası, iki basit komut dosyası yazarsınız, biri
kayıt ve bir tanesi raporlama.

The kayıt script, betiğinizle aynı temel adı taşıyan ancak
-kayıt eklendi. Kabuk betiği perf/scripts/python/bin içine yerleştirilmelidir.
çekirdek kaynak ağacındaki dizin. Bu komut dosyasında şunları yazarsınız: perf kayıt
Komut dosyanız için gereken komut satırı:

.ftC
# cat kernel-source/tools/perf/scripts/python/bin/syscall-counts-record

#!/ bin / bash
perf kaydı -a -e raw_syscalls:sys_enter
.ft

The rapor script aynı zamanda betiğinizle aynı temel ada sahip bir kabuk betiğidir, ancak
-rapor eklendi. Ayrıca perf/scripts/python/bin dizininde de bulunmalıdır. İçinde
o senaryoyu sen yaz perf senaryo -s Komut dosyanızı çalıştırmak için gereken komut satırı:

.ftC
# cat kernel-source/tools/perf/scripts/python/bin/syscall-counts-report

#!/ bin / bash
# açıklama: sistem çapında sistem çağrısı sayıları
mükemmel komut dosyası -s ~/libexec/perf-core/scripts/python/syscall-counts.py
.ft

Kabuk betiğinde verilen Python betiğinin konumunun
libexec/perf-core/scripts/python dizini - betiğin kopyalanacağı yer burasıdır
yapmak kurmak perf'i yüklediğinizde. Kurulumun betiğinizi oraya kurması için,
betiğinizin çekirdek kaynağındaki perf/scripts/python dizininde bulunması gerekiyor
ağaç:

.ftC
# ls -al çekirdek-kaynağı/araçlar/perf/scripts/python

root@tropicana:/home/trz/src/tip# ls -al araçlar/perf/scripts/python
Toplam 32
drwxr-xr-x 4 trz trz 4096 2010-01-26 22:30 .
drwxr-xr-x 4 trz trz 4096 2010-01-26 22:29 ..
drwxr-xr-x 2 trz trz 4096 2010-01-26 22:29 bin
-rw-r--r-- 1 trz trz 2548 2010-01-26 22:29 check-perf-script.py
drwxr-xr-x 3 trz trz 4096 2010-01-26 22:49 Mükemmel-İzleme-Kullanım
-rw-r--r-- 1 trz trz 1462 2010-01-26 22:30 sistem çağrısı-sayımı.py
.ft

Bunu yaptıktan sonra (yeni bir tane yapmayı unutmayın) yapmak kurmak, aksi halde komut dosyanız çalışmaz
çalışma zamanında görünmesi), perf senaryo -l betiğiniz için yeni bir giriş göstermelidir:

.ftC
root@tropicana:~# mükemmel komut dosyası -l
Mevcut izleme komut dosyalarının listesi:
uyanma gecikmesi sistem genelinde minimum/maks/ortalama uyanma gecikmesi
dosya bazında rw Bir programın dosyaya göre r/w etkinliği
rw-by-pid sistem çapında r/w etkinliği
sistem çağrısı sayımları sistem çapındaki sistem çağrısı sayıları
.ft

Artık kayıt adımını şu şekilde gerçekleştirebilirsiniz: perf senaryo kayıt:

# perf komut dosyası kaydı sistem çağrısı sayısı

ve çıktıyı kullanarak görüntüleyin perf senaryo rapor:

# perf komut dosyası raporu sistem çağrısı sayıları

MARŞ KODLAR


Belirli bir izleme verisi kümesi için bir komut dosyası yazmaya hızlı bir şekilde başlayabilirsiniz.
kullanarak bir iskelet komut dosyası oluşturma perf senaryo -g piton ile aynı dizinde
mevcut perf.data izleme dosyası. Bu, bir işleyici içeren bir başlangıç ​​​​komut dosyası oluşturacaktır
izleme dosyasındaki olay türlerinin her biri için; sadece mevcut tüm alanları yazdırır
İzleme dosyasındaki her olay.

Ayrıca mevcut komut dosyalarına da bakabilirsiniz. ~/libexec/perf-core/scripts/python için
Olay verilerinin toplanması, sonuçların yazdırılması gibi temel şeylerin nasıl yapılacağını gösteren tipik örnekler,
vb. Ayrıca check-perf-script.py betiği, sonuçları açısından ilgi çekici olmasa da,
tüm ana komut dosyası oluşturma özelliklerini kullanmaya çalışır.

OLAY İŞLEYİCİLER


Bir izleme komut dosyası kullanılarak mükemmel komut dosyası çağrıldığında, kullanıcı tanımlı bir işleyicisi işlev is
izlemedeki her olay için çağrılır. Belirli bir işleyici işlevi tanımlanmamışsa
olay türü, olay yok sayılır (veya bir trace_handled işlevi, aşağıya bakın) ve
sonraki olay işlenir.

Olayın alan değerlerinin çoğu, işleyici işlevine bağımsız değişken olarak iletilir; Bazı
daha az yaygın olanlar değildir - bunlar mükemmel yürütülebilir dosyaya geri çağrı olarak kullanılabilir
(aşağıya bakınız).

Örnek olarak, tüm sched_wakeup'ları kaydetmek için aşağıdaki perf record komutu kullanılabilir.
sistemdeki olaylar:

# mükemmel kayıt -a -e planlanmış:sched_wakeup

Bir komut dosyası kullanılarak işlenmesi amaçlanan izler yukarıdaki seçenekle kaydedilmelidir: -a
sistem genelinde toplamayı etkinleştirmek için.

sched_wakep olayının biçim dosyası aşağıdaki alanları tanımlar (bkz.
/sys/kernel/debug/tracing/events/sched/sched_wakeup/format):

.ftC
biçimi:
alan:imzasız kısa common_type;
alan:imzasız karakter common_flags;
alan:imzasız karakter common_preempt_count;
alan:int ortak_pid;

alan:char iletişim[TASK_COMM_LEN];
alan:pid_t pid;
alan:int prio;
alan:int başarı;
alan:int hedef_cpu;
.ft

Bu olay için işleyici işlevi şu şekilde tanımlanır:

.ftC
def sched__sched_wakeup(olay_adı, bağlam, ortak_cpu, ortak_sn'ler,
ortak_nsecs, ortak_pid, ortak_iletişim,
iletişim, pid, öncelik, başarı, hedef_cpu):
geçmek
.ft

İşleyici işlevi altsistem__olay_adı biçimini alır.

İşleyicinin argüman listesindeki ortak_* argümanlar, kendisine iletilen argümanlar kümesidir.
tüm olay işleyicileri; alanlardan bazıları, biçimindeki common_* alanlarına karşılık gelir.
dosyasıdır, ancak bazıları sentezlenmiştir ve common_* alanlarından bazıları,
her olaya argüman olarak iletilebilir, ancak kütüphane işlevleri olarak kullanılabilir.

Değişmeyen olay argümanlarının her birinin kısa bir açıklaması:

event_name etkinliğin adını metin olarak belirtir
perf'e geri çağrılarda kullanılan opak bir 'çerez' bağlamı
common_cpu olayın gerçekleştiği işlemci
common_secs olay zaman damgasının saniye kısmı
common_nsecs olay zaman damgasının nsecs kısmı
common_pid mevcut görevin pid'i
common_comm geçerli sürecin adı

Olayın biçim dosyasında kalan tüm alanların işleyici olarak karşılıkları vardır.
Yukarıdaki örnekte görüldüğü gibi, aynı ada sahip fonksiyon argümanları.

Yukarıdakiler, bir dizideki her olayın her alanına doğrudan erişmek için gereken temel bilgileri sağlar.
yararlı bir izleme komut dosyası yazmak için bilmeniz gerekenlerin %90'ını kapsayan trace. NS
aşağıdaki bölümler geri kalanını kapsar.

SCRIPT DÜZEN


Her mükemmel betik Python betiği bir Python modülü arama yolu ayarlayarak başlamalı ve
Birkaç destek modülünü 'içe aktarma' (aşağıdaki modül açıklamalarına bakın):

.ftC
ithal os
ithalat sistemi

sys.path.append(os.environ['PERF_EXEC_PATH'] + \
'/scripts/python/Perf-Trace-Util/lib/Perf/Trace')

perf_trace_context içe aktarımından *
Çekirdek içe aktarmadan *
.ft

Komut dosyasının geri kalanı, herhangi bir sırada işleyici işlevleri ve destek işlevleri içerebilir.

Yukarıda tartışılan olay işleyici işlevlerinin yanı sıra, her komut dosyası bir dizi uygulayabilir.
isteğe bağlı işlevler:

trace_begin, tanımlanmışsa, herhangi bir olay işlenmeden önce çağrılır ve komut dosyalarına bir
kurulum görevlerini yapma şansı:

.ftC
def trace_begin:
geçmek
.ft

iz_son, tanımlanmışsa, tüm olaylar işlendikten sonra çağrılır ve komut dosyalarına bir
sonuçları görüntüleme gibi komut dosyası sonu görevleri yapma şansı:

.ftC
def trace_end:
geçmek
.ft

trace_işlenmemiş, tanımlanmışsa, işleyicisi olmayan herhangi bir olay için sonra çağrılır
için açıkça tanımlanmıştır. Standart ortak argümanlar seti ona iletilir:

.ftC
def trace_unhandled(olay_adı, bağlam, ortak_cpu, ortak_sn'ler,
ortak_nsecs, ortak_pid, ortak_iletişim):
geçmek
.ft

Kalan bölümler, mevcut yerleşik mükemmel komut dosyasının her birinin açıklamalarını sağlar
Python modülleri ve ilgili işlevleri.

MEVCUT MODÜLLER VE FONKSİYONLAR


Aşağıdaki bölümlerde çeşitli perf aracılığıyla kullanılabilen işlevler ve değişkenler açıklanmaktadır.
komut dosyası Python modülleri. Verilen modüldeki işlevleri ve değişkenleri kullanmak için
uyan itibaren XXXX ithalat mükemmel komut dosyası komut dosyanızın satırı.

Core.py modül
Bu işlevler, kullanıcı komut dosyalarına bazı temel işlevler sağlar.

The flag_str ve sembol_str işlevler, bayrak ve sembolik için insan tarafından okunabilir dizeler sağlar
alanlar. Bunlar, dosyadan ayrıştırılan dizilere ve değerlere karşılık gelir. baskı fmt alanları
olay formatı dosyaları:

flag_str(olay_adı, alan_adı, alan_değeri) - olay olay_adı'nın bayrak alanı alan_adı için alan_değerine karşılık gelen dize temsilini döndürür
sembol_str(olay_adı, alan_adı, alan_değeri) - olay olay_adı'nın sembolik alan_adı alanı için alan_değerine karşılık gelen dize gösterimini döndürür

The kendi kendine karar vermek işlevi, Perl'ünkileri uygulayan özel bir tür Python sözlüğü döndürür.
kendi kendini canlandıran Python'daki karmalar, yani otomatik canlandırıcı karmalarla, iç içe karma atayabilirsiniz
değerleri, eğer yapmazlarsa, orta düzeyler oluşturma zahmetine girmek zorunda kalmadan
var olmak.

autodict() - otomatik olarak canlanan bir sözlük örneği döndürür

perf_trace_context modül
Bazı ortak olay formatı dosyasındaki alanlar o kadar yaygın değildir, ancak
yine de kullanıcı komut dosyaları için erişilebilir hale getirildi.

perf_trace_context, bu verilere erişmek için kullanılabilecek bir dizi işlevi tanımlar.
mevcut olayın bağlamı. Bu işlevlerin her biri bir bağlam değişkeni bekler;
her olay işleyicisine ikinci argüman olarak aktarılan bağlam değişkeniyle aynıdır.

common_pc(context) - mevcut olay için common_preempt sayısını döndürür
common_flags(context) - mevcut olay için common_flags'i döndürür
common_lock_third(context) - geçerli olay için common_lock_length'i döndürür

Util.py modül
Mükemmel komut dosyasıyla kullanım için çeşitli yardımcı program işlevleri:

nsecs(secs, nsecs) - sn/nsec çiftine göre toplam nsec sayısını döndürür
nsecs_secs(nsecs) - nsecs olarak verilen saniyelerin tamamını döndürür
nsecs_nsecs(nsecs) - nsecs cinsinden kalan nsecs değerini döndürür
nsecs_str(nsecs) - secs.nsecs biçiminde yazdırılabilir dizeyi döndürür
avg(total, n) - bir toplam ve toplam değer sayısı verilen ortalamayı döndürür

Onworks.net hizmetlerini kullanarak perf-script-python'u çevrimiçi kullanın


Ücretsiz Sunucular ve İş İstasyonları

Windows ve Linux uygulamalarını indirin

  • 1
    VBA-M (Arşivlendi - Şimdi Github'da)
    VBA-M (Arşivlendi - Şimdi Github'da)
    Proje şuraya taşındı:
    https://github.com/visualboyadvance-m/visualboyadvance-m
    Özellikler:Hile oluşturmadurumları kaydetçoklu
    sistem, gba, gbc, gb, sgb'yi destekler,
    sgb2Tu...
    VBA-M'yi İndirin (Arşivlendi - Şimdi Github'da)
  • 2
    Stacer
    Stacer
    Linux Sistem Optimize Edici ve İzleme
    Github Deposu:
    https://github.com/oguzhaninan/Stacer.
    Kitle: Son Kullanıcılar/Masaüstü. kullanıcı
    arayüz: Qt. Programlama...
    Stacer'ı indirin
  • 3
    TuruncuTilki
    TuruncuTilki
    TeamWinRecoveryProject(TWRP) çatalı
    birçok ek işlevle, yeniden tasarlayın
    ve daha fazla Özellikler: Tiz ve
    Tiz olmayan ROM'larGüncel Oreo çekirdeği,
    inşa edilmiş...
    OrangeFox'u indirin
  • 4
    itop - ITSM CMDB Açık Kaynak
    itop - ITSM CMDB Açık Kaynak
    BT Operasyonları Portalı: tam bir açık
    kaynak, ITIL, web tabanlı hizmet
    tamamen dahil olmak üzere yönetim aracı
    özelleştirilebilir CMDB, bir yardım masası sistemi ve
    belge adam...
    İndirin - ITSM CMDB Açık Kaynak
  • 5
    Clementine
    Clementine
    Clementine çok platformlu bir müziktir
    esinlenen oyuncu ve kütüphane organizatörü
    Amarok 1.4. Hızlı ve
    kullanımı kolay arayüzü ve size izin verir
    arama ve...
    Clementine'i indirin
  • 6
    XISMuS
    XISMuS
    DİKKAT: 2.4.3 toplu güncellemesi
    serbest bırakıldı!! Güncelleme herhangi biri için çalışır
    önceki 2.xx sürümü. Eğer yükseltme
    v1.xx sürümünden, lütfen indirin ve
    i ...
    XISMuS'u indirin
  • Daha fazla »

Linux komutları

Ad