8

Всякий раз, когда я вижу загрузку Linux, я вижу это сообщение:

clocksource tsc unstable (delta = NNNNNNNN ns)

где NNNNNNNN - очень большое число, которое может быть положительным или отрицательным.

Что означает это сообщение? Должен ли я быть обеспокоен этим?

1 ответ1

7

Я честно вижу это сообщение сегодня впервые и не имею ни малейшего понятия, что это на самом деле означает.

При этом я прочитал статью в Википедии, посвященную tsc времени (именно об этом говорится в сообщении об ошибке). В статье упоминается проблема с TSC во втором абзаце:

До недавнего времени счетчик меток времени являлся отличным способом получения информации о синхронизации процессора с высоким разрешением и минимальными издержками. С появлением многоядерных / многопоточных ЦП, систем с несколькими ЦП и "спящих" операционных систем нельзя полагаться на TSC для получения точных результатов - если только не будут предприняты большие усилия для исправления возможных недостатков: частоты тиков и все ядра (процессоры) имеют одинаковые значения в своих регистрах учета времени. Нет никаких обещаний, что счетчики меток времени нескольких процессоров на одной материнской плате будут синхронизированы. В таких случаях программисты могут получить надежные результаты только путем привязки своего кода к одному ЦП. Даже в этом случае скорость ЦП может измениться из-за мер по энергосбережению, предпринятых ОС или BIOS, или система может быть переведена в спящий режим и позднее возобновлена (сброс счетчика меток времени). В этих последних случаях, чтобы оставаться актуальным, счетчик должен периодически калиброваться (в соответствии с временным разрешением, требуемым вашей заявкой).

Короче говоря, в современных системах TSC отстает для точного измерения времени. И это то, что сообщение говорит вам. В вашей системе TSC не является стабильным источником времени.

Отмеченная delta , как я полагаю, представляет собой сообщенную дельту времени между двумя тиками TSC. Это означает, что каждый раз, когда TSC считает 1 , NNNNNNNNN пройдет. Вот так вы обычно можете сохранять очень точное время.

Ядро Linux будет проверять эту частоту несколько раз (чтобы определить, является ли источник стабильным) и получит разные результаты. Итак, сообщение.


Итак, вы должны быть обеспокоены?
Я, честно говоря, не знаю. Насколько я понимаю, эта проблема возникает из-за того, что процессы "перемещаются" между ядрами (каждое ядро может иметь разную частоту TSC) или ядром, меняющим частоту ядра (как при энергосбережении).

Скорее всего, сообщение печатается только потому, что ядро обнаружило эту проблему для себя и теперь будет соответствующим образом скорректировано.

И, судя по тому , что я прочитал в исходных кодах ядра (arch/x86/kernel/tsc.c), я не думаю, что я слишком далек от своих предположений.

Я сомневаюсь, что сообщение означает критическое состояние. И я основываю это на предположении, что вы уже знаете, если это было критически важно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .