Langsung ke konten

Arsip

Queue

4 artikel
Teknologi 22 Sep 2026 7 min read

Phase Tag Completion Queue NVMe Menandai Entri yang Digunakan Ulang

Completion Queue NVMe adalah array melingkar berukuran tetap di memori host. Controller menulis entri completion ketika command selesai, sedangkan software host mengonsumsi entri tersebut dan memajukan head queue. Pada akhirnya, kedua sisi kembali ke slot yang masih menyimpan data dari putaran ring sebelumnya. Penggunaan ulang memori menimbulkan ambiguitas kecil tetapi penting. Sebuah slot dapat berisi completion entry yang formatnya valid walaupun controller belum menulis completion baru ke posisi itu. Mengosongkan setiap entri yang sudah dikonsumsi akan menambah traffic memori dan tetap memerlukan koordinasi yang tepat antara host dan controller.

Teknologi 22 Sep 2026 6 min read

Phase Tag Completion Queue NVMe Membedakan Entri Baru Setelah Ring Wrap

Completion queue NVMe adalah struktur memori berbentuk ring yang dipakai bersama oleh controller dan software host. Controller menaruh completion queue entry setelah command selesai, sedangkan host mengonsumsi entry tersebut dan memajukan queue head. Saat salah satu pihak mencapai slot terakhir, indeks kembali ke slot nol. Wrap tersebut menimbulkan persoalan state yang kecil tetapi penting. Memori queue masih menyimpan byte dari completion sebelumnya. Entry yang tidak nol pada posisi head saat ini belum membuktikan bahwa controller sudah menaruh completion baru di sana. NVMe menangani kondisi ini dengan Phase Tag satu bit pada setiap completion queue entry.

Rekayasa Perangkat Lunak 21 Sep 2026 5 min read

Bounded Queue Mengubah Overload Menjadi Backpressure yang Eksplisit

Bounded Queue Mengubah Overload Menjadi Backpressure yang Eksplisit Queue dapat menyerap perbedaan singkat antara arrival rate dan processing rate. Buffer semacam ini berguna ketika lonjakan hanya berlangsung sementara. Risikonya muncul saat queue tidak memiliki batas yang bermakna: overload berkepanjangan tidak terlihat sebagai kegagalan admission, melainkan sebagai backlog yang terus tumbuh, konsumsi memori yang meningkat, dan request yang selesai setelah latency budget-nya lewat. Bounded queue mengubah kontrak tersebut. Setelah kapasitas habis, producer harus menunggu, menerima penolakan, membuang work tertentu, atau mengarahkannya ke tempat lain. Overload tidak lagi tersembunyi di dalam buffer yang terus membesar.

Python 09 Sep 2026 8 min read

Matikan Queue Worker asyncio dengan Bersih

Pool worker asynchronous sering dimulai dengan pola sederhana: producer memasukkan job ke asyncio.Queue, consumer melakukan loop pada get(), dan aplikasi menunggu join() sebelum keluar. Bagian yang canggung adalah shutdown. Desain lama biasanya memasukkan satu nilai sentinel ke queue untuk setiap worker, membatalkan consumer setelah join(), atau mempertahankan stop event terpisah. Setiap pendekatan dapat bekerja, tetapi masing-masing menambahkan protokol kedua di samping queue itu sendiri. Python 3.13 menambahkan asyncio.Queue.shutdown() dan exception asyncio.QueueShutDown. Keduanya memungkinkan queue merepresentasikan lifecycle-nya sendiri: terbuka untuk producer, dalam proses shutdown sementara pekerjaan yang ada dikuras, lalu akhirnya tertutup bagi consumer.