Кто вызывает delay_tsc () в Linux - PullRequest
4 голосов
/ 09 ноября 2011

Я использовал OProfile для профилирования своего Linux-бокса.В процессе профилирования я обнаружил, что помимо функции «native_safe_halt», «delay_tsc» является второй по значимости функцией, потребляющей циклы процессора (около 10%).Кажется, delay_tsc() это занятая петля.Но кто это называет и какова его функция?

1 Ответ

6 голосов
/ 09 ноября 2011

Никто не вызывает его напрямую, так как это локальная функция внутри той части источника, на которую вы ссылаетесь. Способ его вызова - опубликованная функция __delay().

Когда вы вызываете __delay(), он будет использовать указатель функции delay_fn (также локальный для этого файла), чтобы выбрать одну из нескольких функций задержки. По умолчанию выбрано значение delay_loop(), которое использует инструкции x86, чтобы попытаться пометить время.

Однако, если use_tsc_delay() был вызван (во время загрузки), он переключает указатель функции на delay_tsc(), который использует счетчик меток времени (счетчик ЦП) для отметки времени.

Он вызывается любым кодом ядра, которому требуется достаточно надежная функция задержки с высоким разрешением. Вы можете увидеть весь код в ядре, который ссылается на __delay здесь (довольно много мест).

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

Некоторые примеры из этого списка:

  • Сторожевой таймер использует его для изменения частоты ядер, чтобы их выходные данные не смешивались друг с другом путем задержки для некоторого кратного текущего идентификатора ядра.
  • Похоже, драйвер буфера кадров ATI использует его для задержек низкоуровневого доступа к оборудованию. На самом деле он используется для этой цели во многих драйверах устройств.
  • Он используется во время запуска, чтобы выяснить связь между jiffies и фактической аппаратной скоростью.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...