pidstat: diferența dintre task și proces? (Administrarea sistemului, Linux, Kernel, Proces, Monitorizarea Performanțelor)

Xaser a intrebat.

pidstat comanda are opțiuni referitoare la sarcini și altele referitoare la procese (de ex. -C și -G). Care este diferența?

1 răspunsuri
John Mahowald

Linux procese sunt încă unul sarcini care împart un ID de grup de fire.

Procesele reprezintă un program în execuție. Sarcinile sunt ceea ce Linux programează, totul este o sarcină. Firele sunt un alt nume pentru o unitate de execuție programabilă, uneori mai multe fire ușoare pe proces. Deși, Linux este mai degrabă invers, adică procesele sunt fire „grele”.

Documentația privind starea sarcinilor le descrie astfel:

„pid”, „tid” și „task” sunt utilizate în mod interschimbabil și se referă la task-ul standard Linux definit de struct task_struct. statisticile per-pid sunt aceleași ca și cele per-task.

„tgid”, „process” și „thread group” sunt utilizate în mod interschimbabil și se referă la sarcinile care împart o structură mm_struct, adică procesul tradițional Unix.

Ceea ce mulți consideră a fi pid-ul UNIX este, din punct de vedere tehnic, tgid-ul. Și există un câmp pid în task_struct care ar putea fi considerat un ID de sarcină.

pidstat are capacitatea de a interoga detalii. O interfață bună utilizează termenii pe care îi așteaptă utilizatorul, în acest caz procese și fire de execuție. pidstat -p va raporta ca PID, dar pidstat -p -t va raporta ca TGID, iar toate firele de execuție cu TID. Un truc frumos pentru a arăta cum un proces poate utiliza mai mult de 100% din CPU.