Advertisement
pan7nikt

sysop_4.1.2_prawieCale

May 20th, 2024 (edited)
439
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 14.00 KB | None | 0 0
  1. #README
  2. #WSZYSTKO WYKONYWAC JAKO ROOT
  3. #KOMENDY ZE SREDNIKAMI NA KONCU POWINNY BYC WRZUCANE NARAZ
  4. #PRZED KAZDYM ZADANIEM JEST PODANA ILOSC WYMAGANYCH TERMINALI
  5. #KAZDY TERMINAL MA PRZYPISANA CYFRE np. 1:
  6. #Z REGULY TERMINAL 1 JEST DO LISTINGOW A TERMINAL 2 JEST ROBoCZY
  7. #ZALECA SIE ROBIC KAZDY PODPUNKT W ODDZIELNYM TERMINALU (latwiej clearowac)
  8.  
  9. 4.1.2.3
  10. #POTRZEBNE GUI
  11. Jak wykazać aktualną liczbę wątków w procesie oraz, że wątki procesu mogą mieć różne cykle życia.
  12. - wymagane zaprezentowania odpowiednich wartości w listingu dla wybranego procesu wielowątkowego
  13.  
  14. echo -e "\033[0;32m-------------------------------------------------------[4.1.2.3]-----------------------------------------------------------------------------\033[0m"
  15.  
  16. echo -e " Każdy wątek posiada identyfikator TID(Thread ID) , który można oznaczyćTID=LWP(Ligth Weigth Process). Są
  17. nazwywane lekkimi procesami ponieważsystem operacyjny nie zapewnia sepracji wątków tego samego procesu.
  18. Proces jest kontenerem wątków (ich liczba może sięzmieniaćw trakcie istnienia procesu)
  19. Wątek główny \033[0;32mTID = SPID = PID\033[0m zawsze istnieje do końca życia procesu gdyżzwraca kod błędy więc zakończy sięjako
  20. ostatni.
  21.  
  22. Liczba wątków dla procesu (wątek główny to teżwątek)
  23.  
  24. ELAPSED -czas od rozpoczęcia procesu
  25.  
  26. O liczbie watkow decyduje:
  27. - wątki procesu - programista
  28. - wątki jądra - jądro systemu
  29.  
  30. dowolny watek \033[0;32mnie moze sie zakonczyc w dowolnym momencie\033[0m
  31.  
  32. Wątek główny \033[0;32mnie moze sie zakonczyc w dowolnym momencie\033[0m, ponieważmusi zwrócićkod błędu na koniec
  33.  
  34. \033[0;32mLiczba watkow kazdego procesu\033[0m zależy od uruchomionego programu , w którym \033[0;32mprogramista\033[0m przydzielił zadanie
  35. dla wątków, określił ich cykle życia i ustalił zasady ich przetwarzania
  36.  
  37. \033[0;32mZadanie przetwarzane przez wątek\033[0m definiowane jest poprzez sekwencje rozkazów oraz zbiór danych do przetwarzania
  38.  
  39. Wątek jądra a wątek procesu
  40. - Wątki jądra mogą korzystać bezpośrednio z zasobów systemowych oferowanych przez jądro , jednak monitoranie
  41. wątku jądra w przestrzeni użytkownika niekoniecznie uwidoczni wykorzystanie każdego z używanych przez niego
  42. zasobów systemowych
  43. - Wątki jądra realizują przetwarzanie zadań tylko w trybie uprzywilejowanym
  44.  
  45. Wątek procesu \033[0;32mna wyłączność posiada\033[0m:
  46. - własny stos
  47. - licznik rozkazów
  48. - własny stan (gotowy do wykonania , wykonywany, zablokowany)
  49. "
  50.  
  51.  
  52.  
  53. 2 (GUI):
  54. #URUCHOMIC LEAFPAD W SESJI GUI
  55. 1:
  56. pidof leafpad;
  57. ps -o pid,nlwp -p $(pidof leafpad) | grep --color -E "NLWP|$"
  58. ps -T -o pid,tid,spid,etime,stime,comm | grep --color -E "SPID|ELAPSED|$"
  59. 2 (GUI):
  60. #WLACZYC ZAPISYWANIE W LEAFPAD
  61. 1:
  62. ps -o pid,nlwp -p $(pidof leafpad) | grep --color -E "NLWP|$"
  63. ps -T -o pid,tid,spid,etime,stime,comm | grep --color -E "SPID|ELAPSED|$"
  64. pstree -p $(pidof leafpad)
  65.  
  66.  
  67.  
  68. 4.1.2.4
  69. Ile włókien posiada zidentyfikowany proces wielowątkowy? - odpowiedź uzasadnić,
  70. czy sytuacja będzie korzystniejsza jeżeli wszystkie wątki procesu będą włóknami?
  71. Należy ustalić najkorzystniejszy przydział jednostek przetwarzających dla procesu wielowątkowego, gdy wszystkie wątki nie są włóknami.
  72.  
  73. 1:
  74. echo -e "\033[0;32m-------------------------------------------------------[4.1.2.4]-----------------------------------------------------------------------------\033[0m"
  75. echo -e "
  76. sytuacja nie będzie korzystniejsza \033[0;32mjeżeli wszystkie wątki procesu będą włóknami\033[0m
  77.  
  78. Nie posiada żadnych włókien ponieważ każdy z wątków jest identyfikowany przez jądro poprzez \033[0;32mprzydzielone
  79. identyfikatory\033[0m, z których każdy jest różny.
  80. Sytuacja lepiej wygląda gdy wszystkie wątki nie są włóknami , ponieważ wtedy dla każdego z tych wątków możemy
  81. przydzielić inną jednostkę przetwarzającą.
  82. Gdy są włóknami wszystkie w te włókna korzystać mogą jedynie z jednej jednostki przetwarzającej.
  83. Czy zawsze?
  84. Sytuacja będzie korzystniejsza jeżeli wszystkie wątki będą włóknami, ponieważ:
  85. - przełączanie kontekstu wątków w tej sytuacji jest korzystniejsze, bo nie wymaga udziału jądra systemu
  86. operacyjnego w realizacji tej operacji,
  87. - Włókna są lżejsze od wątków, ponieważ współdzielą te same zasoby, takie jak pamięć.
  88. Na każdy wątek jedna jednostka przetwarzająca.
  89. Wątką procesu identyfikatory nadaje \033[0;32mjądro systemu\033[0m.
  90. Każdy wątek który \033[0;32mnie jest włóknem\033[0m może otrzymać przydział jednostki przetwarzającej
  91. Stos – obszar w pamięci, który jest na początku wyzerowany. I tam zapisywane są ramki stosu. (zbudowany
  92. z ramek stosu)
  93.  
  94. \033[0;32mNajkorzystniejszy przydział jednostek przetwarzającyh\033[0m dla wielowątkowego procsu bezwłókien wynika z
  95. liczby wątków procesu, które są w stanie gotowym do wykonania lub wykonywanym(przy założeniu nie
  96. mniejszej liczby aktywnych jednostek przetwarzających)
  97. \033[0;32mKażdy z wątków\033[0m procesu który nie jest włóknem może uzyskać przydział co najwyżej pojedynczej aktywnej
  98. jednostki przetwarzającej.
  99.  
  100. \033[0;32mKiedy ramki stosu są zapisywane na stosie?\033[0m
  101. Kiedy jest skok daleki, kiedy funkcja jest wykonywalna. I wtedy trzeba zachować w ramce na stosie
  102. adres powrotu.
  103.  
  104. \033[0;32mCzy Adres powrotu wskazuje na adres rozkazu skoku?\033[0m
  105. Nie, adres powrotu wskazuje na rozkaz następny względem skoku. Ten który znajduje się
  106. bezpośrednio po rozkazie skoku.
  107.  
  108. \033[0;32mCzy z tej saej ramki stosu można wielokrotnie odczytywać adres powrotu?\033[0m
  109. Nie
  110.  
  111. \033[0;32mCo może być zawarte w ramce stosu?\033[0m
  112. Zawierają zmienne lokalne, by mogły zostać odtworzone po powrocie.
  113.  
  114. \033[0;32mW jakiej kolejności odczytywane i zapisywane ramki stosu?\033[0m
  115. Jaki algorytm? - lifo (last in )
  116. "
  117.  
  118. 4.1.2.13
  119. Jakie wyróżnia się rodzaje przełączeń kontekstu zadań, które z nich występują najczęściej i w jakich sytuacjach?
  120. - wskaż w przygotowanych listingach dla przykładowych wątków procesu liczbę odpowiednich przełączeń kontekstu.
  121.  
  122. 1:
  123. echo -e "\033[0;32m-------------------------------------------------------[4.1.2.13]-----------------------------------------------------------------------------\033[0m"
  124.  
  125. echo -e "
  126. Przełączenie kontekstu zadań wymaga zachowania stanu zadania (stan rejestrów jednostki przetwarzającej) ,
  127. które przestaje być przetwarzane i wczytanie zadanai którego przetwarzanie będzie wykonywane
  128. Przełączenie kontekstu zadań polega na przekazaniu jednostki przetwarzającej z wątku aktualnie
  129. przetwarzanego zadania do zadania , którego wątek był w stanie gotowym do wykonania.
  130. Przełączenie kontekstu zadań jest realizowane przez dyspozytora który jest elementem jądra systemu
  131. operacyjnego
  132. Przełączenie kontekstu procesów – zmiana przydziału jednostki przetwarzającej poprzez jej przekazanie pomiędzy dwoma
  133. procesami(dokładniej pomiędzy wątkami tych procesów).
  134. Przełączenie kontekstu wątków – zmiana przydziału jednostki przetwarzającej poprzez jej przekazanie pomiędzy dwoma
  135. wątkami tego samego procesu. Ten typ przełączenia jest mniej czasochłonny.
  136. Przełączenie kontekstu włókien - wykonywane jest bez pośrednictwa jądra zatem jest szybsze od przełączeń wątków.
  137. Decyzja przełączania kontekstu jest podejmowana przez mechanizmy szeregowania. Planista podejmuje decyzję o wyborze
  138. procesu gotowego do wykonania, któremu zostanie przyznana jednostka przetwarzająca. Dyspozytor (inaczej też
  139. ekspedytor) jest niskopoziomowym mechanizmem realizującym przydział i wykonującym przełączanie kontekstu.
  140. Dlaczego efektywniejsze jest przełączanie kontekstu zadań pomiędzy wątkami tego samego procesu niż
  141. pomiędzy wątkami różnych procesów?
  142. • system operacyjny zapewnia separacje procesów , ale nie seperuje wątków w ramach tego samego
  143. procesu.
  144. • przełączanie kontekstu zadań realizowanych w wątkach różnych procesów wymaga udostępniania dla
  145. jednostki MMU tablicy stron procesu , którego zadanie będzie przetwarzane a dotychczasowa zawartość
  146. pamięci asocjacyjnej TLB staje się bezużytyczna.
  147. Rodzaje przełączenia kontekstu:
  148. - \033[0;32mdobrowolne/nieobowiązkowe przełączanie kontekstu\033[0m, występuje podczas:
  149. • zmiany stanu procesu/wątku na zablokowany lub wstrzymany;
  150. • wykonania rozkazu odstąpienia jednostki przetwarzającej.
  151. • zakończenie przetwarzania zadanai w wątku
  152. • zgłoszenie operacji wejścia-wyjścia prez przetwarzane przez wątek zadanie
  153. Te częściej występują *spójrz na listing [cat /proc/{PID}/status | grep -e "Name\|Pid\|switches" ]*
  154. - \033[0;32mmimowolne/wymuszone\033[0m, występuje w sytuacji, gdy
  155. • dla procesu/wątku w stanie wykonywanym jednsotka jest odbierana w wyniku decyzji mechanizmów szeregujących
  156. systemu operacyjnego \033[0;32m(kwant czasu lub wyższa preferencja procesu)\033[0m
  157. Przełączanie kontekstu procesów wymaga:
  158. - zapisania i załadowania rejestrów jednostki przetwarzającej oraz mapy pamięci,
  159. - aktualizacji systemowych struktur danych (tabele i listy)
  160. - opróżnienia i ponownego załadowania pamięci podręcznej przez MMU
  161. Częściej występują dobrowolne
  162.  
  163. \033[0;32mW jakiej sytuacji najczęściej występuje dobrowolne?\033[0m
  164. W sytuacji przejścia procesu/wątku w stan zablokowany.
  165.  
  166. \033[0;32mCzyli oczekiwania na realizacje jakich operacji?\033[0m
  167. Wejścia-wyjścia
  168. "
  169.  
  170. cat /proc/$(pidof leafpad)/status | grep -e "Name\|Pid\|switches"
  171.  
  172. echo -e "
  173. \033[0;32mKwant czasu\033[0m-odcinek czasu przydzielany procesowi do działania w algorytmie rotacyjnym, rzędu milisekund.
  174.  
  175. \033[0;32mGdzie ma wystąpićrozkaz odstąpienia?\033[0m
  176. W ścieżce wykonania wątku."
  177.  
  178. pidstat -tw -p $(pidof leafpad)
  179. cat /proc/{PID1,PID2,PID3,etc}/status | grep -e "Name" -e "pid" -e "switches"
  180. cat /proc/{5082,5083,5084,5084}/status | grep -e "Name" -e "pid" -e "switches"
  181.  
  182. 4.1.2.18
  183. Jakie ograniczenia wynikają z nadanej maski koligacji dla jednego z wątków procesu.
  184. - wymagane zaprezentowanie w listingu identyfikatorów jednostek przetwarzających
  185. jakie mogą być przyznawane dla wątku procesu ograniczonymi regułami koligacji.
  186.  
  187. 1:
  188. echo -e "\033[0;32m-------------------------------------------------------[4.1.2.18]-----------------------------------------------------------------------------\033[0m"
  189.  
  190.  
  191. taskset -a -p $(pidof leafpad)
  192. taskset --cpu-list -p <TID wybranego wątku>
  193. taskset -p <2 ostatnie cyfry indeksu> <TID wybranego wątku>
  194. taskset -a -p $(pidof leafpad)
  195. taskset --cpu-list -p <TID wybranego wątku>
  196.  
  197. echo -e "
  198. \033[0;32m#1\033[0m Stosując koligacjęjednostek przetwarzających dla procesu można określićlistędopuszczalnych aktywnych jednostek
  199. przetwarzających dla jego wątków. **Zbiór procesorów ustawionych poprzez reguły dla procesu nigdy nie może być
  200. pusty**
  201.  
  202. \033[0;32mMaska koligacji\033[0m–zapis szesnastkowy wartości, której poszczególne bity będądecydowały, które jednostki
  203. przetwarzające będąmogły byćprzyznawane.
  204. 0 –brak zgody na korzystanie z jednostki przetwarzającej o danym identyfikatorze.
  205. 1 –zgoda na korzystanie z jednostki przetwarzającej o danym identyfikatorze.
  206. Ten mechanizm daje możliwośćpodziału kto korzysta z których jednostek przetwarzających, jest możliwe
  207. sprecyzowanie wybrana jednostka przetwarzająca jest dla konkretnego zadania. Ta jednostka przetwarzająca
  208. musi byćaktywna
  209.  
  210. \033[0;32m#P\033[0m Czy wątek może otrzymaćprzydziałwszystkich jednostek przetwarzających naraz?
  211. Nie, może otrzymaćprzydziałtylko jednej z tych jednostek.
  212.  
  213. \033[0;32m#P\033[0mCzy w każdym z systemów operacyjnych możemy indywidualnie przyznawaćwątki np. reguły koligacji?
  214. Nie, w windowsie możemy tylko per proces
  215. "
  216.  
  217. 4.1.2.21
  218. Zaprezentować, że zastosowana polityka NUMA do procesu wielowątkowego spowodowała ograniczenie wykorzystania zasobów
  219. jednostek przetwarzających i pamięci ulotnej z ustalonego pojedynczego węzła NUMA. - wymagane zaprezentowanie listingów.
  220.  
  221. 1:
  222. echo -e "\033[0;32m-------------------------------------------------------[4.1.2.21]-----------------------------------------------------------------------------\033[0m"
  223.  
  224. 2:
  225. lscpu
  226. numactl --cpunodebind=2 --membind=2 leafpad
  227.  
  228. 1:
  229. pidof leafpad
  230. ps -o pid,nlwp -p $(pidof leafpad)
  231. numastat -p $(pidof leafpad)
  232. numactl -H
  233. taskset -c -a -p $(pidof leafpad)
  234.  
  235. echo -e "Maska przypisana zgadza się z przypisanymi CPU do tego węzła (6-9) – widać, że nastąpiło ograniczenia zasobów
  236.  
  237. \033[0;32mNUMA\033[0m to architektura komputerów charakteryzująca się podziałem na węzły, które dysponują jednostkami przetwarzającymi i
  238. ciągła przestrzenią pamięci ulotnej RAM
  239.  
  240. *Obowiązująca polityka NUMA oraz reguły koligacji są zawsze nadrzędne do ustalonej polityki szeregowania*
  241. \033[0;32mNUMA > koligacja > priorytet statyczny > polityka szeregowania > priorytet zewnętrzny nice\033[0m
  242.  
  243. \033[0;32m#P\033[0m Co jeżeli reguły koligacji mówią że proces może korzystać z drugiego CPU a należy do węzła NUMA który nie zawiera tej
  244. jednostki przetwarzającej?
  245. - nie dostanie wtedy przydziału jednostki przetwarzającej ponieważ NUMA jest nadrzędna
  246. NUMASTAT
  247. - Huge - zakres dużych stron (mogą zajmować 2MiB)
  248. - Heap - sterta
  249. - Stack - stos
  250. - Private - strony anonimowe (segment składa się ze stron)
  251. Tablica TLB - przechowywane są ostatnio transformowane adresy stron z logicznych na fizyczne gdy odwołamy się do adresu
  252. strony której nie ma zostanie ona przetransformowane.
  253. Tablica stron - Zawiera numery ramek odpowiadające numerom stron
  254.  
  255. \033[0;32m#P\033[0m Skąd wiadomo, że ten proces korzystał z pamięci ulotnej, zlokalizowanej w tym ostatnim węźle?
  256. - anonimowe segmenty pamięci - stos i stertę lokalizował w pamięci węzła nr 2. (pokazać niezerowe wartości po wykonaniu
  257. polecenia numastat -p <PID>
  258.  
  259. \033[0;32m#P\033[0m Skąd wiadomo że to jednostki z ostatniego węzła?
  260. - z polecenia numactl -H widać node 2 cpus: 6 7 8 9
  261.  
  262. \033[0;32m#P\033[0m Jakie zasoby przynależą do węzłów NUMA?
  263. - jednostki przetwarzające i obszar pamięci ulotnej
  264. "
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement