В pidstat
команда имеет параметры, относящиеся к задачам, и другие, относящиеся к процессам (например, -C
и -G
). Какая разница?
Linux процессы еще один задачи которые разделяют ID группы потоков.
Процессы - это исполняющая программа. Задачи - это то, что планирует Linux, все - задача. Потоки - это другое название планируемой единицы выполнения, иногда несколько легких потоков на процесс. Хотя в Linux все наоборот, процессы являются «тяжелыми» потоками.
Документация по статусу задачи описывает их как:
«Pid», «tid» и «task» взаимозаменяемы и относятся к стандартной задаче Linux, определяемой структурой task_struct. Статистика по pid такая же, как и по задачам.
«Tgid», «процесс» и «группа потоков» используются взаимозаменяемо и относятся к задачам, которые совместно используют mm_struct, то есть традиционный процесс Unix.
То, что многие считают pid UNIX, технически является tgid. И в task_struct есть поле pid, которое можно рассматривать как идентификатор задачи.
pidstat имеет возможность запрашивать подробности. В хорошем пользовательском интерфейсе используются термины, ожидаемые пользователем, в данном случае процессы и потоки. pidstat -p будет сообщать как PID, но pidstat -p -t будет сообщать как TGID, и все потоки с TID. Изящный трюк, показывающий, как один процесс может использовать более 100% ЦП.