linux: Есть ли способ сбросить очередь выполнения задачи?

Я столкнулся с необычной проблемой экстремальной нагрузки на холостых условиях .

Есть ли способ напрямую сбрасывать очередь запуска планировщика процессов Linux?
Например, когда sar -q выводит 400 как runq-sz , чтобы получить эти 400 PID?

ps , top и друзья, кажется, слишком «медленны», чтобы сделать мгновенный снимок, потому что они показывают только несколько процессов в состоянии D или R

2 Solutions collect form web for “linux: Есть ли способ сбросить очередь выполнения задачи?”

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

 perf record -e sched:sched_process_exec -a 

Остановите запись с помощью Control-C и посмотрите результаты с perf report . Вы также можете просмотреть простые, но мощные скрипты, основанные на perf которые собрал Брендан Грегг .

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

 struct task_struct *process, *thread; int cnt = 0; rcu_read_lock(); for_each_process_thread(process, thread) { task_lock(thread); /* do something with the task properties: thread->state; thread->wake_cpu; thread->pid; thread->comm; */ task_unlock(thread); cnt++; } rcu_read_unlock(); - struct task_struct *process, *thread; int cnt = 0; rcu_read_lock(); for_each_process_thread(process, thread) { task_lock(thread); /* do something with the task properties: thread->state; thread->wake_cpu; thread->pid; thread->comm; */ task_unlock(thread); cnt++; } rcu_read_unlock(); 

Самая важная часть – заблокировать задачи RCU при входе и разблокировке при выходе. Вы будете указывать этот дамп в модуле ядра и предоставлять среднее значение для извлечения списка в команде пользовательского пространства.

Я предлагаю вам прочитать и усовершенствовать ваши потребности в моем примере в GitHub @ dumptask

  • Можно ли получить идентификатор группы процессов из / proc?
  • Флаг процесса 1: вилка, но не выполнялась (используйте случай?)
  • Данные планирования процесса на Linux
  • Как я могу узнать, когда процесс завершил запись в файл?
  • Использование top для просмотра процессов, выполняемых пользователем от имени sudo
  • Как просмотреть определенный процесс в верхней части
  • Текущий рабочий каталог ядра и размещение информации inode
  • Как я могу увидеть точную командную строку, выполняемую внутри некоторого экземпляра bash?
  • Что произойдет, если соединение dbus завершится неудачей?
  • Есть ли способ действительно приоритизировать процессы или заставить Linux уважать их приоритеты?
  • Ограничение использования интернет-трафика конкретной оболочки
  • Interesting Posts

    Bash: запустить команду2, если команда1 не выполнена

    Как сделать netstat, который будет фильтровать только на основе pid

    Как удалить файл, начинающийся с «>» или других необычных символов

    Как изменить все IP-адреса из файла журнала в Debian?

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

    Установка ОС из источника на отдельный раздел. Это возможно?

    Какова цель модуля ядра «hyperv_fb» в ядре «el7uek.x86_64»?

    logrotate :: Как удалить старые журналы в файле журнала после того, как размер файла журнала достигнет размера 1M

    как показать цвета в syslog

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

    Bash и / или Zsh: Возможно ли настроить режим вставки Vi для создания привязки, которая перемещает определенное количество символов?

    Intel® Wireless 7265D: iw показывает неправильную нормативную информацию

    Сложность btrfs-send / btrfs-receive

    Странные ведущие пробелы в OPTARG при использовании getopts

    Является ли highmem актуальным в 64-разрядной Linux? Если нет, то почему?

    Linux и Unix - лучшая ОС в мире.