Знает ли Linux Scheduler об аппаратных прерываниях (Scheduler Jitter) - PullRequest
4 голосов
/ 21 января 2011

Если процесс прерывается аппаратным прерыванием (обработчик прерываний первого уровня), то узнает ли об этом планировщик ЦП (например, считает ли Планировщик время выполнения для аппаратных прерываний отдельно от прерванного процесса)?

Подробнее: Я пытаюсь устранить проблему, когда загрузка ЦП в htop слишком низкая для указанной задачи шифрования пакетов (ЦП находится на уровне <10% при шифровании пакетов на скорости 400 Мбит / с; скорость необработанного шифрования составляет всего 1,6 Гбит / с, поэтому шифрование пакетов не должно идти быстрее, чем сырая скорость шифрования). </p>

Пояснение: Моя гипотеза состоит в том, что инкапсуляция пакетов происходит при аппаратных прерываниях, что дает мне иллюзию низкой загрузки процессора в htop. Обычно FLIH реализуются так, что они завершают свою задачу как можно быстрее и переносят свою работу на SLIH (обработчик прерываний второго уровня, который, я полагаю, выполняется от имени ksoftirqd / X). Но что произойдет, если FLIH прервет процесс на очень долгое время? Представляет ли это какой-то джиттер ОС?

Я использую Ubuntu 10.04.1 на платформе x86-64.

Дополнительная информация для отладки:

while [ 1 ]; do cat /proc/stat | grep "cpu "; sleep 1; done;
cpu  288 1 1677 356408 1145 0 20863 0 0
cpu  288 1 1677 356772 1145 0 20899 0 0
cpu  288 1 1677 357108 1145 0 20968 0 0
cpu  288 1 1677 357392 1145 0 21083 0 0
cpu  288 1 1677 357620 1145 0 21259 0 0
cpu  288 1 1677 357972 1145 0 21310 0 0
cpu  288 1 1677 358289 1145 0 21398 0 0
cpu  288 1 1677 358517 1145 0 21525 0 0
cpu  288 1 1678 358838 1145 0 21652 0 0
cpu  289 1 1678 359141 1145 0 21704 0 0
cpu  289 1 1678 359563 1145 0 21729 0 0
cpu  290 1 1678 359886 1145 0 21758 0 0
cpu  290 1 1678 360296 1145 0 21801 0 0

Седьмой (или шестой номер столбец) столбец здесь, я думаю, это время, проведенное внутри обработчиков аппаратных прерываний (htop использует этот файл proc для получения статистики). Мне интересно, если это будет ошибка в Linux или драйвер. Когда я делал эти снимки / proc / stat, трафик шел со скоростью 500 Мбит / с и 500 Мбит / с.

1 Ответ

1 голос
/ 21 января 2011

Учитывается время, проведенное в обработчиках прерываний.

htop показывает это в «si» (мягкое прерывание) и «hi» (жесткое прерывание). Ни приятно, а ва-ио-подожди.

Edit: От man proc:

шестой столбец - аппаратное значение времени

седьмая колонка - более мягкая

восьмое украденное время

nienth - время гостя.

последние два имеют значение только для виртуализированных систем.

У вас есть ядро, созданное с установленной опцией CONFIG_IRQ_TIME_ACCOUNTING (Тип процессора и функции / Учет времени IRQ на уровне задач точной детализации)?

...