Advertisement
pan7nikt

zad_4_odp_full_DLC_EXPANSION_GOTY_2024

May 6th, 2024 (edited)
576
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 20.46 KB | None | 0 0
  1. #README
  2. #KOREKTA 16:33
  3. 4.1.1.7 (2) Zmiany opisowe
  4.  
  5. #KOREKTA 16:29
  6. 4.1.1.20 Zmiany opisowe
  7.  
  8. #KOREKTA 15:49
  9. #4.1.1.7 (2) Zmiany opisowe
  10. #4.1.1.10 HEAP I STACK BYLY NADAL ZAMIENIONE!!!!!!!!!!!!!!!!!!!!!!!
  11.  
  12. #ZAKTUALIZOWANE 13.05.2024 PRZED ODPOWIEDZIA
  13. #!!!!!!!!!!!!!!!WIELOLINIJKOWE ECHO WKLEJAC NARAZ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  14. #WSZYSTKO WYKONYWAC JAKO ROOT
  15. #KOMENDY ZE SREDNIKAMI NA KONCU POWINNY BYC WRZUCANE NARAZ
  16. #PRZED KAZDYM ZADANIEM JEST PODANA ILOSC WYMAGANYCH TERMINALI
  17. #KAZDY TERMINAL MA PRZYPISANA CYFRE np. 1:
  18. #Z REGULY TERMINAL 1 JEST DO LISTINGOW A TERMINAL 2 JEST ROBoCZY
  19. #ZALECA SIE ROBIC KAZDY PODPUNKT W ODDZIELNYM TERMINALU (latwiej clearowac), A TERMINAL ROBOCZY (2) MIEC JEDEN DLA WSZYSTKICH
  20.  
  21.  
  22. /////////////////////////////////////////////////////////////KONIEC LISTINGOW/////////////////////////////////////////////////////////////////////////////////////////////////////
  23.  
  24. 4.1.1.4 Do czego sluzy klasyfikacja procesow na ograniczone procesorem i ograniczone wejsciem wyjsciem oraz na jakiej podstawie zweryfikowano, ze proces jest ograniczony wejsciem-wyjsciem?
  25. #ILOSC TERMINALI:  2
  26.     1:
  27.     echo -e "
  28. \033[0;32m-------------------------------------------------------[4.1.1.4]-----------------------------------------------------------------------------\033[0m
  29.    
  30.    \033[0;32mPozwala okreslic w jaki sposob usprawnic realizacje zadan przez proces\033[0m
  31.  
  32.     dodatkowo pozwala okreslic w jakim stanie spedza wiekszosc czasu cyklu zycia.
  33.     \033[0;32mOgraniczone procesorem\033[0m - spedzaja wiekszosc czasu w stanie wykonywanym.
  34.     \033[0;32mOgranioczone wejsciem-wyjsicem\033[0m - spedzaja wiekszosc czasu w stanie zablokowanym
  35.    \033[0;32mStan zablokowany\033[0m - oczekuje na pozostale zasoby systemowe oprocz stron pamieci
  36.  
  37.    \033[0;32m
  38.    zeby wiedziec jak usprawnic realizacje zadania/zadan przez proces. Dla procesow
  39.    ograniczonych procesorem mozemy zwiekszyc przydzial jednostek przetwarzajacych, a w
  40.    procesach ograniczonych wejsciem wyjsciem mozna poprawic warunki realizacji operacji
  41.    dyskowych.
  42.    \033[0m
  43.  
  44.    Jezeli proces zglasza operacje dyskowe to mozemy poprawic warunki realizacji operacji
  45.    dyskowych.
  46.  
  47.    Nie kazda operacje wejscia wyjscia mozna usprawnic, ale operacje dyskowe akurat mozna.
  48.  
  49.    \033[0;32mOperacje dyskowe wejscia wyjscia\033[0m to odczyt i zapis
  50.    
  51.    proces moze przebywac w stanie \033[0;32mzablokowanym, wykonywanym i gotowym do wykonania\033[0m
  52.  
  53.    \033[0;32mReal\033[0m – calkowity czas istnienia procesu – czas cyklu zycia procesu
  54.    \033[0;32mRuntime\033[0m – czas przebywania procesu w stanie wykonywanym (Wirtualny czas zycia procesu)
  55.    \033[0;32mswitches*avg delay\033[0m – czas przebywania procesu w stanie gotowym do wykonania
  56.    \033[0;32mswitches\033[0m – przelaczenia kontekstu, w ktorych ten proces uczestniczyl
  57.    \033[0;32mavg delay\033[0m – sredni czas oczekiwania na przydzial jednostki przetwarzajacej
  58.    "
  59.  
  60.  
  61.  2:
  62.  echo bfq > /sys/block/sda/queue/scheduler
  63.  time perf sched record dd if=/dev/sda of=/dev/null bs=512K
  64.  
  65.  1:
  66.  cat /proc/$(pidof dd -s)/status | grep Threads
  67.  ps -o pid,etime,cputime,%cpu $(pidof dd -s)
  68.  pmap -x $(pidof dd -s)
  69.  pmap -X $(pidof dd -s) | grep --color -E "stack|heap|$"
  70.  
  71.  echo -e "\033[0;32mVSZ\033[0m - rozmiar stron\n \033[0;32mRSZ\033[0m - rozmiar ramek"
  72.  ps -o pid,vsz,rsz $(pidof dd -s)
  73.  cat /proc/$(pidof dd -s)/status | grep Threads
  74.  
  75.  2:
  76.  #TUTAJ PRZERWAC DD ZA POMOCA CTRL + C (raz)
  77.  perf sched latency -p | grep -e "Task" -e "dd"
  78.  echo -e "Czas w stanie zablkowanym = real - runtime -(Switches * Avg delay
  79. Czas w stanie zablokowanym w ms:
  80. \033[0;32m$(bc <<<'scale=2; <REAL> - <RUNTIME> - (<SWITCHES> * <AVG DELAY>)')\033[0m"
  81. echo -e "Procent w czasie zablokowanym = Czas w stanie zablokowanym / real * 100%
  82. Procent w stanie zablokowanym:
  83. \033[0;32m$(bc -l <<< 'scale = 2; <CZAS W STANIE ZABLOKOWANYM> / <REAL> *100')%\033[0m"
  84.  
  85. 4.1.1.5 (brakujace). Sekretne pytanie brakujace z wikampa: Jak okreslic cykl zycia procesu i czym jest wirtualny czas zycia procesu? - wymagane zaprezentowania odpowiednich wartosci w listingu
  86. #ILOSC TERMINALI: 1
  87.  1:
  88.  echo -e "
  89. \033[0;32m-------------------------------------------------------[4.1.1.5]-----------------------------------------------------------------------------\033[0m
  90. \033[0;32mCykl zycia procesu\033[0m to calkowity czas przez jaki istnial proces (\033[0;32mreal\033[0m)
  91. \033[0;32mWirtualny czas zycia procesu\033[0m to czas w jakim kod programu byl wykonywany / czas realizacjizadania / czas w stanie wykonywanym (\033[0;32mruntime\033[0m)"
  92.  
  93.  echo bfq > /sys/block/sda/queue/scheduler
  94.  time perf sched record ionice -c 1 -n 0 stress -i 1 -t 3
  95.  perf sched latency -p | grep -e "Task" -e "stress"
  96.  
  97. 4.1.1.6 Co reprezentuje wartosc %cpu dla procesu jednowatkowego? - dla jakiego procesu wartosc %cpu moze przekroczyc 100%?
  98. #ILOSC TERMINALI: 2
  99.     1:
  100.     echo -e "
  101. \033[0;32m-------------------------------------------------------[4.1.1.6]-----------------------------------------------------------------------------\033[0m
  102. cputime / etime * 100% -- procent cyklu zycia w kotrym proces przebywal w stanie wykonywanym (suma wirtualnych czasow zycia watku musi byc wiekszy niz czas zycia procesu)
  103. Ta wartosc reprezentuje czas przetwarzania podzielony przez czas zycia procesu.
  104. \033[0;32mstosunek wirtualnego czasu zycia procesu do jego rzeczywistego czasu zycia procesu \033[0m (runtime/real)
  105.  
  106. \033[0;32mReal\033[0m – calkowity czas istnienia procesu – czas cyklu zycia procesu
  107. \033[0;32mRuntime\033[0m – czas przebywania procesu w stanie wykonywanym
  108.  
  109. \033[0;32mMoze przekroczyc 100%\033[0m Dla procesu posiadajacego wiele watkow, ktore wiekszosc czasu spedzaja w stanie wykonywanym
  110. czyli
  111. jesli sumaryczny czas przetwarzania zadan przez watki jest wiekszy niz czas cyklu zycia procesu."
  112.  
  113. #WIELOWATKOWY
  114.     2:
  115.     sysbench --test=cpu --threads=2 --time=70 run
  116.     1:
  117.     echo -e "\033[0;32mWieloowatkowy\033[0m"
  118.     cat /proc/$(pidof sysbench -s)/status | grep Threads
  119.     ps -o pid,cmd,nlwp,%cpu,cputime,etime "$(pidof sysbench -s)" ;ps -o pid,spid,%cpu,cputime,etime -T "$(pidof sysbench -s)" | grep --color -E " %CPU|$"
  120.  
  121. #JEDNOWATKOWY
  122.     2:
  123.     echo bfq > /sys/block/sda/queue/scheduler
  124.     time perf sched record dd if=/dev/sda of=/dev/null
  125.     #sysbench --test=cpu --threads=1 --time=70 run
  126.     1:
  127.     echo -e "\033[0;32mJednowatkowy\033[0m";
  128.     echo -e "Dla procesu jednowatkowego \033[0;32mnie moze przekroczyc 100%\033[0m";
  129.     cat /proc/$(pidof dd -s)/status | grep Threads;
  130.      #PO CHWILI PRZERWAC DD ZA POMOCA CTRL + C (raz)
  131.     ps -o pid,cmd,nlwp,%cpu,cputime,etime "$(pidof dd -s)" ;ps -o pid,spid,%cpu,cputime,etime -T "$(pidof dd -s)" | grep --color -E " %CPU|$"
  132.  
  133. 4.1.1.7 (1). Co reprezentuje wartosc %mem dla procesu? - wymagane wykazanie w listingach wartosci, na bazie ktorych %mem jest wyliczany
  134. #ILOSC TERMINALI: 2
  135.     1:
  136.     echo -e "
  137. \033[0;32m-------------------------------------------------------[4.1.1.7 (1)]-----------------------------------------------------------------------------\033[0m
  138.    \033[0;32mJest to stosunek pamieci fizycznej ulotnej przydzielonej procesowi do dostepnej (uzytecznej) fizycznej ulotnej pamieci (pamiec fizyczna bez kernela) (RSZ / Total online memory[w tym przypadku 5.8G])\033[0m
  139.    \033[0;32m%MEM\033[0m = RSZ / MEM total * 100%
  140.    \033[0;32mRSS\033[0m (\033[0;32mRSZ\033[0m) - ZBIOR ROBOCZY (working set), zbior ramek dla procesu, tworzy obszar roboczy
  141.    \033[0;32mtotal\033[0m - fizyczna pamiec ulotna maszyny
  142.    \033[0;32mTablica stron\033[0m - zawiera uzywane przez proces \033[0;32mramki ze stronami\033[0m, jest nieciagla i hierarchiczna
  143.    \033[0;32mobszar roboczy\033[0m - zbior ramek
  144.    \033[0;32mlsmem\033[0m - pokazuje calkowita pamiec ulotna fizyczna maszyny
  145.    \033[0;32mfree\033[0m - pokazuje dostepna (uzyteczna) pamiec ulotna [pamiec fizyczna - kernel - zarezerwowana przez system]"
  146.  
  147.     2:
  148.     stress -m 1 -t 60
  149.  
  150.     1:
  151.     lsmem | grep --color -E "Total online memory:|$"
  152.     ps -o pid,%mem,rsz "$(pidof stress -s)" | grep --color -E " %MEM|total|$" ; free -h | grep --color -E "total|$"
  153.  
  154.  
  155. 4.1.1.7 (2). Czy calosc jego kodu i danych jest wczytywana z pliku programu ELF oraz plikow bibliotek ELF do fizycznej pamieci ulotnej?  
  156. - wymagane zaprezentowania odpowiednich wartosci dla segmentu danych i tekstu w listingu z mapa pamieci procesu jednowatkowego.
  157. #ILOSC TERMINALI: 2
  158.  
  159.     1:
  160.     echo -e "
  161. \033[0;32m-------------------------------------------------------[4.1.1.7 (2)]-----------------------------------------------------------------------------\033[0m
  162. \033[0;32mNie wszystkie\033[0m, czesc kodu i danych wczytywana jest z segmentow anonimowych.
  163. \033[0;32mr-x\033[0m - zawiera text
  164. Dane:
  165. \033[0;32mrw-\033[0m - zawiera zmienna
  166. \033[0;32mr--\033[0m - zawiera stala
  167.  
  168. Jezeli rozmiar \033[0;32mKbytes\033[0m i \033[0;32mRSS\033[0m sa inne oznacza to, ze nie wszystkie strony zostaly wczytane do ramek
  169.  
  170. czyli \033[0;32mrozmiar stron jest wiekszy od rozmiaru ramek\033[0m
  171.  
  172. Ramki znajduja sie w \033[0;32mzbiorze roboczym (zbiorze ramek)\033[0m
  173. "
  174.     2:
  175.     echo bfq > /sys/block/sda/queue/scheduler
  176.     time perf sched record ionice -c 1 -n 0 stress -i 1 -t 240
  177.  
  178.     1:
  179.     #POKAZUJESZ DOWOLNY SEGMENT (KOLOREM JEST PRZYKLADOWY ZAZNACZONY) TEKSTU LUB DANYCH I ZAZNACZASZ, ZE "Kbytes" JEST WIEKSZE OD "RSS"
  180.     pmap -x $(pidof stress -s)| grep --color -E "Kbytes|RSS|r-x-- libc.so.6|$";
  181.  
  182.  
  183. 4.1.1.10. Ktory z segmentow procesu zawiera sterte, a ktory stos? Czy segment sterty/stosu sa anonimowe? - wymagane wskazanie segmentu sterty i stosu w mapie pamieci wybranego procesu.
  184. #ILOSC TERMINALI: 2
  185.     2:
  186.     echo bfq > /sys/block/sda/queue/scheduler
  187.     time perf sched record ionice -c 1 -n 0 stress -i 1 -t 240
  188.  
  189.     1:
  190.     echo -e "
  191. \033[0;32m-------------------------------------------------------[4.1.1.10]-----------------------------------------------------------------------------\033[0m
  192. [\033[0;32mstack\033[0m] - stos (Segment z mapowaniem [ stack ])
  193. [\033[0;32mheap\033[0m] - sterta(Segment z mapowaniem [ heap])
  194. tak, \033[0;32moba sa anoniowe\033[0m, poniewaz ich zawartosc zostala wytworzona przez proces, a nie wczytana z pliku.
  195.  
  196. \033[0;32mSterta\033[0m zawiera dane wytworzone przez proces np. zmienne lokalne, jest dynamicznie przyznawana procesowi.
  197.  
  198. Zawartosc segmentu procesu \033[0;32mmoze pochodzic z biblioteki\033[0m.
  199.  
  200. \033[0;32mPamiec anonimowa\033[0m lub mapowanie anonimowe reprezentuja pamiec, ktora nie jest obslugiwana przez system plikow.
  201. Takie mapowania sa tworzone niejawnie dla stosu i sterty programu przez jawne wywolanie wywolania systemowego
  202. mmap."
  203.  
  204. pmap -X $(pidof stress -s)| grep --color -E "stack|heap|$"
  205.    
  206.  
  207. 4.1.1.12. Jaki rozmiar zajmuja wszystkie strony procesu a jaki wszystkie przydzielone dla procesu ramki oraz kiedy strona jest ladowana do ramki?  - wymagane wskazanie odpowiednich wartosci w listingach
  208. #ILOSC TERMINALI: 2
  209.     2:
  210.     echo bfq > /sys/block/sda/queue/scheduler
  211.     time perf sched record ionice -c 1 -n 0 stress -i 1 -t 240
  212.  
  213.     1:
  214.     echo -e "
  215. \033[0;32m-------------------------------------------------------[4.1.1.12]-----------------------------------------------------------------------------\033[0m
  216. \033[0;32mVSZ\033[0m - rozmiar stron [KiB]
  217. rozmiar wszystkich przydzielonych dla procesu stron (w KiB) (cała pamięć, do której proces ma dostęp, czyli
  218. pamięć wymieciona + pamięć zaalokowana + pamięć bibliotek współdzielonych + pamięć plików wykonywalnych)
  219.  
  220. \033[0;32mRSZ\033[0m - rozmiar ramek [KB]
  221. rozmiar wszystkich przydzielonych dla procesu ramek z jego stronami (w KB) (nie uwzględnia SWAP, ale
  222. uwzględnia pamięć bibliotek współdzielonych, czyli pokazuje tylko stan aktualny ramek w pamięci fizycznej)
  223.  
  224. \033[0;32mStrona jest ladowana do ramki\033[0m (czyli fizycznej strony pamieci) w momencie, gdy proces potrzebuje dostepu do danego obszaru pamieci wirtualnej,
  225. ktory nie jest obecnie obecny w pamieci fizycznej.\n
  226.  
  227. \033[0;32mnie kazda\033[0m strona jest przechowywana w ramce tego procesu\n
  228. gdy proces odwoluje sie do strony pamieci ktorej nie ma w zadnej z jego ramek \033[0;32mwystapi blad strony\033[0m
  229. \033[0;32mkolejnosc odszukiwania strony\033[0m - poza zbiorem roboczym, (gdy wystapi \033[0;32mblad strony\033[0m):
  230. \033[0;32m1.\033[0m swap cache - jesli znajdzie to blad poboczny, aktualizacja zbioru roboczego, pozniej tablicy
  231. stron
  232. \033[0;32m2.\033[0m przestrzeni wymiany swap
  233. \033[0;32m3.\033[0m plik regularny tego programu lub biblioteki
  234.  
  235. \033[0;32mStrona jest ladowana do ramki\033[0m w momencie, gdy program probuje uzyskac dostep do tej strony.
  236.  
  237. To co proces ma w segmentach to jego pamięć wirtualna, każdy segment jest podzielony na strony. Te ze stron, które są
  238. załadowane do ramek to jego rzeczywista fizyczna pamięć ulotna. Strony, które nie są w ramkach, znajdują się w
  239. plikach regularnych programu lub bibliotekach, wykorzystywanych przez proces. Strona. która jest niepotrzebna dla
  240. procesu zmienia oznaczenie na nieaktywną i jej właścicielem zostaje swap cache."
  241.  
  242.     ps -o pid,vsz,rsz $(pidof stress -s) | grep --color -E "VSZ|RSZ|$"
  243.  
  244.  
  245.  
  246. 4.1.1.20. Jezeli plik zawierajacy program/biblioteke ELF zostanie usuniety, to skad system operacyjny bedzie doczytywal potrzebne strony, jaki jest zwiazek pomiedzy niezwolnionymi blokami systemu plikow a stronami? - omowienie statystyk wezlow i blokow systemu plikow, aby stwierdzic czy po usunieciu pliku zostaly one zwolnione wraz z usunietym wpisem katalogowym.
  247. #ILOSC TERMINALI: 2
  248.     2:
  249.     cp /usr/bin/stress /home/tytus/stress
  250.     /home/tytus/stress -c 1
  251.  
  252.     1:
  253.     echo -e "
  254. \033[0;32m-------------------------------------------------------[4.1.1.20]-----------------------------------------------------------------------------\033[0m
  255.    Jezeli plik zawierajacy program/biblioteke ELF zostanie usuniety, to system operacyjny \033[0;32mbedzie doczytywal potrzebne strony Ze swap cache\033[0m
  256.    jezeli nie ma potrzebnej strony w swapcache i strona nie jest wczytana do ramki to z swap.
  257.    
  258.    Zostanie usuniety jedynie wpis katalogowy - \033[0;32mnie zostana zwolnione\033[0m zadne bloki ani wezel zwiazany z tym plikiem
  259.    Bloki nie zostaly zwolnione poniewaz proces korzysta ze wczytanych wczesniej stron programu/biblioteki.
  260.  
  261.    \033[0;32mBloki te blokuje\033[0m mechanizm pamieci wirtualnej, zeby moc doczytac
  262.  
  263.    Bloki i wezel \033[0;32mzostana zwolnione\033[0m, gdy wszystkie procesy korzystajace z tego pliku zostana zakonczone
  264.    Wynika z tego, ze nie każde usunięcie plików w systemie plików spowoduje zwolnienie miejsca,
  265.  
  266.    Niezwolnione bloki systemu plikow to dane przechowywane na dysku, podczas gdy strony w
  267.    pamieci operacyjnej sa ich buforowanymi wersjami w pamieci RAM, co umozliwia szybszy
  268.    dostep do tych danych podczas operacji odczytu i zapisu
  269.  
  270.     \033[0;32mPo usunieciu\033[0m pliku z programem strona znajduje sie w bloku
  271.  
  272.     Blok ma taki sam rozmiar jak strona, przez co \033[0;32mmoze byc odczytywany jako strona\033[0m
  273.    
  274.     Strone jako blok odczytuje \033[0;32mmechanizm pamieci wirtualnej\033[0m"
  275.  
  276.     #TO MUSI BYC ZROBIONE W TRAKCIE TRWANIA PROCESU STRESS (UPEWNIC SIE, ZE DZIALA ^^^)
  277.     stat -f /home/tytus | grep --color -E "wolnych:|$"
  278.     ls /home/tytus
  279.     rm /home/tytus/stress -f
  280.     stat -f /home/tytus | grep --color -E "wolnych:|$"
  281.     ls /home/tytus
  282.     killall stress
  283.     #TUTAJ BEDZIE WIECEJ WOLNYCH:
  284.     stat -f /home/tytus | grep --color -E "wolnych:|$"
  285. 4.1.1.21. Z jakiego obszaru pamieci ulotnej wybierane sa niepuste ramki i jakie kryteria musi spelniac ramka wybrana przez algorytm wymiany? - analiza wynikow freew dotyczaca roznicy w wartosciach pomiedzy kolumna free i available w wierszu mem.
  286. #ILOSC TERMINALI: 1
  287.     1:
  288.     echo -e "
  289. \033[0;32m-------------------------------------------------------[4.1.1.21]-----------------------------------------------------------------------------\033[0m
  290.     \033[0;32mBierze z swap cache\033[0m
  291.  
  292.     \033[0;32mAlgorytm wymiany\033[0m (algorytm zastępowania stron)  bedzie wybieral przede wszystkim ramki ze stronami niekatywnymi,
  293.    a w szczegolnosci zawierajace strony niezabrudzone i nieanonimowe (czyli ramki które mogą być natychmiastowo wykorzystane).
  294.  
  295.     \033[0;32mMEM free\033[0m - rozmiar wolnej pamięci fizycznej ulotnej (rozmiar wolnych ramek), ale bez ramek z przestrzeni swap-cache
  296.     \033[0;32mMEM available\033[0m - wartość free + ramki ze swap cache zawierające niezabrudzone i nieanonimowe strony (możliwe,
  297.    że jeszcze + ramki z buforów zawierające niezabrudzone strony)
  298.  
  299.    \033[0;32mStrony nieaktywne\033[0m - nie byly ostatnio uzywane (nie bylo do nich w ostatnim czasie odwołań)
  300.  
  301.    \033[0;32mStrony niezabrudzone\033[0m - ich zawartosc nie zmienila sie od momentu wczytania ich do ramki
  302.  
  303.    \033[0;32mstrony nieanonimowe\033[0m - strony ktorych zawartosc zostala wczytana z pliku regularnego z programem lub biblioteka
  304.  
  305.    fakt ze ramka z ta strona nalezy do swap cache oznacza, ze \033[0;32mstrona jest nieaktywna\033[0m
  306.    
  307.    Ramki zawierajace strony niezabrudzone i nieanonimowe moga byc natychmiastowo wykorzystane
  308.    
  309.    Jeśli ramka w swap cache zawiera stronę \033[0;32mzabrudzoną\033[0m lub \033[0;32manonimową\033[0m, to nie możemy załadować do niej strony,
  310.    ponieważ nadpisalibyśmy dane. Dlatego takie strony są utwrwalane w przestrzeni wymiany. Będą to np. strony
  311.    zawierające ramkę tekstu, ponieważ ramka tekstu zawiera kod programu, więc nie może zostać zmieniona.
  312.    
  313.    Za wczytywanie stron do ramek odpowiada system operacyjny
  314.    
  315.    Jeżeli wartość available jest niska to zachodzi procedura OOM (Out Of Memory)"
  316.  
  317.     free -wh | grep --color -E "free|available|$"
  318.  
  319. 4.1.1.24. Jakie zasoby systemowe trzeba monitorowac i jakie dzialania mozna podjac aby procedura OOM nie byla zastosowana? - wymagane zaprezentowanie odpowiednich wartosci w listingach.
  320. #ILOSC TERMINALI: 1
  321.     1:
  322.     echo -e "
  323. \033[0;32m-------------------------------------------------------[4.1.1.24]-----------------------------------------------------------------------------\033[0m
  324.    Należy regularnie kontrolować stan dostępnej pamięci operacyjnej (mem \033[0;32mused\033[0m i \033[0;32mavailable\033[0m) oraz ile mamy wykorzystanej
  325.    pamięci swap (ilosc wolnych ramek w pamieci, zajetosc przestrzeni wymiany swap)
  326.  
  327.    Jeśli posiadamy mało wolnej ulotnej pamięci fizycznej (available) oraz mało wolnej pamięci przestrzeni wymiany (free),
  328.    możemy spodziewać się podjęcia przez system operacyjny odpowiednich kroków
  329.    
  330.    \033[0;32mW przypadku presji pamieci\033[0m (kiedy brakuje ramek) system stosuje:
  331.    \033[0;32m1.\033[0m wymiatanie stron.
  332.    \033[0;32m2.\033[0m redukcja zbioru roboczego procesu - odebranie czesci przydzielonych procesom ramek
  333.    \033[0;32m3.\033[0m procedura OOM (Out of Memory) - wybierane sa procesy, ktore zostana natychmiast zakonczone
  334.    
  335.    Aby procedura OOM nie była zastosowana możemy:
  336.    \033[0;32m- powiekszyc przestrzen wymiany\033[0m poprzez dodanie pliku wymiany (ale tylko w Linuxie, w Windowsie nie można, bo trzeba by było restartować system
  337.    \033[0;32m- zakonczyc procesy\033[0m, które są nam już niepotrzebne, dzięki czemu będziemy mieli kontrolę nad procesami, które zostaną zamknięte
  338.    \033[0;32m- zapisać stan procesów\033[0m na dysku.
  339.    
  340.    Dlatego też instalowanie systemu bez przestrzeni wymiany swap jest złym pomysłem, ponieważ bez magazynów stron
  341.    przyspierzymy wystąpienie procedury OOM.
  342. "
  343.  
  344.     free -wh | grep --color -E "free|used|$"
  345.  
  346. /////////////////////////////////////////////////////////////KONIEC LISTINGOW/////////////////////////////////////////////////////////////////////////////////////////////////////
  347. Z tego co widze to dodatkowe:
  348.  
  349. Blad poboczny wystepeuje gdy strona przechowyana jest w ramce(np. w swap cache) jednak nie wystepuje w zbiorze roboczym, wtedy wymagana jest aktualizacja tablicy stron
  350.  
  351. Blad glowny wymaga zaladowania strony do ramki(np z programu, biblioteki lub sprowadzenia z przestrzeni wymiany swap).
  352.  
  353. Wyswietlanie informacji o biezacych priorytetach I/O dla procesow:
  354. ionice -p <pid>
  355.  
  356. Zmiana algorytmu windy dla dysku:
  357. echo bfq > /sys/block/sda/queue/scheduler
  358.  
  359. ionice -c 1 -n 0
  360. -c 1 (Realtime) to klasa o najwyzszym priorytecie I/O w systemie
  361. Priorytet 0 to najwyzszy priorytet dla ionice -c 1, zakres (0-7)
  362.  
  363. Algorytmy windy:
  364. Algorytm BFQ dazy do uczciwego podzialu zasobow dyskowych miedzy procesy. Przydziela czas dostepu do dysku kazdemu procesowi w proporcji do jego budzetu. Priorytet I/O: Procesy o wyzszym priorytecie I/O maja wieksze szanse na otrzymanie wiekszego budzetu
  365. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement