Advertisement
pan7nikt

zad_4_odp_full_DLC_EXPANSION_V2_autoliczenie

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