- Setelah peluncuran layer cache baru, latensi rata-rata memburuk dari 112ms menjadi 122ms, tetapi median membaik dari 99ms menjadi 54ms dan p99 memburuk dari 309ms menjadi 678ms, sehingga sulit menilai keberhasilan atau kegagalan hanya dengan satu nilai statistik
- Setelah peluncuran, distribusi latensi terbelah dari satu puncak menjadi dua puncak; jika cumulative distribution function (CDF) ditumpuk, sekitar 140ms menjadi batas: request yang cepat membaik, sedangkan request yang lambat memburuk
- Shift function yang menunjukkan perubahan per persentil, serta grafik ridgeline harian dan heatmap, memperlihatkan besarnya perbaikan dan regresi, serta proses membesarnya kelompok request lambat saat persentase rollout naik dari 0% ke 100%
- Saat data dipecah berdasarkan hasil cache dan ukuran respons, cache hit untuk respons kecil menjadi lebih cepat, sedangkan cache miss untuk respons besar menjadi lebih lambat karena hop tambahan; ini mengonfirmasi penyebab terbentuknya distribusi bimodal
- Jika hanya memilih rata-rata atau satu persentil tertentu, penilaian yang saling bertentangan pun bisa dibenarkan; karena itu, perlu melihat seluruh distribusi dan subkelompok bersama-sama agar dapat berujung pada tindakan seperti memperbesar ukuran objek maksimum cache atau memecah respons besar
Peningkatan Performa yang Tidak Terlihat di Produksi
- Peningkatan performa terkait
lldterlihat di benchmark, tetapi di dashboard produksi nyata sulit menemukan perubahan yang jelas karena noise data - Kecepatan build dapat sangat bervariasi bergantung pada banyak variabel seperti cold cache, incremental build, eksekusi lokal/jarak jauh, kondisi sistem, dan workload
- Contoh evaluasi performa build dengan cumulative distribution function (CDF) menjadi pemicu untuk melihat data itu sendiri dengan berbagai cara, bukan hanya melalui satu gambar atau nilai statistik
- Semua contoh dibuat dari satu dataset sintetis dengan seed tetap, dan skrip lengkap, termasuk shebang
nix-shell, dapat mereproduksi setiap gambar apa adanya di lingkungan Nix - AI digunakan untuk membuat data dan chart bagi cerita ini
Peluncuran Cache yang Tampak Gagal Jika Dilihat dari Rata-rata
- Layer cache baru diluncurkan selama satu minggu untuk mengurangi latensi request layanan web, tetapi latensi rata-rata naik 9%, dari 112ms menjadi 122ms
- Jika hanya melihat rata-rata, perubahan ini mudah dinilai sebagai regresi yang layak di-rollback serta memicu penanganan insiden dan postmortem
Empat Penilaian dari Satu Data yang Sama
- Statistik sebelum dan sesudah peluncuran menunjuk ke arah yang berbeda
- Rata-rata: 112ms → 122ms, memburuk 9%
- Median p50: 99ms → 54ms, membaik 46%
- p95: 224ms → 454ms, memburuk 103%
- p99: 309ms → 678ms, memburuk 119%
- Rata-rata menunjukkan regresi ringan, tetapi median menunjukkan request umum hampir dua kali lebih cepat, sementara p99 menunjukkan masalah serius: request terburuk menjadi lebih dari dua kali lebih lambat
- Karena rata-rata dan median yang dihitung dari data yang sama menunjuk ke arah berlawanan, mudah untuk hanya memilih statistik yang mendukung penilaian sendiri
Dua Kelompok Request yang Diungkap Bentuk Distribusi
- Pada grafik densitas, distribusi sebelum peluncuran memiliki satu puncak, tetapi setelah peluncuran terbelah menjadi dua puncak
- Bentuk ini menjelaskan kontradiksi antar nilai statistik, tetapi grafik densitas juga memiliki keterbatasan
- Bentuknya berubah bergantung pada parameter smoothing yang dipilih
- Jika area berisi dari dua distribusi saling bertumpang tindih, grafik sulit dibaca
- Keberadaan dua kelompok terlihat, tetapi posisi persentil seperti median sulit langsung dipahami
Membandingkan Seluruh Persentil dengan CDF
- Cumulative distribution function (CDF) menunjukkan proporsi request yang selesai dalam x milidetik atau kurang untuk setiap latensi
x - Dengan menumpuk CDF sebelum dan sesudah peluncuran dalam satu chart, kita bisa melihat bagaimana setiap persentil di seluruh kelompok request bergeser
- Setelah peluncuran, kurva bergeser ke kiri pada rentang di bawah 140ms sehingga lebih banyak request menjadi lebih cepat dari sebelumnya, tetapi setelah 140ms lebih banyak request menjadi lebih lambat
- Titik sekitar 140ms tempat kedua kurva berpotongan adalah batas di mana efek perubahan berganti dari perbaikan menjadi pemburukan
- Jika dua CDF berpotongan, arah efek berubah bergantung pada persentil yang dipilih, sehingga tidak ada satu persentil pun yang dapat merangkum keseluruhan perubahan
Mengukur Perubahan pada Tiap Persentil
- CDF menunjukkan apakah tiap rentang menjadi lebih cepat atau lebih lambat, tetapi tidak secara langsung menunjukkan besar perubahannya
- Shift function menghitung selisih antara latensi setelah peluncuran dan sebelum peluncuran pada setiap persentil
p- Di bawah 0 adalah rentang yang membaik
- Di atas 0 adalah rentang yang melambat
- Dengan ini, di setiap titik distribusi kita dapat melihat bukan hanya arah perubahan, tetapi juga besarnya
Regresi yang Tumbuh Selama Proses Rollout
- Layer cache baru diperluas secara bertahap dari 0% hingga 100% traffic selama satu minggu; jika hanya membandingkan dua titik sebelum dan sesudah peluncuran, perubahan di tengah akan terlewat
- Pada grafik ridgeline yang menumpuk distribusi harian, seiring rollout berjalan, puncak utama request cepat bergeser ke kiri, dan puncak kedua request lambat muncul di kanan
- Median turun, sementara jumlah dan latensi request lambat diam-diam meningkat
- Latensi kira-kira mengikuti distribusi lognormal, sehingga sumbu x menggunakan skala log
- Pada sumbu linear, puncak request cepat menjulang tinggi dan request lambat tersebar samar, sehingga dua puncak sulit dibaca bersama
- Pada heatmap yang menampilkan kolom harian dan volume traffic per latensi dengan warna, kelompok request baru juga muncul samar
- Jika seluruh minggu digabung menjadi satu nilai agregat, tujuh distribusi harian yang berbeda dan tren perubahannya akan hilang
Mengurai Distribusi Bimodal dengan Cache Hit dan Miss
- Dalam analisis
lldnyata, distribusi bimodal latensi baru terlihat jika data dipecah berdasarkan ukuran binary, misalnya apakah lebih dari 50MiB atau tidak - Pada layer baru dalam contoh sintetis, request terbagi menjadi hit yang dilayani dari cache dan miss yang diteruskan ke backend melalui hop tambahan
- Jika CDF request setelah peluncuran dipisahkan berdasarkan hasil cache, setiap kelompok kembali memiliki satu puncak
- Cache hit bergeser ke kiri dari baseline lama, sehingga menjadi lebih cepat
- Cache miss berada jauh lebih ke kanan karena biaya hop tambahan
Penyebab dan Tindakan yang Ditemukan dari Ukuran Respons
- Cache miss hanyalah mekanisme kerja; untuk memahami request mana yang menyebabkan miss dan mengapa, ukuran respons juga perlu dilihat
- Cache mempertahankan objek kecil yang sering digunakan, tetapi objek besar dikeluarkan atau sejak awal tidak bisa masuk
- Pada jointplot yang menggabungkan hubungan antara latensi dan ukuran respons, dibedakan dengan warna cache hit/miss, serta distribusi densitas di tiap sumbu, kedua kelompok terlihat jelas
- Kelompok respons kecil dan latensi rendah adalah cache hit
- Kelompok respons besar dan latensi tinggi adalah cache miss
- Distribusi bimodal latensi berasal dari bimodalitas distribusi ukuran respons, dan dapat ditangani dengan meningkatkan ukuran objek maksimum cache atau memecah respons besar
Melihat Seluruh Distribusi, Bukan Hanya Satu Grafik
- Satu panel atau grafik tidak cukup untuk memuat seluruh situasi, dan dalam beberapa kasus dapat mengarahkan pada penilaian yang keliru
- Data yang sama perlu dilihat dengan berbagai cara agar bentuk distribusi, efek per persentil, perubahan dari waktu ke waktu, subkelompok, dan penyebabnya dapat dipahami bersama
- Secara khusus, CDF berguna untuk membandingkan beberapa kelompok request sambil memuat seluruh distribusi dalam satu chart
Belum ada komentar.