Tulisan Terbaru
Wawasan baru maupun tips
Satu Detik Yang Krusial
Operasional sistem komputer sangat bergantung terhadap waktu, terutama untuk sistem yang bersifat real-time. Permasalahan waktu bukan lagi pada satuan detik, namun sudah mencapai level milidetik. Saat ini, Coordinated Universal Time (UTC) adalah standar waktu yang digunakan oleh seluruh sistem komputer di dunia. Standar waktu ini dihitung berdasarkan dua komponen, yaitu International Atomic Time (TAI) dan Universal Time (UT1). TAI mengatur laju pergantian detik, sedangkan UT1 menghitung durasi aktual rotasi bumi.
Kecepatan rotasi bumi yang tidak konstan tentu akan menghasilkan selisih antara UTC dengan mean solar time (waktu berdasarkan pergerakan harian matahari). Oleh karena itu, TAI dan UT1 harus selalu dibandingkan satu sama lain untuk memastikan selisih antara mean solar time dengan UTC tidak terlalu signifikan. Sebelum selisih antara TAI dan UT1 mencapai 0,9 detik, satu detik ditambahkan ke dalam UTC. Satu detik itulah yang disebut sebagai detik kabisat (leap second). Tidak seperti tahun kabisat, penambahan detik kabisat terjadi secara bersamaan di seluruh dunia. Sebagai contoh, untuk di Indonesia, detik kabisat yang terjadi pada 31 Desember 2016 23:59:60 UTC, terjadi pada 1 Januari 2017 06:59:60 WIB (UTC +7).
Dalam rentang tahun 1972 hingga 2017, telah terjadi penambahan 27 detik ke dalam perhitungan UTC. Artinya, hingga saat ini fenomena detik kabisat telah terjadi sebanyak 27 kali. Pada titik ini, Anda mungkin berpikir bahwa jika fenomena ini sudah terjadi sejak 45 tahun yang lalu, seharusnya detik kabisat tidak menimbulkan masalah atau dampak yang signifikan. Asumsi ini cukup logis mengingat detik kabisat bukanlah suatu fenomena yang baru sehingga orang-orang seharusnya mampu menangani anomali ini. Namun, anggapan tersebut salah, khususnya untuk semua hal yang terkait dengan sistem komputer. Sejumlah organisasi melaporkan bahwa sistem mereka bermasalah karena dampak detik kabisat pada 30 Juni 2012. Beberapa diantara organisasi tersebut adalah Reddit dan Mozilla. Pada umumnya, laporan tersebut berasal dari organisasi yang menggunakan sistem berbasis Linux. Setelah diselidiki, diketahui bahwa beberapa versi Linux belum menangani detik kabisat.
Lalu, pertanyaan selanjutnya adalah bagaimana detik kabisat mempengaruhi sistem komputer? Di awal telah disebutkan bahwa sistem komputer bergantung terhadap waktu. Dalam konteks ini, waktu yang digunakan oleh sistem selalu bergerak maju. Ketika detik kabisat terjadi, komputer akan menganggap waktu bergerak mundur. Kesalahan ini terjadi karena sistem komputer tidak mengenal detik ke-60. Singkatnya, dapat dikatakan bahwa detik kabisat mengubah perhitungan waktu dalam sistem komputer. Kemudian, CPU menganggap perubahan tersebut sebagai error. Hal ini juga berlaku untuk sistem Linux yang disebutkan pada contoh kasus di atas.
Linux memiliki sebuah subsistem bernama hrtimer. Subsistem ini digunakan ketika sebuah aplikasi dalam status 'sleep', menunggu sistem operasi untuk menyelesaikan task lainnya. Dalam beberapa kasus, hrtimer menyimpan sejenis alarm ke dalam setiap 'sleeping application'. Alarm tersebut akan membangunkan aplikasi ketika sistem operasi terlalu lama mengerjakan task lain. Saat detik kabisat terjadi, secara tiba-tiba hrtimer menjadi satu detik lebih cepat dari sistem operasi. Dengan perbedaan tersebut, hrtimer menganggap waktu pemrosesan yang dilakukan lebih lama dari yang seharusnya. Akibatnya, hrtimer mengaktifkan alarm tersebut dan membangunkan sejumlah 'sleeping application' dalam waktu yang bersamaan. Hal ini tentu saja akan membuat CPU menjadi overload sehingga dapat mengakibatkan sistem error. Kondisi inilah yang diduga menjadi penyebab error dalam beberapa versi Linux.
Peristiwa detik kabisat pada tahun 2012 memberi pukulan yang cukup besar untuk dunia teknologi informasi. Untuk mengantisipasi agar hal ini tidak kembali terjadi, setidaknya ada dua solusi yang dapat dilakukan. Pertama, memberikan notifikasi kepada sistem operasi ketika detik kabisat terjadi. Notifikasi tersebut diperlukan agar detik ke-60 bisa ditambahkan ke dalam sistem. Kedua, menggunakan teknik leap smear. Teknik ini diperkenalkan oleh Google pada September 2011. Ide dasar dari teknik ini adalah melakukan penambahan waktu dalam skala milidetik secara kontinu hingga detik kabisat selanjutnya terjadi. Dengan kata lain, detik kabisat dimasukkan secara bertahap ke dalam sistem, sehingga pada saat detik kabisat terjadi, sistem akan tetap berjalan normal karena tidak menyadari bahwa detik kabisat telah terjadi.
Dampak yang ditimbulkan oleh detik kabisat meninggalkan sebuah pelajaran yang berharga. Sebagai seorang programmer, Anda harus memikirkan semua ancaman yang berpotensi membuat sistem Anda down. Meskipun kemungkinan terjadinya sangat kecil, ancaman tersebut harus tetap diperhitungkan. Seorang programmer yang baik, harus mempunyai cara untuk mengatasi setiap ancaman yang mungkin menyerang sistemnya. Apa yang terjadi terhadap sistem operasi Linux sebagai akibat dari detik kabisat hanyalah salahsatu contoh kasus yang terdeteksi. Di masa yang akan datang, bukannya tidak mungkin apabila detik kabisat akan kembali menimbulkan bencana bagi dunia teknologi.