Назад | Перейти на главную страницу

pidstat: разница между задачей и процессом?

В 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% ЦП.