Systrace — apa itu, alat pelacakan sistem Android

Penulis: IT Sectr Diterbitkan: 2026-03-31 Waktu membaca: 9 mnt

Systrace adalah alat pelacakan sistem Android yang mengumpulkan data tentang kerja kernel Linux, prosesor, akselerator grafis, dan semua proses sistem dalam waktu singkat. Tidak seperti Traceview yang berfokus pada metode di dalam aplikasi, Systrace menunjukkan gambaran sistem: beban setiap inti CPU, kerja SurfaceFlinger, panggilan Binder, dan siklus GC. Menurut Google, 2024, alat ini sangat diperlukan untuk mendiagnosis frame yang terlewat, pengumpulan sampah yang sering, dan anomali di thread UI.

Poin Utama

  • Systrace — alat pelacakan sistem Android tingkat rendah, bekerja melalui atrace/ftrace
  • Jejak berisi data CPU, GPU, thread, SurfaceFlinger, dan Binder untuk periode hingga 60 detik
  • Analisis memungkinkan melihat penyebab pasti frame terlewat dan pemblokiran thread UI
  • Integrasi dengan Android Studio dan baris perintah untuk penangkapan fleksibel dan otomatisasi
  • Perfetto — penerus Systrace di Android 12+, menggunakan format protobuf bersama

Apa itu Systrace

Systrace adalah alat baris perintah dari Android SDK yang menangkap dan menggabungkan data dari beberapa sumber pelacakan kernel (ftrace) dan ruang pengguna (atrace) menjadi satu laporan HTML. Alat ini muncul di Android 4.1 (Jelly Bean) sebagai pengganti alat traceview lama untuk profiling sistem dan untuk waktu yang lama tetap menjadi alat standar diagnostik kinerja di platform Android.

Arsitektur Systrace

Systrace bergantung pada ftrace — mekanisme pelacakan kernel Linux, tersedia di Android mulai versi 4.1. Saat dijalankan, Systrace mengaktifkan kategori jejak tertentu: sched (penjadwal tugas), freq (frekuensi CPU), idle (status diam), workq (antrian kerja), binder, gfx, dan lainnya. Data dikumpulkan dalam buffer melingkar kernel dan setelah dihentikan digabungkan menjadi satu file trace.html yang dapat dibuka di browser mana pun.

Systrace dalam konteks Android Studio

Mulai Android Studio 3.1, Systrace terintegrasi dalam CPU Profiler. Dalam mode “Trace System Calls”, profiler menjalankan Systrace pada perangkat yang terhubung dan menampilkan hasilnya langsung di jendela Android Studio. Ini menghilangkan kebutuhan untuk bekerja dengan baris perintah untuk kasus dasar, namun tetap mempertahankan fungsionalitas penuh — semua kategori jejak, pemfilteran, dan garis waktu interaktif. Kinerja perangkat selama pelacakan sedikit berkurang, karena ftrace dirancang untuk overhead minimal.

Bagaimana Systrace bekerja

Systrace menggunakan dua mekanisme pengumpulan data: ftrace di level kernel untuk peristiwa sistem dan atrace di ruang pengguna untuk penanda khusus Android. ftrace mencatat peralihan konteks (sched_switch), perubahan frekuensi CPU (cpu_frequency), interupsi (irq_handler_entry), dan peristiwa lainnya. atrace menambahkan penanda dari framework Android — awal dan akhir rendering frame, panggilan SurfaceFlinger, dan transaksi Binder.

Rantai rendering frame di Systrace

Fitur utama Systrace — visualisasi rantai rendering setiap frame: aplikasi → BufferQueue → SurfaceFlinger → HWC (composer) → Display. Jika pada tahap mana pun terjadi keterlambatan, Systrace menunjukkan penyebab pastinya: aplikasi tidak sempat menyiapkan buffer, SurfaceFlinger menunggu VSync, atau HWC tidak dapat menyusun layer. Frame Lifecycle pada garis waktu diwarnai berdasarkan status: hijau (tepat waktu), kuning (tertunda), merah (terlewat). Visualisasi ini adalah alat utama untuk mengoptimalkan kinerja UI.

Kategori jejak

Systrace mendukung lebih dari 20 kategori jejak, yang masing-masing mencakup serangkaian peristiwa terkait. Kategori penting: gfx (rendering grafis), input (pemrosesan masukan), view (sistem View), webview (WebView), power (konsumsi daya), hal (abstraksi perangkat keras). Untuk profiling game, kategori gfx dengan detail hingga perintah GPU melalui AGI (Android GPU Inspector) berguna.

Fitur utama Systrace

Systrace menyediakan serangkaian fitur unik untuk Android yang tidak tersedia di profiler lain: garis waktu sistem, metrik level kernel, dan deteksi masalah otomatis.

Garis waktu interaktif

Laporan HTML Systrace berisi garis waktu bertingkat, di mana setiap jalur sesuai dengan satu proses atau thread. Skala waktu dapat diperbesar dan diperkecil, peristiwa dapat diklik untuk melihat detail (durasi, proses inisiator, argumen tambahan). Pengkodean warna membantu orientasi cepat: blok hijau — kerja proses, biru — menunggu, oranye — interupsi, putih — diam.

Pesan Alert

Systrace secara otomatis menganalisis jejak dan menampilkan pesan Alert dengan menunjukkan lokasi masalah. Contoh: “Buffer underrun — SurfaceFlinger tidak sempat menerima buffer sebelum VSync” atau “Long Binder transaction — 42 ms di thread Binder_1”. Setiap alert berisi tautan ke bagian garis waktu yang sesuai dan rekomendasi perbaikan. Ini menghemat jam analisis manual dan merupakan salah satu alasan utama menggunakan Systrace daripada pencatatan manual.

Metode Trace.beginSection

Pengembang dapat menambahkan penanda sendiri ke jejak Systrace melalui API Trace.beginSection dan Trace.endSection. Ini memungkinkan pelacakan eksekusi bagian kode kritis langsung di garis waktu sistem — misalnya, menandai awal dan akhir pemuatan data atau perhitungan tata letak. Penanda ditampilkan sebagai blok terpisah di jalur aplikasi dan terlihat di samping peristiwa sistem.

KategoriDataPenggunaan umum
schedPeralihan konteks, status diamPemblokiran thread, contention
gfxVSync, persiapan buffer, HWCFrame drop, jank
binderTransaksi Binder, latensiKeterlambatan IPC, panggilan jarak jauh
freqFrekuensi CPU, scaling governorThrottling, konsumsi daya
gfx + AGIPerintah GPU, shaderKinerja game

Cara menjalankan Systrace

Menjalankan Systrace dapat dilakukan dengan dua cara: melalui Android Studio CPU Profiler (mode “Trace System Calls”) atau melalui baris perintah menggunakan skrip python systrace.py dari folder platform-tools. Setiap cara memiliki skenario penerapannya sendiri.

Menjalankan melalui Android Studio

Hubungkan perangkat, buka Profiler (View → Tool Windows → Profiler), pilih proses Anda, buka tab CPU, pilih mode “Trace System Calls” dan tekan Record. Setelah 5–30 detik tekan Stop — Android Studio akan menjalankan Systrace di perangkat, menunggu selesai, dan memuat hasilnya. Keterbatasan: perekaman hanya mungkin dilakukan saat Profiler terbuka, yang tidak nyaman untuk skenario panjang atau otomatisasi.

Menjalankan dari baris perintah

Untuk kontrol yang lebih fleksibel, gunakan skrip systrace.py. Tentukan kategori jejak, durasi, dan nama file keluaran. Contoh: menangkap data gfx, input, dan sched selama 10 detik. Untuk menjalankan diperlukan Python 2.7+ dan perangkat terhubung dengan debugging USB. Di Android 12+, Systrace telah digantikan oleh Perfetto — perintahnya tetap sama, tetapi skrip mengarahkan panggilan ke perfetto.

bash
# Menjalankan systrace dasar selama 10 detik
$ python systrace.py \
    --time=10 \
    -o trace.html \
    gfx input sched

# Hanya kategori gfx untuk analisis UI
$ python systrace.py \
    --time=5 \
    -t gfx \
    -o ui_trace.html

Mengatur penanda kustom dalam kode

Agar kode Anda muncul di garis waktu Systrace, bungkus bagian kritis dengan Trace.beginSection / Trace.endSection. Penting bahwa beginSection dan endSection benar-benar berpasangan — jika tidak, Systrace akan menampilkan garis waktu yang tidak akurat. Di Kotlin, lebih mudah menggunakan inline-extension untuk menjamin penutupan bagian bahkan saat terjadi pengecualian.

kotlin
import android.os.Trace

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

// Penggunaan dalam kode
traceSection("load_screen_data") {
    fetchData()
    updateUI()
}

Membaca laporan HTML Systrace

Laporan Systrace adalah file HTML mandiri yang dapat dibuka di Chrome, Edge, atau Firefox. Ini berisi garis waktu interaktif, panel pemilihan proses, daftar pesan alert, dan metrik utama (frame rate, penggunaan CPU, transaksi Binder). Memahami struktur laporan adalah keterampilan kunci untuk profiling yang efektif.

Garis waktu dan navigasi

Garis waktu menampilkan waktu dari kiri ke kanan. Setiap proses dan thread — jalur terpisah. Tombol W/S memperbesar/memperkecil, A/D bergerak dalam waktu. Pilih area dengan mouse untuk memperbesar bagian. Garis VSync menunjukkan batas frame (setiap 16,6 ms pada 60 FPS). Jika antara dua garis VSync tidak muat siklus rendering penuh — frame terlewat. Perhatikan jalur SurfaceFlinger: jika lama sibuk (blok oranye), berarti komposisi layer memperlambat rendering keseluruhan.

Analisis pesan alert

Panel Alerts di sisi kiri laporan berisi masalah yang terdeteksi secara otomatis. Setiap alert dapat diklik — saat diklik, garis waktu berpindah ke momen masalah. Alert paling umum: “Long Sync” (sinkronisasi thread panjang), “Scheduling Delay” (keterlambatan penjadwal), “Buffer Overrun” (buffer SurfaceFlinger meluap). Jika alert menunjukkan nilai sekitar 100 ms untuk Scheduling Delay, ini langsung menunjukkan bahwa thread UI menunggu CPU karena beban latar belakang — komputasi berat harus dipindahkan ke Worker Thread.

Frame Lifecycle dan jank

Untuk analisis frame terlewat, aktifkan jalur SurfaceFlinger dan app.gfx. Setiap frame ditampilkan sebagai persegi panjang: hijau (≤16 ms), kuning (16–32 ms), merah (>32 ms). Jika Anda melihat persegi panjang merah di jalur aplikasi, klik di atasnya — Systrace akan menunjukkan metode (atau panggilan sistem) mana yang melebihi batas. Menurut Google (Android Performance Patterns, 2023), 70% masalah jank disebabkan oleh onBindViewHolder yang panjang atau GC yang sering.

Systrace vs Perfetto: transisi ke format baru

Perfetto adalah penerus Systrace, diperkenalkan oleh Google di Android 9 (Pie) sebagai alat eksperimental dan menjadi alat utama mulai Android 12. Perfetto menggunakan format data protobuf modern, mendukung sesi panjang (jam bukan detik), dan memiliki Web UI untuk melihat jejak. Mari kita bahas perbedaan utama antara kedua sistem.

KriteriaSystracePerfetto
FormatLaporan HTML (trace.html)Protobuf (.trace / .perfetto-trace)
DurasiHingga 60 detikJam, gigabyte data
AntarmukaHTML bawaanWeb UI (ui.perfetto.dev)
KategoriTetap (ftrace + atrace)Dapat diperluas (kueri SQL pada jejak)
MobilitasHanya AndroidAndroid, Linux, Chrome, Windows

Meskipun transisi ke Perfetto, keterampilan bekerja dengan Systrace tetap relevan: pada perangkat hingga Android 11 digunakan secara default, dan Perfetto mempertahankan kompatibilitas mundur dengan kategori Systrace. Android Studio CPU Profiler menggunakan Perfetto untuk perangkat baru dan Systrace untuk yang lama — transparan bagi pengguna. Untuk CI/CD, disarankan menggunakan Perfetto karena formatnya cocok untuk pemrosesan otomatis melalui Python dan SQL.

Contoh penggunaan Systrace

Untuk penguasaan praktis Systrace, mari kita bahas dua skenario: menemukan penyebab frame terlewat saat menggulir dan mendiagnosis GC sering yang memblokir thread UI.

Mencari jank saat menggulir RecyclerView

Jalankan Systrace dengan kategori gfx selama 10 detik, gulir daftar di aplikasi. Dalam laporan, temukan bagian dengan frame merah. Klik pada frame bermasalah dan lihat jalur app — jika ada blok “inflateLayout” atau “onBindViewHolder” dengan lebar >16 ms, masalahnya ada pada pengembangan tata letak atau pengikatan data. Solusi: optimalkan tata letak (kurangi kedalaman ViewGroup, ViewStub), pindahkan pemuatan gambar ke Glide dengan onAttachedToWindow.

Diagnostik GC Throughput

Systrace dengan kategori freq dan sched memungkinkan melihat seberapa sering siklus GC mendesak thread UI. Temukan jalur aplikasi di garis waktu — jika Anda melihat blok periodik dengan durasi 20–50 ms bernama “Concurrent GC”, berarti pengumpul sampah bekerja terlalu sering. Tambahkan kategori “dalvik” untuk analisis mendetail. Solusi: konversikan Bitmap ke ByteBuffer, gunakan kumpulan objek (ObjectPool) untuk alokasi sering, kurangi fragmentasi heap melalui argumen ART.

bash
# Menjalankan dengan kategori untuk analisis UI + GC
$ python systrace.py \
    --time=15 \
    -o gc_analysis.html \
    gfx sched dalvik freq

# Penangkapan dengan durasi 30 detik untuk tes yang dapat diulang
$ python systrace.py \
    --time=30 \
    --app=com.example.app \
    -o app_trace.html

Pertanyaan yang Sering Diajukan

Bisakah Systrace dijalankan tanpa hak root?

Ya, untuk menjalankan Systrace tidak diperlukan akses root. Alat ini menggunakan atrace, yang tersedia di perangkat mana pun dengan debugging USB diaktifkan. Beberapa kategori (power, freq) mungkin memerlukan tanda tangan sistem, tetapi kategori dasar (gfx, sched, input) berfungsi di semua perangkat.

Berapa ukuran maksimum file jejak?

Batasan 60 detik terkait dengan volume buffer melingkar ftrace — saat perekaman panjang, buffer akan ditimpa. Perfetto menghilangkan batasan ini: Anda dapat merekam berjam-jam dan mendapatkan jejak berukuran hingga beberapa gigabyte dengan transfer melalui USB atau perekaman streaming ke disk.

Mengapa laporan HTML tidak berisi data aplikasi saya?

Kemungkinan penyebab: aplikasi tidak dialihkan ke mode debuggable, bendera android:debuggable=”true” tidak ditambahkan di manifes, atau menggunakan build rilis. Juga periksa apakah dalam kategori ditentukan --app=com.example.app — jika tidak, Systrace hanya menangkap proses sistem.

Bagaimana cara menambahkan penanda sendiri ke Systrace dari kode native?

Untuk C++, gunakan ATRACE_BEGIN dan ATRACE_END dari pustaka libcutils. Sertakan file header dan bungkus bagian yang diinginkan. Penanda akan muncul di Systrace pada jalur proses Anda, yang sangat berguna untuk analisis mesin game (Unity, Unreal).

Apa pengganti Systrace di Android 12+?

Di Android 12 dan yang lebih baru, gunakan Perfetto. Instal agen perfetto di perangkat melalui ADB, mulai perekaman dalam format JSON. Untuk tampilan cepat, gunakan Perfetto Web UI (ui.perfetto.dev), dan untuk CI — ekspor perintah dengan TraceProcessor di Python.

Ringkasan

  • Systrace — tracer sistem Android, bekerja di level kernel melalui ftrace dan atrace
  • Menunjukkan beban CPU, GPU, SurfaceFlinger dan transaksi Binder pada satu garis waktu
  • Laporan HTML berisi pesan Alert otomatis dengan petunjuk masalah dan rekomendasi
  • Menjalankan melalui Android Studio Profiler atau baris perintah dengan systrace.py
  • Thread UI sangat penting: setiap frame harus muat dalam 16,6 ms untuk 60 FPS
  • Di Android 12+, Systrace digantikan oleh Perfetto dengan dukungan sesi panjang dan kueri SQL
  • Disarankan menggabungkan Systrace dan Traceview untuk profiling sistem dan aplikasi

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga