Gprof - Gprof

Gprof bir performans analizi alet için Unix uygulamalar. Enstrümantasyon ve örneklemenin bir melezini kullandı[1] ve eski "prof" aracının genişletilmiş bir sürümü olarak oluşturuldu. Prof'ten farklı olarak gprof, arama grafiği toplama ve baskı.[1][2]

Tarih

GPROF başlangıçta liderliğindeki bir grup tarafından yazılmıştır. Susan L. Graham -de California Üniversitesi, Berkeley için Berkeley Unix (4.2 BSD[3]). Başka bir uygulama, GNU projesi için GNU Binutils 1988'de Jay Fenlason tarafından.[4][5]

Uygulama

Enstrümantasyon kodu, derleme sırasında program koduna otomatik olarak eklenir (örneğin, '-pg'seçeneği gcc derleyici), arayan işlevi verilerini toplamak için. Her işlev çağrısından önce izleme işlevi 'mcount'a bir çağrı eklenir.[6]

Örnekleme verileri 'gmon.out' veya 'içine kaydedilirtahmin.gmon 'dosyası, program çıkmadan hemen önce ve'gprof'komut satırı aracı. Birkaç gmon dosyası 'gprof -s'bir programın birkaç çalışmasından veri toplamak için.

GPROF çıkışı iki bölümden oluşur: düz profil ve çağrı grafiği. Düz profil, her bir işlevde harcanan toplam yürütme süresini ve toplam çalışma süresi yüzdesini verir. İşlev çağrısı sayıları da rapor edilir. Çıktı yüzdeye göre sıralanır sıcak noktalar listenin başında.

Çıktının ikinci kısmı, her bir işlev için onu kimin (ana) ve kimi çağırdığını (alt programlar) gösteren metinsel çağrı grafiğidir. Arama grafiğini gprof'tan grafik forma dönüştürebilen gprof2dot adında harici bir araç vardır.[7]

Sınırlamalar ve doğruluk

Çalışma zamanında, zamanlama değerleri istatistiksel örnekleme ile elde edilir. Örnekleme, hedef programın program sayıcı düzenli aralıklarla kullanarak işletim sistemi keser (profil (2) veya setitimer (2) ile programlanır sistem çağrıları ). Ortaya çıkan veriler kesin değildir, daha çok istatistiksel bir yaklaşımdır. Hata miktarı genellikle birden fazla örnekleme dönemidir. Bir değer örnekleme döneminin n katı ise, değerde beklenen hata n örnekleme döneminin kareköküdür.[8][9] Tipik bir örnekleme süresi 0,01 saniye (10 milisaniye) veya 0,001 saniye (1 ms) veya başka bir deyişle saniyede 100 veya 1000 örnek CPU çalışma süresidir.

BSD gibi bazı sürümlerde, paylaşılan kitaplıkların profillerinin çıkarılması, kısıtlamalar nedeniyle sınırlandırılabilir. profil kütüphane işlevi veya sistem çağrısı olarak uygulanabilen işlev. Benzer bir fayda vardı glibc dinamik kitaplıkların profilini çıkarmak için 'sprof' olarak adlandırılır.[10]

Gprof, çekirdek modunda harcanan zamanı ölçemez (sistem çağrıları, CPU veya G / Ç beklemesi) ve yalnızca kullanıcı alanı kodunun profili çıkarılır.[9]

mcount işlevi bazı uygulamalarda iş parçacığı açısından güvenli olmayabilir, bu nedenle çok iş parçacıklı uygulama profilleri yanlış olabilir (tipik olarak yalnızca uygulamanın ana iş parçacığını profiller).[11]

Enstrümantasyon ek yükü yüksek olabilir (tahminen% 30[12]-260%[13]) daha yüksek dereceli veya nesne yönelimli programlar için. Karşılıklı özyineleme ve önemsiz olmayan döngüler gprof yaklaşımı (bağlamdan duyarsız çağrı grafiği) ile çözülemez, çünkü tam çağrı zincirlerini değil, yalnızca ark geçişini kaydeder.[13][14][15]

Çağrı grafiği toplama özelliğine sahip Gprof, yalnızca GCC, clang / LLVM ve diğerleri gibi uyumlu derleyicilerle kullanılabilir.

Resepsiyon

2004'te bir GPROF belgesi çıktı. En etkili 50 PLDI tüm zamanların gazeteleri, 1982 yılının dört gazetesinden biri.[16]

Thiel'e göre,[6] "GPROF ... performans analizi alanında devrim yarattı ve hızla dünya çapındaki geliştiriciler için tercih edilen araç haline geldi ... araç hala büyük bir takipçi kitlesini sürdürüyor ... araç hala aktif olarak korunuyor ve modern dünyada geçerli olmaya devam ediyor."

Ayrıca bakınız

Referanslar

  1. ^ a b Susan L. Graham, Peter B. Kessler ve Marshall K. Mckusick. gprof: Arama Grafiği Yürütme Profilcisi // SİGPLAN '82 Derleyici Oluşturma Sempozyumu Bildirileri, SİGPLAN Bildirimleri, Cilt. 17, No 6, s. 120-126; doi: 10.1145 / 800230.806987
  2. ^ gprof - Arama Grafiği // Ping Huang, Bilgisayarı Yeniden Keşfetmek, MIT AI Lab
  3. ^ GEÇMİŞ gprof profil oluşturucusu 4.2BSD'de çıktı
  4. ^ GNU gprof kılavuzu: "GNU gprof, Jay Fenlason tarafından yazılmıştır."
  5. ^ GNU's Bulletin, cilt. 1 hayır. 5 (1988): "Gprof değişim Vakfı çalışanı Jay Fenlason, Berkeley Unix'in GPROF ile uyumlu GNU C ile uyumlu bir profil oluşturucuyu yakın zamanda tamamladı.
  6. ^ a b Justin Thiel, Yazılım Performans Analizi Araçlarına ve Tekniklerine Genel Bakış: GProf'tan DTrace'e (2006) "2.1.1 GProf'a Genel Bakış"
  7. ^ Gprof çağrı grafiği görselleştirme // Bilimsel hesaplama için yemek kitabı. Python yemek kitabı. Ecole polytechnique fédérale de Lausanne (EPFL)
  8. ^ İstatistiksel Yanlışlık gprof Çıktı Arşivlendi 2012-05-29 Wayback Makinesi
  9. ^ a b BG / P Sistemlerinde gprof Profil Oluşturma Araçları Arşivlendi 2013-12-21 de Wayback Makinesi, "Profil Verilerini Yorumlamayla İlgili Sorunlar", Argonne Liderlik Hesaplama Tesisi
  10. ^ http://www.hpl.hp.com/research/linux/qprof/
  11. ^ NASIL: çok iş parçacıklı uygulamalarla gprof kullanma // Sam Hocevar, 2004-12-13
  12. ^ GNU gprof Profiler Arşivlendi 2015-12-08 de Wayback Makinesi, Yu Kai Hong, Ulusal Tayvan Üniversitesi Matematik Bölümü; 19 Temmuz 2008
  13. ^ a b Değiştirilmemiş, Optimize Edilmiş Kodun Düşük Genel Giderli Çağrı Yolu Profili Oluşturma, ACM 1-59593-167 / 8/06/2005.
  14. ^ J. M. Spivey Hızlı, doğru arama grafiği profili oluşturma Arşivlendi 2012-02-07 de Wayback Makinesi, 3 Eylül 2003 // Yazılım - Uygulama ve Deneyim arşivi, Cilt 34 Sayı 3, Mart 2004, Sayfa 249 - 264 Spivey, J.M. (2004). "Hızlı, doğru arama grafiği profili oluşturma". Yazılım: Uygulama ve Deneyim. 34 (3): 249–264. CiteSeerX  10.1.1.62.1032. doi:10.1002 / spe.562.
  15. ^ Yossi Kreinin, Profilciler nasıl yalan söyler: gprof ve KCachegrind vakaları // 2 Şubat 2013
  16. ^ 20 Yıllık PLDI (1979–1999): Bir Seçim, Kathryn S. McKinley, Editör

daha fazla okuma

  • Susan L. Graham, Peter B. Kessler ve Marshall K. Mckusick. gprof: Arama Grafiği Yürütme Profilcisi // SİGPLAN '82 Derleyici Oluşturma Sempozyumu Bildirileri, SİGPLAN Bildirimleri, Cilt. 17, No 6, s. 120–126; doi: 10.1145 / 800230.806987
  • Graham, S. L., Kessler, P. B. ve McKusick, M. K. (1983), Modüler programlar için bir yürütme profili oluşturucu. Yazılım: Uygulama. Exper., 13: 671–685. doi: 10.1002 / spe.4380130803

Dış bağlantılar