Где попытка от _до _пробуждения _до ()добавления задачи в очередь выполнения ЦП?

grep имеет опцию --line-bufferedдля немедленного вывода каждой строки вместо ожидания ввода дополнительных данных.

Для xargs, как предложил @ikkachu, вам нужно разделять символы новой строки вместо пробелов. Вы можете использовать xargs -Lдля этого.

Это должно работать:

tail -f /var/log/syslog \
  | grep --line-buffered arpwatch \
  | xargs -L1 sendxmpp username@jabber.server
1
08.03.2021, 03:00
1 ответ

Процитированный вами блок кода является особым случаем, как объяснено в опущенных комментариях:

         * We're waking current, this means 'p->on_rq' and 'task_cpu(p)
         * == smp_processor_id()'. Together this means we can special
         * case the whole 'p->on_rq && ttwu_remote()' case below
         * without taking any locks.

Поскольку пробуждаемая задача является текущей задачей, она уже находится в очереди выполнения (p->on_rq), поэтому ее не нужно добавлять в одну.

Добавление задачи в очередь выполнения рассматривается далее:

    cpu = select_task_rq(p, p->wake_cpu, SD_BALANCE_WAKE, wake_flags);

Это добавляет задачу в очередь выполнения и возвращает ЦП, на котором она запланирована, поэтому при необходимости можно выполнить миграцию.

Условие #ifdef CONFIG_SMPзаслуживает некоторого объяснения, :если SMP не поддерживается, то несколько задач не могут выполняться одновременно, и, поскольку мы знаем, что не пробуждаем текущую задачу, единственный сценарий, с которым нужно иметь дело, - это ожидание ввода-вывода.

1
18.03.2021, 22:27

Теги

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