Pada beberapa platform produksi, kami telah mengamati gejala yang tampaknya menunjukkan bahwa waktu jam hari secara berkala melompat maju atau mundur. Lompatan biasanya sekitar 1 detik, biasanya dibatalkan (melompat ke depan lalu ke belakang segera setelahnya) dan terjadi sekitar 50 kali per hari. Penyimpangan ini paling terlihat selama masa penggunaan aplikasi puncak, dan selama periode operasi I/O disk tinggi seperti pencadangan harian. Penyimpangan ini memengaruhi aplikasi sensitif real-time kami yang lembut.
Sistemnya adalah server Oracle Netra X4250 dan Netra X4270 yang menjalankan SLES 11SP2 dengan kernel 3.0.58-0.6.6-default.
$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource
tsc hpet acpi_pm
$ cat /sys/devices/system/clocksource/clocksource0/current_clocksource
tsc
Kami telah menonaktifkan NTP, tetapi itu tidak berpengaruh pada drift. Apakah ada alat yang mengukur waktu penyimpangan jam hari? Bagaimana kita bisa menghindari ini?
Ini adalah platform produksi, dan kami tidak dapat membuat ulang masalah di lab kami, jadi kemampuan saya untuk bereksperimen terbatas. Jika dibiarkan sendiri, saya akan menulis alat untuk mengukur penyimpangan, dan mungkin bereksperimen dengan sumber jam HPET.
Jawaban yang Diterima:
Apakah ada alat yang mengukur waktu penyimpangan jam hari?
Satu-satunya alat yang saya ketahui adalah alat NTP yang seharusnya cukup. Anda tidak harus benar-benar mengonfigurasi ntpd untuk menyinkronkan dengan sumber jam tertentu, Anda cukup menggunakan -d
pilihan untuk ntpdate
untuk mengambil offset yang dihitung.
Contoh:
[[email protected] ~]$ ntpdate -d clock.redhat.com 2>/dev/null | egrep "^offset"
offset -0.004545
[[email protected] ~]$
-d
adalah opsi debug yang membuat NTP bekerja tanpa benar-benar menyentuh jam sistem.
Adakah saran tentang bagaimana kita bisa menghindari ini?
Saya tidak terlalu terkejut bahwa Anda tidak dapat mereproduksi ini di lingkungan pengembangan/pengujian karena mungkin hanya karena jam perangkat keras. Jika Anda memiliki dukungan perangkat keras dengan seseorang, saya akan mencoba untuk memperbaiki mesin Anda. Satu kemungkinan adalah menukar salah satu mesin dev untuk mesin produksi ini, memperbaiki sistem PROD sebelumnya dan memperkenalkannya kembali sebagai mesin dev untuk menggantikan yang ada di PROD sekarang.
Singkatnya, mengganti sumber jam perangkat keras adalah yang dapat Anda lakukan. Jika Anda tidak atau tidak dapat melakukan swap, saya sarankan Anda menggunakan rute hpet. Anda dapat menguji apakah perubahan sumber jam mengacaukan layanan sistem dan kemudian menerapkannya ke dalam produksi sebagai hujan es.
Terkait:Linux – Menangkap output jarak jauh secara lokal di Terminal Mac?