Topik trending
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
Peningkatan minggu ini ke testnet MegaETH memperbaiki bug kinerja yang sulit dipahami yang menyebabkan waktu miniblock terus meningkat di antara reboot sequencer. Inilah ceritanya. Ini adalah cerita tentang filosofi kami – mengukur, lalu membangun.
Jika seseorang mengunjungi dasbor kinerja MegaETH baru-baru ini, orang mungkin melihat bahwa waktu miniblock telah meningkat selama seminggu menjelang 3 Juni. Sebenarnya, tren seperti itu akan dimulai tepat setelah setiap reboot sequencer sejak peluncuran testnet publik. Sebelumnya, peningkatan yang sering ke sequencer berarti bahwa waktu miniblock tidak akan meningkat dengan jumlah yang dapat dirasakan sebelum tren naik diatur ulang. Namun, peningkatan baru-baru ini tidak memerlukan reboot sequencer, dan tren berlanjut selama berminggu-minggu. Pada tanggal 3 Juni, waktu miniblock hampir mencapai 100ms. Dengan reboot sequencer menjadi lebih kecil kemungkinannya di masa mendatang berkat cadangan panas, inilah saatnya untuk menghilangkan bug untuk selamanya.
Karena kami secara rutin mengumpulkan banyak data telemetri untuk testnet, tim dengan cepat mulai menggali. Penemuan pertama adalah bahwa peningkatan waktu miniblok dipercepat dari waktu ke waktu – tidak hanya waktu miniblok meningkat, tetapi juga meningkat lebih cepat dan lebih cepat. Biasanya, gejala seperti itu akan menyiratkan bahwa pekerjaan yang terlibat dalam membangun setiap miniblok meningkat secara superlinier seiring dengan lebih banyak miniblok yang dibangun. Namun, kami menembak hipotesis setelah beberapa pengukuran dan perhitungan. Kami membangun pipa miniblock agar hampir sepenuhnya asinkron dengan EVM sehingga mencapai waktu miniblock yang rendah secara sewenang-wenang. Ini berarti bahwa berapa pun waktu yang dibutuhkan untuk membangun miniblok, EVM akan mengeksekusi transaksi sepanjang waktu. Dengan demikian, waktu pembuatan miniblok yang lebih lama akan menyebabkan jumlah transaksi per miniblok yang lebih tinggi, tetapi kami tidak mengamatinya. Jadi, masalahnya tidak bisa dengan membangun miniblok. Pemeriksaan kode yang cermat menegaskan kesimpulan ini – tidak ada bagian dalam proses pembuatan blok mini yang memiliki kompleksitas superlinier.
Tim memperluas pencarian, dan pelaku sebenarnya dengan cepat muncul. Waktu yang dibutuhkan untuk melakukan blok EVM telah meningkat; lebih lanjut, waktu melakukan sangat linier dengan jumlah blok EVM yang dihasilkan sejak reboot terakhir. Saat melakukan blok EVM, lingkungan EVM seperti ketinggian blok diperbarui, sehingga EVM harus dijeda dan tidak dapat mengeksekusi transaksi, yang berarti tidak ada miniblok juga. Ada interval tetap 1 detik antara blok EVM. Dalam anggaran 1 detik, waktu komitmen yang meningkat secara linier menyebabkan durasi yang menurun secara linier untuk menjalankan transaksi, yang pada gilirannya menyebabkan penurunan jumlah miniblok yang diproduksi secara linier. Jika kita mengambil timbal baliknya, kita mendapatkan waktu miniblok rata-rata, yang berbanding terbalik dalam waktu. Ini persis seperti bentuk fungsi yang kita lihat di dasbor kinerja. Matematika diperiksa.
Pada saat itu, kami tahu persis apa yang harus dicari: beberapa prosedur yang beban kerjanya meningkat secara linier dari waktu ke waktu di bagian tertentu dari kode yang menangani melakukan blok EVM. Sisa pekerjaan itu mudah. Tim mendorong peningkatan minggu ini dan waktu miniblock belum merangkak naik.
Jadi, apa pelajarannya? Saya pikir itu menunjukkan lagi kekuatan ketika teknik dipandu oleh pengukuran yang cermat dan prinsip-prinsip pertama. Tim sedang mengerjakan peningkatan lain dengan filosofi yang sama. Menantikan!


14,4K
Teratas
Peringkat
Favorit