Как видеть, сколько контекстных переключений процесс делает?

Если Ваши письма находятся в Maildir (как, например, ~/Maildir/cur), можно просто использовать grep и комнату:

grep -l "Subject: My error log message" ~/Maildir/cur/* | xargs rm

если вместо этого они находятся в mbox, это, конечно, не работает.

25
25.05.2012, 20:37
6 ответов

pidstat (1) - статистика Отчета для задач Linux. Согласно man pidstat это столь же легко как просто pidstat -w …

12
27.01.2020, 19:40
  • 1
    я выполнил "команду"-n0.5 pidstat-w-I-p 5876 часов, но вывод 0 (для обоих cswch/s nvcswch/s). Это управляет работой для версии Linux - 2.6.39-400.214.4.el6uek.x86_64? –  Andy Dufresne 19.03.2015, 08:52
  • 2
    Эта команда должна работать просто великолепно. Но остерегайтесь, Вы используете его неправильно, потому что, когда Вы не указываете, о статистических данных задач „интервала отчета нужно сообщить в течение времени начиная с системного запуска (начальная загрузка)”. подобный vmstat, iostat и другие. Таким образом, если текущая статистика необходима вместо watch'луг просто выполняет его с одним вторым интервалом. –  poige 19.03.2015, 14:46
  • 3
    Если я не делаю часов, как я вижу, что числа обновляют непрерывно? Выполнение команды "pidstat-w-I-p 5876 5", команда просто ожидает в течение 5 секунд и затем печатает вывод (снова как 0). Это не работает непрерывно, как я ожидал (я знаю, что это противоречит к тому, что страница справочника pidstat говорит - linux.die.net/man/1/pidstat). Моей ОС является Oracle Сервер Linux 6.4. –  Andy Dufresne 21.03.2015, 12:57
  • 4
    'pidstat-w-l-p САМ 1' работа для Вас? –  poige 21.03.2015, 18:11

Можно просмотреть информацию о контекстных переключениях процесса в /proc/<pid>/status.

$ pid=307
$ grep ctxt /proc/$pid/status
voluntary_ctxt_switches:        41
nonvoluntary_ctxt_switches:     16

Чтобы видеть, что эти числа обновляют непрерывно, работать

$ # Update twice a second.
$ watch -n.5 grep ctxt /proc/$pid/status

Для получения просто чисел работать

$ grep ctxt /proc/$pid/status | awk '{ print $2 }'
30
27.01.2020, 19:40
  • 1
    я попробовал вышеупомянутую команду часов, но вывод равняется всего 1 (для добровольного и ненамеренного контекстного переключения). Моя версия ядра Linux 2.6.39-400.214.4.el6uek.x86_64. Выходной иждивенец на версии Linux? –  Andy Dufresne 19.03.2015, 08:49
  • 2
    Вставьте свой вывод здесь. –   20.03.2015, 21:05
  • 3
    Это совпадает с упомянутый в answere - "наблюдают-n.5 grep ctxt/proc/5647/status" –  Andy Dufresne 21.03.2015, 12:52

Для получения записи о выполнении всего процесса можно воспользоваться утилитой GNU time (не путайте ее со сборкой bash) с опцией -v. Вот пример с удалением несвязанных строк вывода:

$ `which time` -v ls
a.out  exception_finder.cpp  log.txt
    Command being timed: "ls"
               ...
    Voluntary context switches: 1
    Involuntary context switches: 2
               ...
    Exit status: 0
4
27.01.2020, 19:40

Написать следующий скрипт для файла ( CTX.SH ). С CTX.SH Вы увидите все процессы, работающие на данном ядре и изменяющихся выключателях NV-контекста, будут выделены. Глядя на это, вы сможете определить, какие конкурирующие процессы для ядра.

#!/bin/bash

if [[ $# -eq 0 ]]
then
   echo "Usage:"
   echo "$0 <core>"
   exit 1
fi

if [[ -z $2 ]]
then
   watch -d -n .2 $0 $1 nw
fi

ps -Leo lastcpu:1,tid,comm | grep "^$1 " | awk '{printf $3": ";system("cut -d\" \" -f3  /proc/"$2"/task/"$2"/schedstat 2>/dev/null")}' | sort -k 1 | column -t
2
27.01.2020, 19:40

Вы можете использовать, sar -w. Например, sar -w 1 3, сообщает общее количество контекстных переключений в секунду за каждые 1 секунду в общей сложности 3 раза.

3
27.01.2020, 19:40
sudo perf stat -e context-switches -I 1000 PROCESS_NAME
0
27.01.2020, 19:40

Теги

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