Потоки – программа абстракции для параллельного выполнения в современных OS. С многопоточным выполнением программы происходит следующее: адресное пространство оперативной памяти и открытые файлы делятся между потоками с той целью, чтобы минимизировать накладные расходы и более эффективно использовать процессорное время. Все это делает многопоточное выполнение эффективным и полезным механизмом. Просматривать потоки можно при помощи инструментов командной строки ps
и top
. Дальше рассмотрим, как это сделать в операционной системе Linux.
В Linux предусмотрены два способа отладки многопоточных процессов для выполнения определенного действия. Один из них – когда процесс создает свои копии с помощью механизма fork и затем эти процессы взаимодействуют через сокеты или IPC. Т. Пользователь получает процессы, которые занимают ресурсы и определенный объем памяти. Следующий способ это выделение потоков в рамках одного процесса. Так все потоки одного процесса будут иметь один идентификатор группы потоков, а также уникальный идентификатор. То есть, у них будет доступ ко всем ресурсам родительского процесса и они станут занимать меньше памяти.
В этой программе потоки процессов активируются одной командой – T
. Следующим образом можно посмотреть все потоки процесса с PID для Chromium:
$ ps -T -p
В колонке SPID отображается идентификатор потока, а в CMD его имя.
При помощи утилиты top легко просматривать потоки в реальном времени. Для этого необходимо запустить top с опцией -H
. Есть возможность включить или отключить показ потоков во время выполнения с помощью клавиши H:
$ top -H
Если нужно посмотреть только потоки нужного процесса используйте:
$ top -H -p pid
Как видим, пользоваться top совсем просто.
Однако самой удобной утилитой для просмотра потоков по праву считается HTOP. Это основной на ncurces интерактивный инструмент просмотра процессов. С его помощью вы можете наблюдать за потоками в реальном времени в виде дерева.
Для этого необходимо включить просмотр потоков в htop: в первую очередь откройте программу, войдите в меню, нажав клавишу F2, затем выберите Display Options, в разделе Setup. Теперь отметьте Three view и Show custom thread names. Все, можно нажимать F10 для сохранения настроек:
На этом все. Так вы можете просматривать потоки в виде дерева отдельно для каждого процесса. Здесь снова отображаются потоки для браузера Chromium: