RAP – ABAP Profiling ile Çalışma Zamanı Tüketiminin Ölçülmesi


ABAP Profiling, ABAP programlarının performansını analiz etmek ve iyileştirmek için kullanılan ABAP Geliştirme Araçları’na (ADT) entegre edilmiş bir ABAP izleme aracıdır. “Measuring Runtime Consumption with ABAP Profiling” (ABAP Profilleme ile Çalışma Süresi Tüketimini Ölçme) konusu, ABAP kodlarının yürütme süresi, bellek kullanımı ve veri tabanı işlemleri gibi performans ölçütlerini değerlendirmek için kullanılan teknikleri kapsar.

Performans:

  • Çalışma zamanı açısından maliyet hesaplama
  • En etkili tasarımı seçmek için farklı uygulamaların performansını karşılaştırma

Program Akışı:

  • Uygulamanızdaki çağrı hiyerarşisini analiz etme
  • Modül birimlerinin aşırı veya gereksiz kullanımını belirleme

Veritabanı Erişimi:

  • Döngülerdeki SELECT ifadeleri gibi tekrarlanan veritabanı işlemlerini tanımlama
  • Uygulamanız tarafından erişilen veritabanı nesnelerini (tablolar ve görünümler) tanımlama


ABAP Profiling Yürütme

1. Perform Aggregated Measurement? (Toplu Ölçüm Yapılsın mı?)

Bu seçenek, profilleme sırasında hangi seviyede veri kaydedileceğini belirler:

  • No, I need the Call Sequence (large file size) → Çağrı sırasını tam olarak kaydeder, ancak büyük dosya boyutları oluşturabilir.
  • Yes, I need the Aggregated Call Tree (medium file size) → Çağrıları gruplandırarak daha küçük bir dosya oluşturur, performans analizi için uygundur.
  • Yes, Hit List is sufficient (small file size) → Yalnızca en çok zaman alan işlemleri kaydeder, düşük sistem yükü sağlar.

2. When should the trace start? (İzleme ne zaman başlamalı?)

İzlemenin başlama zamanını belirler:

  • Immediately (Hemen Başlasın) → Profiling, program başlar başlamaz devreye girer.
  • Explicitly switch on and off (e.g. within Debugger) (Elle Aç/Kapat – Örneğin Hata Ayıklayıcıdan) → Kullanıcı, izlemeyi istediği zaman açıp kapatabilir.

3. Which ABAP statements should be traced? (Hangi ABAP ifadeleri izlenmeli?)

Hangi ABAP işlemlerinin izleneceğini belirler:

  • Procedural units, SQL → İşlevsel bloklar (fonksiyon modülleri, metodlar) ve SQL sorguları izlenir.
  • Procedural units, SQL, internal tables → Ek olarak iç tabloların erişimi de kaydedilir.
  • Only procedural units → Sadece işlevsel bloklar izlenir, SQL veya iç tablo izleme yoktur.
  • Custom statements → Kullanıcının belirlediği özel kodlar izlenir.

Detaylar altında ayrıca seçilebilecek alt seçenekler:

  • Procedural units → Metodlar, fonksiyon modülleri vb. izlenir.
  • SQL database access → Veritabanı erişimleri kaydedilir.
  • Access to internal tables → İç tablolara yapılan erişimler izlenir.
  • Dynpro events → Ekran olayları (GUI işlemleri) izlenir.
  • Other ABAP events → Diğer ABAP olayları takip edilir.
  • System and kernel events → Sistem ve çekirdek işlemleri izlenir.

4. Advanced Parameters (Gelişmiş Parametreler)

Ek performans ayarlarını belirler:

  • Maximum execution time (Maksimum yürütme süresi): Profiling çalıştırılacağı maksimum süre (dakika cinsinden).
  • Maximum file size (Maksimum dosya boyutu): İzleme dosyasının maksimum boyutu (MB cinsinden).
  • Trace RFC and update requests (RFC ve güncelleme isteklerini izle): Uzaktan fonksiyon çağrılarını (RFC) ve güncelleme işlemlerini kaydeder.
  • TEnable SQL trace (SQL izlemeyi etkinleştir): SQL sorgularının performansını analiz etmek için kullanılır.

5. AMDP Trace Options (AMDP İzleme Seçenekleri)

AMDP (ABAP Managed Database Procedures) için izleme ayarları. SAP HANA sistemlerinde AMDP performansını ölçmek için bu seçenek etkinleştirilmelidir.

  • Enable AMDP trace → AMDP işlemlerinin performansını analiz eder.
  • Procedure filter → Belirli prosedürlerin izlenmesini sağlar.


ABAP Profiling Perspektifi


Program çalıştırıldıktan sonra debug ekranında ABAP Trace tabından kod blokları işlenebilir. 


Program sonlandıktan sonra ABAP Trace tabından ilgili classa çift tıklanarak genel bakış analiz edilir.

1. General Information (Genel Bilgi)

Genel Bilgiler bölümünde, bu izleme sonucuyla ilgili idari bilgileri bulabilirsiniz: İz ne zaman oluşturuldu? Kim oluşturdu? Hangi toplama ayarlarıyla oluşturuldu? Ve benzeri.

2. Runtime Distribution (Çalışma Zamanı Dağıtımı)

Çalışma zamanı dağıtımı, izlenen çalışma zamanının aşağıdaki ABAP bileşenleri arasında nasıl dağıtıldığına ilişkin bilgi sağlar.

  • ABAP – ABAP sistem programlarını içermeyen ABAP kodunun işlenmesinde harcanan çalışma süresi.
  • Dababase – işlemlerini gerçekleştirmek için veritabanında harcanan çalışma süresi.
  • Sistem – programlarında ABAP kodunun işlenmesinde harcanan çalışma süresi.

3. Analiz Araçları

Bu bölüm, iz sonucu görüntüsüne entegre edilmiş analiz araçlarının kısa bir açıklamasını verir. İlgili araca gitmek için bağlantılardan birini seçin. Alternatif olarak, Genel Bakış görüntüsünün altındaki sekmeleri kullanarak gidebilirsiniz.

3.1 Condensed Hit List(Özet Hedef Listesi)

* ** Tüm izleme olaylarıyla ilgileniyorsanız, bunun yerine Hit List’e bakın.

Liste, verileri toplu halde görüntüler. Her prosedürel birim, ne sıklıkta ve kaç farklı yerde çağrılmış olursa olsun yalnızca bir kez görünür. Executions ve Callers sütunları, bu birim için genel yürütme sayısını ve ayırt edilebilir doğrudan çağrı pozisyonlarının sayısını görüntüler.

Total Time sütunu, çağrının başlangıcından bitişine kadar geçen çalışma süresini mikrosaniye cinsinden görüntüler. Birim birden fazla kez çağrıldıysa, sütun bireysel çağrıların toplamını görüntüler. Toplam süre, prosedür çağrılarının toplam katkısını görmenizi sağlar.

Örnekte, program MAIN( ) yöntemini yürütmek için toplam 287.460,876 µs ve DESCRIBE_BY_DATA( ) yöntemini yürütmek için toplam 1.194 µs harcadı.

3.2 Aggregated Call Tree (Toplanmış Çağrı Ağacı)

Aggregated Call Tree, prosedürel birimlerin çağrıldığı sırayı analiz etmenize olanak tanır.

Bir prosedürel çağrı tekrarlanırsa (örneğin, bir döngüde), çağrı yalnızca bir kez toplanan Call Tree’de görünür. Yürütmeler sütunundaki sayı, tekrar sayısını görüntüler.

Örnekte, DESCRIBE_BY_DATA( ) yöntemi MAIN( ) yöntemi tarafından çağrıldı ancak başka hiçbir prosedürel birimi çağırmadı. SERIALIZE( ) yöntemi de /UI2/CL_JSON( ) yöntemi tarafından çağrıldı ve SERIALIZE_INT( ) yöntemini çağırdı, bu da DUMP_INT( ) yöntemini çağırdı ve bu şekilde devam etti.

3.3 Database Accesses (Veritabanı Erişimleri)

Database Accesses aracı, erişilen veritabanı nesnelerini bulmanızı ve veritabanı erişimleri arasında en çok tercih edilen tüketicileri belirlemenizi sağlar. Aynı veritabanı tablosundan tekrarlanan seçimleri belirlemenin de iyi bir yoludur.

Database Accesses aracı yalnızca veritabanıyla ilgili izleme olaylarını görüntüler. Tekrarlanan veritabanı erişimleri için çalışma zamanı toplanır. Yürütmeler sütununda yürütme sayısını bulabilirsiniz.


Örnekte, bir tabloya erişildi: ZGG_T_SKIRATEST. ZGG_T_SKIRATEST’dan veri okuyan SELECT ifadesi 3.412 µs sürdü.


İletişim

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir