Описание тега softirq

Softirqs are software interrupts, which does not interrupt the processor like normal irqs.
1 ответ

Может ли SoftIRQ предотвращать запуск того же SoftIRQ с ядром Linux?

Я работаю над улучшением производительности драйвера и должен рассмотреть возможность тупика. В контексте SoftIRQ, spin_lock будет удерживаться и защищать некоторую переменную. В этом случае я должен использовать spin_lock или spin_lock_bh? spin_loc…
13 янв '17 в 22:44
0 ответов

Серия amd radeon r9 smp_affinity

Используя taskset -c 1 с программой opencl, она работает с той же скоростью, что и без использования на четырехъядерной машине. Но загрузка с набором задач составляет 13%, без него 50%. Я использую драйверы AMD 13.12 в fedora 20, после слишком больш…
08 янв '14 в 23:30
1 ответ

PID в случае irq контекста

Что выводит "current->pid" в случае ниже 2 1) Жесткий IRQ контекст 2) Мягкий IRQ контекст Я знаю, что контекст IRQ и контекст процесса различны, и PID должен быть недействительным в случае контекста IRQ. Но когда вы пытаетесь напечатать "current->pi…
01 фев '17 в 05:55
1 ответ

Linux IRQ: снятие маски с IRQ в ISR

У меня есть IRQ, который использует handle_level_irq(), Большую часть времени ISR требует, чтобы нижняя половина была запланирована, но иногда она может определить, что она ложная, и не хочет планировать нижнюю половину (по соображениям производител…
14 дек '12 в 15:04
1 ответ

Существует ли заголовок linux для хэш-таблицы с корзинами, защищенными от спин-блокировки?

Я пишу код, который редко создает / удаляет объекты (до нескольких тысяч), но очень часто модифицирует их в контексте мягкого IRQ. Эти объекты также редко читаются (и, вероятно, также редко изменяются) из контекста задачи (через procfs: файл на объе…
1 ответ

Как ядро ​​отключает softirq в локальном процессоре при запуске обработчика softirq

Недавно я изучал Linux-Kernel-Development Роберта Лава. Существует параграф, описывающий механизм размягчения. Обработчики softirq работают с включенными прерываниями и не могут спать. В то время как обработчик работает, softirqs на текущем процессо…
09 окт '15 в 15:01
1 ответ

Почему softirq используется для высокопоточных и высокочастотных применений?

Что делает softirq настолько особенным, что мы используем его для высокочастотных применений, например, в сетевых драйверах и блочных драйверах.
1 ответ

Как остановить / отключить IPI(межпроцессное прерывание) в Linux?

Я пытаюсь отключить вызовы irq из ядра при выполнении какого-либо приложения, я вызываю local_irq_disable(), прежде чем выполнить мое приложение, достаточно ли для отключения флагов IRQ. Любой другой способ отключить IRQ, пожалуйста, предложите мне.
22 дек '17 в 11:54
1 ответ

Причины, по которым процедура rps использует spinlock с local_irq_disable

Сейчас я изучаю код внутренней сети ядра, особенно код RPS. Вы знаете, есть много функций об этом. Но я сосредоточен на некоторых функциях обработки очереди SMP, таких как enqueue_to_backlog а также process_backlog, Интересно о синхронизации между д…
3 ответа

В каком контексте находятся softirq и tasklet?

Я знаю, что есть контекст процесса и контекст прерывания, но я не понимаю, когда выполняется softirq или тасклет, в каком контексте он запускается. Я видел, как некоторые люди используют термин "контекст нижних половин", если такой термин есть, в че…
21 авг '11 в 02:13
1 ответ

Есть ли способ позвонить в ядро ​​Linux с моей собственной Softirq

Аналогично тому, как работает системный вызов int 0x80Можно ли реализовать свой собственный ISR внутри ядра, чтобы на softirq предполагать int 0x120 или с любым другим программным счетчиком softirq можно переходить из пространства пользователя в про…
1 ответ

Как прикрепить прерывание к процессору в драйвере

Можно ли прикрепить программный процессор или любую другую нижнюю половину к процессору. У меня есть сомнения, что это можно сделать из кода softirq. Но тогда внутри драйвера можно привязать конкретный IRQ к ядру.
1 ответ

Запуск нескольких процессов не масштабируется

Существует два процесса C++, по одному потоку в каждом процессе. Поток обрабатывает сетевой трафик (Diameter) от 32 входящих TCP-соединений, анализирует его и пересылает разделенные сообщения через 32 исходящих TCP-соединения. Давайте назовем этот п…
04 сен '14 в 09:09
2 ответа

Почему один и тот же TASKLET не может выполняться одновременно на двух ядрах?

В реализации ядра Linux для платформы ARM отложенная работа в тасклете добавлена ​​в список percpu vec|vec_hi. теперь, возвращаясь к выполнению ISR, он обращается к отложенной работе в softirq и тасклетах. теперь об этой отложенной работе можно поза…
14 окт '15 в 14:01
2 ответа

Почему время обслуживания softirqs увеличено в ядре 4.1 по сравнению с ядром 3.4?

Мы обнаружили проблему снижения производительности при выполнении поднятия Linux с версии 3.4 до версии 4.1. Кажется, это связано с тем, что новое ядро ​​тратит гораздо больше времени на обслуживание softirqs. Мы провели тест с использованием генера…
25 дек '17 в 14:09
1 ответ

Приостановка kthread в Linux

Здесь https://blog.packagecloud.io/eng/2017/02/06/monitoring-tuning-linux-networking-stack-sending-data/ написано: Как вы увидите из предыдущего поста, в NET_TX_SOFTIRQ softirq зарегистрирована функция net_tx_action. Это означает, что есть поток ядр…
25 авг '18 в 14:58
1 ответ

ksoftirq не использует процессор и должно быть, почему?

Оба Linux 2.6 и 3.8. Настройка Linux как роутера с передачей файла 3 гигабайта При достижении вершины%SI имеет высокий уровень 30%, но ksoftirqd использует 0% CPU. Так что вопрос в том, "Какая нить обрабатывает softirq???" Я прочитал код, и предпола…
25 янв '14 в 03:10
0 ответов

Почему вы не можете включить нижние половины, когда IRQ отключены?

В __local_bh_enable, у нас есть WARN_ON_ONCE(!irqs_disabled()); Мне интересно, какова цель этого предупреждения - я думаю, вы захотите иметь возможность сдавать в аренду нижних половин, когда, скажем, spinlock_irq защищенный код... (примечание: я см…
1 ответ

Зачем атомарное чтение считать переменную в структуре тасклета?

В подпрограмме tasklet_action - при обработке записи из списка tasklet_vec ядро, мы атомарно читаем atomic_read(&t-;>count), я не вижу любое из его использования в рутине, что является значительным? if (tasklet_trylock(t)) { // check is it is not al…
16 окт '15 в 09:19
0 ответов

Безопасно ли вызывать send_sig_info() внутри процедуры завершения URB?

Как известно, обратный вызов завершения USB URB будет выполняться в контексте softIRQ. Позвольте мне объяснить фон, в котором я пытаюсь использовать send_sig_info(). В настоящее время я работаю над Советом по сбору данных. Для этого на стороне USB-у…
22 сен '18 в 17:04