Advertisement
pan7nikt

zad_4_odp_full_DLC_EXPANSION_V2_autoliczenie

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