Создание чувства времени в dmesg

Я знаю время в dmesg время начиная с начальной загрузки. Но мой конкретный вопрос, на этот раз вычисляется в запуске или конце процесса, упомянутого в строке?

Почему это важно?
возьмите этот пример:

[    4.352025] floppy0: no floppy controllers found
[    5.718270] random: nonblocking pool is initialized
[   94.134265] Adding 2094076k swap on /dev/sda5.  Priority:-1 extents:1 across:2094076k FS**
[   96.988453] init: bootchart main process (274) terminated with status 127

Если время, вычисляется после окончания процесса, процесс в 3-й строке должен быть взят ответственный за медленную начальную загрузку.
Но если время вычисляется с начала процесса, 2-я строка должна проводиться ответственная за него.

Но это становится более сложным, когда мы проверяем dmesg после начальной загрузки.
Возьмите это, например:

[28047.749604] wlp3s0: associated
[28941.112855] [drm:intel_pipe_update_end [i915]] *ERROR* Atomic update failure on pipe A (start=757985 end=757986)
[31407.938694] cfg80211: World regulatory domain updated:
[31407.938699] cfg80211:  DFS Master region: unset

Этот разрыв 2466 не должен иметь никакого полезного значения.

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

Как мы можем сделать чувство времени в dmesg?

3
задан 23 March 2016 в 20:53

3 ответа

dmesg не надежный тест того, сколько времени процесс начальной загрузки идет или где существуют узкие места. Согласно Wikipedia page:

, Когда первоначально загружено, компьютерная система загружает свое ядро в память. На этом этапе драйверы устройств, существующие в ядре, настраиваются для управления соответствующей аппаратной. Такие драйверы, а также другие элементы в ядре, могут произвести вывод ("сообщения"), сообщив, что и присутствие модулей и значения любых параметров, принятых

, Другими словами, dmesg само просто, собирают информацию, это - драйверы и другие системные процессы, которые производят те сообщения, и они могут произвести их в любом моменте времени. Между теми сообщениями там может или могло не быть другое порождение процессов, таким образом, это не индикатор сколько времени начальные загрузки системы.

dmesg также собирает сообщения непрерывно из кольцевого буфера, таким образом, Ваша задержка 2466 не указывает на некоторый процесс зависания, просто событие имело место 2466 позже и независимо от того, что процесс был активен, в то время просто производит сообщение ядра.

то, Что Вы действительно хотите, однако, bootchart, который используется специально для цели найти узкие места в процессе начальной загрузки. Я только видел, что это быть сосланным через несколько форумов и на этом сайте, но никогда не использоваться меня, так не может дать Вам больше информации, чем это

4
ответ дан 24 March 2016 в 06:53
  • 1
    Спасибо за это предложение. К сожалению, после выполнения этой команды, bluetooth-клавиатура все еще выбывает после 5 - 15 минут использования. – Questioner 13 July 2017 в 01:17

Команда dmesg читает буфер printk ядра использование режима доступа пространства пользователя через /dev/kmsg. Каждая запись имеет монотонная метка времени в микросекундах , который установлен, когда запись в журнале создается.

, Таким образом, вопрос не может быть, которые добавляют метку времени к dmesg (или ядро) зарегистрируется, но должен быть, когда ядро создаст запись в журнале для определенного действия, это делает.

, Поскольку я предполагаю, это может отличаться от действия до действия. Когда случай происходит к ядру, т.е. включите USB-устройство, ядро зарегистрирует это, как только это имеет применимую информацию. Когда ядро делает запланированную задачу, имеет смысл регистрировать результаты, когда задание сделано. Если это - сложное задание, возможно, это производит некоторые записи в журнале, в то время как это работает, но поскольку я предполагаю обычно после чего-то интересного, произошел, или небольшого количества времени не стало.

то, Как можно получить доступ к буферу printk ядра, объяснено здесь .

Поэтому, если Вы особенно хотите знать, зарегистрирована ли определенная запись вначале или конец действия, необходимо посмотреть в ядре - или модуль-sorcecode когда вызов программы функция журнала.

2
ответ дан 24 March 2016 в 06:53

Читайте man dmesg, особенно:

   -d, --show-delta
          Display the timestamp and time delta spent between messages.  If
          used together with --notime then only the time delta without the
          timestamp is printed.


   -T, --ctime
          Print  human  readable  timestamps.  The  timestamp   could   be
          inaccurate!

          The  time  source  used for the logs is not updated after system
          SUSPEND/RESUME.

значение метки времени является "микросекундами начиная с начальной загрузки/1000000" (похож "на секунды к 6 десятичным разрядам). Метка времени установлена на 0 при начальной загрузке.

Как сказанный @cmks, "микросекунды, так как начальная загрузка" значение копируется в запись в журнале, когда запись в журнале вставляется в буфер ядра. dmesg интерпретирует это значение несколько различных путей. dmesg -T -d | less покажет дельты. Я действительно читал Вопрос и ответ от @cmks

-2
ответ дан 24 March 2016 в 06:53
  • 1
    После нескольких недель тестирования я могу теперь сказать, что эта фиксация, к сожалению, не разрешила проблему. Я применил фиксацию и перезагрузил, но bluetooth-клавиатура продолжает внезапно отбрасывать свое соединение наугад интервалы. – Questioner 4 August 2017 в 00:51

Другие вопросы по тегам:

Похожие вопросы: