'быстрые прерывания' в Linux

swapon/swapoff будет абсолютно ясный Ваша область подкачки, но можно освободить часть от него через/proc файловую систему также. Вы хотите первый:

# To free pagecache
echo 1 > /proc/sys/vm/drop_caches

# To free dentries and inodes
echo 2 > /proc/sys/vm/drop_caches

# To free pagecache, dentries and inodes
echo 3 > /proc/sys/vm/drop_caches

с помощью http://linux-mm.org/Drop_Caches

5
10.02.2011, 00:22
3 ответа

На сегодняшний день можно главным образом забыть о SA_INTERRUPT флаг.
Промежуточные 2.6.18 и 2.6.24 это был просто помощник миграции для нового IRQF_DISABLED флаг.
2.6.24 удалил все SA_* флаги и замененный их IRQF_* флаги.
2.6.35 отметил этот "новый" флаг, как удерживается от использования.

Если у Вас будет ядро прежде 2.6.18, то Вы будете, вероятно, не использовать его (см. ответ Justin).

Сегодняшнее использование IRQF_DISABLE отличается среди архитектуры. x86 все еще только использует его для строго ограниченных во времени функций (time.c, hpet.c) и некоторые xen материал.

Относительно различия; нормальное прерывание может быть прервано другим прерыванием (вытеснение), "быстрое", с другой стороны, не может.

5
27.01.2020, 20:38

Существует хорошая запись здесь:

Более старые версии ядра Linux предприняли большие усилия для различения "быстрые" и "медленные" прерывания. Быстрые прерывания были теми, которые могли быть обработаны очень быстро, тогда как обработка медленных прерываний взяла значительно дольше. Медленные прерывания могли быть достаточно требовательными из процессора, и стоило повторно включить прерывания, в то время как они обрабатывались. Иначе задачи, требующие быстрого внимания, могли быть отложены слишком долго.

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

Так, какой тип прерывания Ваш драйвер должен использовать? В современных системах SA_INTERRUPT предназначается только для использования в некоторых, определенные ситуации, такие как прерывания по таймеру. Если у Вас нет веской причины запустить Вашего обработчика прерываний с другими отключенными прерываниями, Вы не должны использовать SA_INTERRUPT.

Таким образом, единственной разницей является та, которую Вы упомянули; тот быстрые обработчики прерываний выполняются со всеми другими отключенными обработчиками прерываний для более быстрой производительности.

2
27.01.2020, 20:38
  • 1
    , которая Быстрые обработчики прерываний не для лучшей производительности - это просто, что Вы никогда не должны отключать прерывания, если действие, которое Вы выполняете, не чрезвычайно быстро. Обычно прерывания отключены для осуществления формы атомарности в функциях, которые являются трудными или невозможными записать повторно используемым способом. Даже если у Вас, оказывается, есть обработчик прерываний, который работает быстро, Вы не должны отключать другие прерывания в системе, если у Вас нет действительно серьезного основания сделать так. –  David 18.10.2017, 20:54

Я как раз рассматриваю ARM Cortex A57. В архитектуре ARM быстрое прерывание имеет 8 выделенных регистров, поэтому время переключения контекста минимизируется как при входе, так и при выходе из прерывания. Я пока не знаю, интегрировано ли это в Linux, который собирается предоставить наш поставщик SOC (если, конечно, они его предоставят).

0
27.01.2020, 20:38

Теги

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