Systrace — bu nədir, Android sistem izləmə aləti

Müəllif: IT Sectr Dərc olunub: 2026-03-31 Oxuma vaxtı: 9 dəq

Systrace — Android sistem izləmə alətidir, Linux nüvəsi, prosessor, qrafik sürətləndiricisi və bütün sistem prosesləri haqqında qısa müddət ərzində məlumat toplayır. Traceview-dən fərqli olaraq, tətbiq daxilindəki metodlara fokuslanan Systrace sistem mənzərəsini göstərir: hər CPU nüvəsinin yükü, SurfaceFlinger işi, Binder çağırışları və GC dövrləri. Google, 2024 məlumatına görə, alət buraxılmış kadrların, tez-tez zibil yığılmasının və UI thread-də anomaliyaların diaqnostikası üçün əvəzolunmazdır.

Əsas məqamlar

  • Systrace — atrace/ftrace vasitəsilə işləyən aşağı səviyyəli Android sistem izləmə aləti
  • İzlər 60 saniyəyə qədər müddət ərzində CPU, GPU, thread, SurfaceFlinger və Binder məlumatlarını ehtiva edir
  • Analiz buraxılmış kadrların və UI thread bloklanmalarının dəqiq səbəbini görməyə imkan verir
  • İnteqrasiya Android Studio və komanda xətti ilə çevik tutma və avtomatlaşdırma üçün
  • Perfetto — Android 12+ üçün Systrace-in varisi, ümumi protobuf formatından istifadə edir

Systrace nədir

Systrace — Android SDK-dan komanda xətti vasitəsidir, nüvə (ftrace) və istifadəçi məkanından (atrace) bir neçə izləmə mənbəyindən məlumatları tək HTML hesabatında birləşdirir. Alət Android 4.1-də (Jelly Bean) köhnə traceview sistem profilləmə alətini əvəz etmək üçün ortaya çıxdı və uzun müddət Android platformasında performans diaqnostikasının standart vasitəsi olaraq qaldı.

Systrace arxitekturası

Systrace ftrace-ə əsaslanır — Android 4.1 versiyasından etibarən mövcud olan Linux nüvə izləmə mexanizmi. Systrace işə salındıqda müəyyən iz kateqoriyalarını aktivləşdirir: sched (tapşırıq planlayıcısı), freq (CPU tezliyi), idle (boş vəziyyətlər), workq (iş növbələri), binder, gfx və digərləri. Məlumatlar nüvənin halqa buferində toplanır və dayandırıldıqdan sonra tək trace.html faylında birləşdirilir, istənilən brauzerdə açılır.

Android Studio kontekstində Systrace

Android Studio 3.1-dən başlayaraq, Systrace CPU Profiler-ə daxil edilmişdir. “Trace System Calls” rejimində profiler qoşulmuş cihazda Systrace-i işə salır və nəticələri birbaşa Android Studio pəncərəsində göstərir. Bu, əsas hallarda komanda xətti ilə işləmək ehtiyacını aradan qaldırır, lakin tam funksionallığı qoruyur — bütün iz kateqoriyaları, filtrləmə və interaktiv zaman xətti. İzləmə zamanı cihazın performansı az dərəcədə azalır, çünki ftrace minimal yük üçün hazırlanmışdır.

Systrace necə işləyir

Systrace iki məlumat toplama mexanizmindən istifadə edir: sistem hadisələri üçün nüvə səviyyəsində ftrace və Android-ə xas etiketlər üçün istifadəçi məkanında atrace. ftrace kontekst dəyişmələrini (sched_switch), CPU tezliyi dəyişikliklərini (cpu_frequency), kəsilmələri (irq_handler_entry) və digər hadisələri qeyd edir. atrace Android freymvorkundan etiketlər əlavə edir — kadr renderlənməsinin başlanğıcı və sonu, SurfaceFlinger çağırışları və Binder əməliyyatları.

Systrace-də kadr renderlənmə zənciri

Systrace-in əsas imkanı — hər kadrın renderlənmə zəncirinin vizuallaşdırılması: tətbiq → BufferQueue → SurfaceFlinger → HWC (composer) → Display. Əgər hansısa mərhələdə gecikmə baş verərsə, Systrace dəqiq səbəbi göstərir: tətbiq bufer hazırlaya bilmədi, SurfaceFlinger VSync gözlədi və ya HWC təbəqələri birləşdirə bilmədi. Zaman xəttində Frame Lifecycle statuslara görə rənglənir: yaşıl (vaxtında), sarı (gecikmə), qırmızı (buraxılma). Bu vizuallaşdırma UI performansının optimallaşdırılması üçün əsas alətdir.

İz kateqoriyaları

Systrace 20-dən çox iz kateqoriyasını dəstəkləyir, hər biri əlaqəli hadisələr toplusunu ehtiva edir. Əhəmiyyətli kateqoriyalar: gfx (qrafik renderlənməsi), input (giriş emalı), view (View sistemi), webview (WebView), power (enerji istehlakı), hal (aparatur abstraksiyası). Oyunların profillənməsi üçün AGI (Android GPU Inspector) vasitəsilə GPU əmrlərinə qədər detallaşdırma ilə gfx kateqoriyası faydalıdır.

Systrace-in əsas imkanları

Systrace Android üçün digər profilerlərdə mövcud olmayan unikal imkanlar dəsti təqdim edir: sistem zaman xətti, nüvə səviyyəsində metrikalar və problemlərin avtomatik aşkarlanması.

İnteraktiv zaman xətti

Systrace HTML hesabatı çoxsəviyyəli zaman xətti ehtiva edir, burada hər bir yol bir prosesə və ya thread-ə uyğundur. Zaman şkalasını yaxınlaşdırmaq və uzaqlaşdırmaq, detalları görmək üçün hadisələrə klikləmək olar (müddət, başladıcı proses, əlavə arqumentlər). Rəng kodlaşdırması sürətli naviqasiyaya kömək edir: yaşıl bloklar — proses işi, mavi — gözləmə, narıncı — kəsilmə, ağ — boş vəziyyət.

Alert mesajları

Systrace izi avtomatik analiz edir və problemli yerləri göstərən Alert mesajları çıxarır. Məsələn: “Buffer underrun — SurfaceFlinger VSync-dən əvvəl bufer ala bilmədi” və ya “Long Binder transaction — Binder_1 thread-də 42 ms”. Hər alert zaman xəttinin müvafiq hissəsinə keçid və düzəliş tövsiyəsi ehtiva edir. Bu, saatlarla əl analizini qənaət edir və əl ilə loglama əvəzinə Systrace istifadə etməyin əsas səbəblərindən biridir.

Trace.beginSection metodu

Developer Trace.beginSectionTrace.endSection API vasitəsilə Systrace izinə öz etiketlərini əlavə edə bilər. Bu, kritik kod hissələrinin icrasını birbaşa sistem zaman xəttində izləməyə imkan verir — məsələn, məlumat yükləməsinin başlanğıcı və sonunu və ya düzən hesablanmasını qeyd etmək. Etiketlər tətbiq yolunda ayrı bloklar kimi göstərilir və sistem hadisələri ilə yanaşı görünür.

KateqoriyaMəlumatTipik istifadə
schedKontekst dəyişmələri, boş vəziyyətlərThread bloklanmaları, contention
gfxVSync, bufer hazırlığı, HWCKadr düşmələri, jank
binderBinder əməliyyatları, gecikməIPC gecikmələri, uzaq çağırışlar
freqCPU tezliyi, miqyaslama qubernatoruThrottling, enerji istehlakı
gfx + AGIGPU əmrləri, şeyderlərOyun performansı

Systrace necə işə salınır

Systrace-i işə salmağın iki yolu var: Android Studio CPU Profiler vasitəsilə (“Trace System Calls” rejimi) və ya platform-tools qovluğundan systrace.py python skripti ilə komanda xətti vasitəsilə. Hər metodun öz tətbiq ssenariləri var.

Android Studio vasitəsilə işə salma

Cihazı qoşun, Profiler-i açın (View → Tool Windows → Profiler), prosesinizi seçin, CPU sekmesine keçin, “Trace System Calls” rejimini seçin və Record düyməsini basın. 5–30 saniyədən sonra Stop düyməsini basın — Android Studio cihazda Systrace-i işə salacaq, tamamlanmasını gözləyəcək və nəticəni yükləyəcək. Məhdudiyyət: qeyd yalnız Profiler açıq olduqda mümkündür, bu da uzun ssenarilər və ya avtomatlaşdırma üçün əlverişsizdir.

Komanda xəttindən işə salma

Daha çevik nəzarət üçün systrace.py skriptindən istifadə edin. İz kateqoriyalarını, müddəti və çıxış faylının adını göstərin. Nümunə: 10 saniyə ərzində gfx, input və sched məlumatlarının tutulması. İşə salmaq üçün Python 2.7+ və USB debuging ilə qoşulmuş cihaz tələb olunur. Android 12+-da Systrace Perfetto ilə əvəz edilmişdir — əmr eyni qalır, lakin skript çağırışları perfetto-ya yönləndirir.

bash
# Systrace-in 10 saniyə əsas işə salınması
$ python systrace.py \
    --time=10 \
    -o trace.html \
    gfx input sched

# Yalnız UI analizi üçün gfx kateqoriyası
$ python systrace.py \
    --time=5 \
    -t gfx \
    -o ui_trace.html

Kodda xüsusi etiketlərin qurulması

Kodunuzun Systrace zaman xəttində görünməsi üçün kritik hissəni Trace.beginSection / Trace.endSection ilə əhatə edin. Vacibdir ki, beginSectionendSection ciddi şəkildə qoşalaşmış olsun — əks halda Systrace səhv zaman xətti göstərəcək. Kotlin-də istisna halında belə bölmənin bağlanmasını təmin etmək üçün inline-extension istifadə etmək rahatdır.

kotlin
import android.os.Trace

fun traceSection(name: String, block: () -> Unit) {
    Trace.beginSection(name)
    try {
        block()
    } finally {
        Trace.endSection()
    }
}

// Kodda istifadə
traceSection("load_screen_data") {
    fetchData()
    updateUI()
}

Systrace HTML hesabatının oxunması

Systrace hesabatı — Chrome, Edge və ya Firefox-da açıla bilən müstəqil HTML faylıdır. İnteraktiv zaman xətti, proses seçim paneli, alert mesajları siyahısı və əsas metrikaları (kadr sürəti, CPU istifadəsi, binder əməliyyatları) ehtiva edir. Hesabatın strukturunu başa düşmək effektiv profilləmə üçün əsas bacarıqdır.

Zaman xətti və naviqasiya

Zaman xətti vaxtı soldan sağa göstərir. Hər proses və thread — ayrı bir yol. W/S düymələri yaxınlaşdırır/uzaqlaşdırır, A/D zaman boyunca hərəkət edir. Bölməni böyütmək üçün siçan ilə sahəni seçin. VSync xətləri kadr sərhədlərini göstərir (60 FPS-də hər 16.6 ms). Əgər iki VSync xətti arasında tam render dövrü sığmırsa — kadr buraxılmışdır. SurfaceFlinger yoluna diqqət yetirin: uzun müddət məşğuldursa (narıncı blok), təbəqə kompozisiyası ümumi renderləməni yavaşladır.

Alert mesajlarının analizi

Hesabatın sol hissəsindəki Alerts paneli avtomatik aşkarlanmış problemləri ehtiva edir. Hər alert kliklənə bilər — klik edildikdə zaman xətti problemli anı göstərir. Ən çox rast gəlinən alertlər: “Long Sync” (thread-in uzun sinxronizasiyası), “Scheduling Delay” (planlayıcı gecikməsi), “Buffer Overrun” (SurfaceFlinger buferinin daşması). Əgər alert Scheduling Delay üçün təxminən 100 ms göstərirsə, bu, UI thread-in fon yükü səbəbindən CPU gözlədiyini bildirir — ağır hesablamaları Worker Thread-ə köçürmək lazımdır.

Frame Lifecycle və jank

Buraxılmış kadrların analizi üçün SurfaceFlinger və app.gfx yollarını aktivləşdirin. Hər kadr düzbucaqlı kimi göstərilir: yaşıl (≤16 ms), sarı (16–32 ms), qırmızı (>32 ms). Tətbiq yolunda qırmızı düzbucaqlı görsəniz, üzərinə klikləyin — Systrace limiti keçən metodu (və ya sistem çağırışını) göstərəcək. Google (Android Performance Patterns, 2023) məlumatına görə, jank problemlərinin 70%-i uzun onBindViewHolder və ya tez-tez GC səbəbindən yaranır.

Systrace vs Perfetto: yeni formata keçid

Perfetto — Google tərəfindən Android 9-da (Pie) eksperimental alət kimi təqdim edilmiş və Android 12-dən başlayaraq əsas alətə çevrilmiş Systrace-in varisidir. Perfetto müasir protobuf məlumat formatından istifadə edir, uzun sessiyaları (saniyələr əvəzinə saatlar) dəstəkləyir və izlərə baxmaq üçün Web UI-ə malikdir. İki sistem arasındakı əsas fərqləri nəzərdən keçirək.

MeyarSystracePerfetto
FormatHTML hesabatı (trace.html)Protobuf (.trace / .perfetto-trace)
Müddət60 saniyəyə qədərSaatlar, gigabayt məlumat
İnterfeysDaxili HTMLWeb UI (ui.perfetto.dev)
KateqoriyalarSabit (ftrace + atrace)Genişləndirilə bilən (izə SQL sorğuları)
MobillikYalnız AndroidAndroid, Linux, Chrome, Windows

Perfetto-ya keçidə baxmayaraq, Systrace ilə iş bacarığı aktual olaraq qalır: Android 11-ə qədər cihazlarda standart olaraq istifadə olunur, Perfetto isə Systrace kateqoriyaları ilə geriyə uyğunluğu qoruyur. Android Studio CPU Profiler yeni cihazlar üçün Perfetto, köhnələr üçün Systrace istifadə edir — istifadəçi üçün şəffaf şəkildə. CI/CD üçün Perfetto tövsiyə olunur, çünki onun formatı Python və SQL vasitəsilə avtomatik emal üçün əlverişlidir.

Systrace istifadə nümunələri

Systrace-i praktiki mənimsəmək üçün iki ssenarini nəzərdən keçirək: sürüşdürmə zamanı buraxılmış kadrların səbəbinin tapılması və UI thread-i bloklayan tez-tez GC-nin diaqnostikası.

RecyclerView sürüşdürməsində jank axtarışı

Systrace-i gfx kateqoriyası ilə 10 saniyə işə salın, tətbiqdə siyahını sürüşdürün. Hesabatda qırmızı kadrları olan hissələri tapın. Problemli kadra klikləyin və app yoluna baxın — əgər orada “inflateLayout” və ya “onBindViewHolder” bloku >16 ms genişlikdədirsə, problem düzənin genişlənməsi və ya məlumat bağlanmasındadır. Həll: düzəni optimallaşdırın (ViewGroup dərinliyini azaldın, ViewStub), şəkil yükləməsini Glide ilə onAttachedToWindow-da aparın.

GC Throughput diaqnostikası

freq və sched kateqoriyaları ilə Systrace GC dövrlərinin UI thread-i nə qədər tez-tez sıxışdırdığını görməyə imkan verir. Zaman xəttində tətbiq yolunu tapın — 20–50 ms müddətində “Concurrent GC” adlı dövri bloklar görürsünüzsə, zibil yığıcı çox tez-tez işləyir. Detallı analiz üçün “dalvik” kateqoriyasını əlavə edin. Həll: Bitmap-i ByteBuffer-ə çevirin, tez-tez ayrılmalar üçün obyekt hovuzundan (ObjectPool) istifadə edin, ART arqumenti ilə yığın parçalanmasını azaldın.

bash
# UI + GC analizi üçün kateqoriyalarla işə salma
$ python systrace.py \
    --time=15 \
    -o gc_analysis.html \
    gfx sched dalvik freq

# Təkrarlana bilən test üçün 30 saniyə müddətində tutma
$ python systrace.py \
    --time=30 \
    --app=com.example.app \
    -o app_trace.html

Tez-tez verilən suallar

Systrace root hüquqları olmadan işə salına bilərmi?

Bəli, Systrace-i işə salmaq üçün root girişi tələb olunmur. Alət USB debuging aktiv olan istənilən cihazda mövcud olan atrace-dən istifadə edir. Bəzi kateqoriyalar (power, freq) sistem imzası tələb edə bilər, lakin əsas olanlar (gfx, sched, input) bütün cihazlarda işləyir.

İz faylının maksimum ölçüsü nə qədərdir?

60 saniyə məhdudiyyəti ftrace halqa buferinin həcmi ilə bağlıdır — uzun müddətli yazı zamanı bufer üzərinə yazılır. Perfetto bu məhdudiyyəti aradan qaldırır: saatlarla yazmaq və USB vasitəsilə və ya diskə axın yazısı ilə bir neçə giqabayta qədər izlər əldə etmək olar.

Niyə HTML hesabatında mənim tətbiqimin məlumatları yoxdur?

Mümkün səbəblər: tətbiq debuggable rejiminə keçirilməyib, manifestdə android:debuggable=”true” bayrağı əlavə edilməyib və ya release quruluşu istifadə olunur. Həmçinin kateqoriyalarda --app=com.example.app göstərildiyini yoxlayın — əks halda Systrace yalnız sistem proseslərini tutur.

Native koddan Systrace-ə öz etiketimi necə əlavə edə bilərəm?

C++ üçün libcutils kitabxanasından ATRACE_BEGINATRACE_END istifadə edin. Başlıq faylını qoşun və lazımi hissəni əhatə edin. Etiket Systrace-də prosesinizin yolunda görünəcək, bu xüsusilə oyun mühərriklərinin (Unity, Unreal) analizi üçün faydalıdır.

Android 12+-da Systrace-i nə ilə əvəz etmək olar?

Android 12 və daha yuxarı versiyalarda Perfetto istifadə edin. ADB vasitəsilə cihazda perfetto agentini quraşdırın, JSON formatında yazmağa başlayın. Sürətli baxış üçün Perfetto Web UI (ui.perfetto.dev), CI üçün isə Pythonda TraceProcessor ilə əmr ixracından istifadə edin.

Nəticə

  • Systrace — ftrace və atrace vasitəsilə nüvə səviyyəsində işləyən Android sistem traceri
  • Vahid zaman xəttində CPU, GPU, SurfaceFlinger yükünü və Binder əməliyyatlarını göstərir
  • HTML hesabatı problemlər və tövsiyələrlə avtomatik Alert mesajları ehtiva edir
  • Android Studio Profiler və ya systrace.py ilə komanda xətti vasitəsilə işə salınır
  • UI thread kritikdir: 60 FPS üçün hər kadr 16.6 ms-ə sığmalıdır
  • Android 12+-da Systrace uzun sessiyalar və SQL sorğuları dəstəyi ilə Perfetto ilə əvəz edilmişdir
  • Sistem və tətbiq profilləməsi üçün Systrace və Traceview birləşdirilməsi tövsiyə olunur

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun