Apa yang dimaksud dengan "clocksource tsc tidak stabil"?

10

Setiap kali saya melihat Linux mem-boot, saya melihat pesan ini:

clocksource tsc tidak stabil (delta = NNNNNNNNNs ns)

di mana NNNNNNNN adalah sejumlah yang sangat besar yang mungkin positif atau negatif.

apa maksud dari pesan ini? Haruskah saya khawatir tentang ini?

bwDraco
sumber
Saya pikir tscmengacu pada Penghitung Stempel Waktu . Jika itu membantu.
Der Hochstapler
Juga, mengingat apa yang saya temukan tentang pesan ini secara online, apakah Anda melihat pesan ini pada mesin fisik atau yang virtual. Sepertinya itu relevan.
Der Hochstapler
Baik fisik maupun virtual. Saya mendapatkan pesan ini di beberapa sistem yang berbeda ketika saya mem-boot Linux.
bwDraco
Saya mendapatkan pesan ini tepat /var/log/messageketika menambahkan opsi "acpi = off" ke /etc/grub.conf(sebagai kernel=opsi). Ketika saya menghapusnya, reboot, pesan itu hilang. CentOS 6 dengan Kernel: .6.32-279.19.1.el6.x86_64

Jawaban:

8

Jujur saya melihat pesan ini untuk pertama kalinya hari ini dan tidak tahu apa artinya sebenarnya.

Yang sedang berkata, saya membaca artikel Wikipedia di Time Stamp Counter (yang merupakan tscsingkatan dari pesan kesalahan). Artikel tersebut menyebutkan masalah dengan TSC pada paragraf kedua:

Penghitung cap waktu, hingga saat ini, merupakan resolusi tinggi, cara overhead rendah untuk mendapatkan informasi pengaturan waktu CPU. Dengan munculnya CPU multi-core / hyperthreaded, sistem dengan banyak CPU, dan sistem operasi "hibernasi", TSC tidak dapat diandalkan untuk memberikan hasil yang akurat- kecuali jika sangat hati-hati untuk mengoreksi kelemahan yang mungkin terjadi: tingkat kutu dan apakah semua core (prosesor) memiliki nilai yang identik dalam register yang menjaga waktu. Tidak ada janji bahwa penghitung waktu cap waktu dari beberapa CPU pada satu motherboard akan disinkronkan. Dalam kasus seperti itu, pemrogram hanya bisa mendapatkan hasil yang dapat diandalkan dengan mengunci kode mereka ke satu CPU. Bahkan kemudian, kecepatan CPU dapat berubah karena tindakan penghematan daya yang dilakukan oleh OS atau BIOS, atau sistem mungkin hibernasi dan kemudian dilanjutkan (mengatur ulang penghitung cap waktu). Dalam kasus-kasus terakhir, agar tetap relevan, penghitung harus dikalibrasi ulang secara berkala (sesuai dengan resolusi waktu yang dibutuhkan aplikasi Anda).

Singkatnya, pada sistem modern, TSC menyebalkan untuk mengukur waktu secara akurat . Dan itulah yang disampaikan pesan itu kepada Anda. Pada sistem Anda, TSC bukan sumber waktu yang stabil.

The deltamencatat, saya akan berasumsi, adalah melaporkan waktu delta antara dua kutu dari TSC tersebut. Artinya, setiap kali TSC menghitung 1, NNNNNNNNNnanodetik akan berlalu. Jadi, begitulah biasanya Anda dapat menyimpan waktu yang sangat akurat.

Kernel linux akan memeriksa frekuensi ini beberapa kali (untuk menentukan apakah sumbernya stabil) dan hasilnya berbeda. Demikian pesannya.


Jadi, apakah Anda perlu khawatir?
Sejujurnya aku tidak tahu. Menurut pemahaman saya, masalah ini muncul dari proses yang "dipindahkan" di antara inti (setiap inti dapat memiliki frekuensi TSC yang berbeda) atau inti yang mengubah frekuensi intinya (seperti dengan penghematan daya).

Kemungkinan besar, pesan hanya dicetak karena kernel mendeteksi masalah ini untuk dirinya sendiri dan sekarang akan menyesuaikan.

Dan, dari apa yang saya baca di sumber kernel ( arch/x86/kernel/tsc.c), saya tidak berpikir saya terlalu jauh dengan asumsi saya.

Saya ragu pesan itu berarti kondisi kritis. Dan saya mendasarkan pada asumsi bahwa Anda akan tahu sekarang jika itu penting.

Der Hochstapler
sumber
2
Mengutip dari artikel yang sama, beberapa CPU modern juga menyediakan Time Stamp Counter yang konstan : Prosesor Intel terbaru menyertakan TSC tingkat konstan (diidentifikasi oleh flag constant_tsc di Linux / proc / cpuinfo). Dengan prosesor ini, TSC membaca pada tingkat maksimum prosesor terlepas dari tingkat menjalankan CPU yang sebenarnya.
scai
Apakah Anda merekomendasikan menggunakan hpet, bukan tsc?
CMCDragonkai
1
Saya hanya ingin menambahkan informasi. Bahwa hari ini saya menghadapi masalah ini di salah satu server supermicro kami. OS adalah RHEL 6.5 dan memberikan pesan yang sama. Dan server ini merangkak dengan kecepatan siput sekarang. Sudah satu jam dan boot belum lengkap. Langkah saya selanjutnya adalah mengubah penghitung dan menambahkan informasi dalam file grub.conf dengan masuk dalam mode penyelamatan. Karena mode single user juga tidak berfungsi
OmiPenguin