Procesy, procesy lekkie, wątki jądra i ich stany

  1. Użyj programu top (htop) do obserwacji procesów i wątków. Czym różnią się zwykłe procesy (zadania) od wątków jądra?

  2. Użyj programu top do zapisywania w pliku top.log informacji o stanie systemu przez 5 sek. i odświeżaniu informacji co 0.1 sek.

  3. Użyj programu top do wyświetlania z częstotliwością 5Hz informacji tylko o zadaniach w stanie R.

  4. Użyj programu top do wyświetlania (z domyślną częstotliwością) tylko zadań gotowych użytkownika <user>.

  5. Zaloguj się na serwerze polon/tor sprawdź z jakiej wersji jądra korzysta (hostnamectl). Użyj komendy ps -e -o user,stat,pid,tgid,lwp,nlwp,rss,args:30 do obserwacji procesów ciężkich, procesów lekkich i wątków jądra. Wskaż kilka programów, które wykorzystują największą liczbę procesów lekkich. Przyjrzyj się tym zadaniom dokładniej używając komendy ps -eLf| grep ....

  6. Przeanalizuj stany, w jakich znajdują się zadania, w tym wątki jądra.

  7. Zaloguj się na serwer neptun i sprawdź z jakiej wersji jądra korzysta. Następnie sprawdź, w jakim stanie są wątki jądra. Czy ten stan jest ujęty w dokumentacji komendy ps?

  8. W celu zaobserwowania powstawania procesów zombie przygotuj dwie konsole i wykonaj poniższe polecenia obserwując dokładnie, co się dzieje i jakie wyniki daje komenda ps.

    • konsola 1

      $ bash
      $ echo $$ > pid
      $ sar -w 1
      
    • konsola 2

      $ ps -el | grep '^[0-4] Z'
      $ kill -STOP $(cat pid)
      $ pkill [-U<uid>] -f 'sar -w'
      $ ps -el | grep '^[0-4] Z'
      $ kill [-U <uid>] -CONT $(cat pid)
      $ ps -el | grep '^[0-4] Z'
      
  9. W celu zaobserwowania powstawania i znikania procesów zombie przeanalizuj działanie skryptów zombie1.sh i zombie2.sh (git clone /git/tm-scripts; cd tm-scripts/zombie).