Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #README
- #KOREKTA 17.06.2024 (OSTATNIE SYSOPY PRZED SESJA)
- 4.1.1.4 Autoliczenie teraz dziala, ale jesli pokazywaloby mniej niz 50%, nalezy wykonac ponownie
- (ewentualnie bez komendy echo bfq > /sys/block/sda/queue/scheduler)
- #KOREKTA 13.05.2024 16:33
- 4.1.1.7 (2) Zmiany opisowe
- #KOREKTA 13.05.2024 16:29
- 4.1.1.20 Zmiany opisowe
- #KOREKTA 13.05.2024 15:49
- 4.1.1.7 (2) Zmiany opisowe
- 4.1.1.10 HEAP I STACK BYLY NADAL ZAMIENIONE!!!!!!!!!!!!!!!!!!!!!!!
- #ZAKTUALIZOWANE 13.05.2024 PRZED ODPOWIEDZIA
- #!!!!!!!!!!!!!!!WIELOLINIJKOWE ECHO WKLEJAC NARAZ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- #WSZYSTKO WYKONYWAC JAKO ROOT
- #KOMENDY ZE SREDNIKAMI NA KONCU POWINNY BYC WRZUCANE NARAZ
- #PRZED KAZDYM ZADANIEM JEST PODANA ILOSC WYMAGANYCH TERMINALI
- #KAZDY TERMINAL MA PRZYPISANA CYFRE np. 1:
- #Z REGULY TERMINAL 1 JEST DO LISTINGOW A TERMINAL 2 JEST ROBoCZY
- #ZALECA SIE ROBIC KAZDY PODPUNKT W ODDZIELNYM TERMINALU (latwiej clearowac), A TERMINAL ROBOCZY (2) MIEC JEDEN DLA WSZYSTKICH
- /////////////////////////////////////////////////////////////KONIEC LISTINGOW/////////////////////////////////////////////////////////////////////////////////////////////////////
- 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?
- #ILOSC TERMINALI: 2
- 1:
- echo -e "
- \033[0;32m-------------------------------------------------------[4.1.1.4]-----------------------------------------------------------------------------\033[0m
- \033[0;32mPozwala okreslic w jaki sposob usprawnic realizacje zadan przez proces\033[0m
- dodatkowo pozwala okreslic w jakim stanie spedza wiekszosc czasu cyklu zycia.
- \033[0;32mOgraniczone procesorem\033[0m - spedzaja wiekszosc czasu w stanie wykonywanym.
- \033[0;32mOgranioczone wejsciem-wyjsicem\033[0m - spedzaja wiekszosc czasu w stanie zablokowanym
- \033[0;32mStan zablokowany\033[0m - oczekuje na pozostale zasoby systemowe oprocz stron pamieci
- \033[0;32m
- zeby wiedziec jak usprawnic realizacje zadania/zadan przez proces. Dla procesow
- ograniczonych procesorem mozemy zwiekszyc przydzial jednostek przetwarzajacych, a w
- procesach ograniczonych wejsciem wyjsciem mozna poprawic warunki realizacji operacji
- dyskowych.
- \033[0m
- Jezeli proces zglasza operacje dyskowe to mozemy poprawic warunki realizacji operacji
- dyskowych.
- Nie kazda operacje wejscia wyjscia mozna usprawnic, ale operacje dyskowe akurat mozna.
- \033[0;32mOperacje dyskowe wejscia wyjscia\033[0m to odczyt i zapis
- proces moze przebywac w stanie \033[0;32mzablokowanym, wykonywanym i gotowym do wykonania\033[0m
- \033[0;32mReal\033[0m – calkowity czas istnienia procesu – czas cyklu zycia procesu
- \033[0;32mRuntime\033[0m – czas przebywania procesu w stanie wykonywanym (Wirtualny czas zycia procesu)
- \033[0;32mswitches*avg delay\033[0m – czas przebywania procesu w stanie gotowym do wykonania
- \033[0;32mswitches\033[0m – przelaczenia kontekstu, w ktorych ten proces uczestniczyl
- \033[0;32mavg delay\033[0m – sredni czas oczekiwania na przydzial jednostki przetwarzajacej
- "
- 2:
- echo bfq > /sys/block/sda/queue/scheduler
- variable=""$({ time perf sched record timeout 20 dd if=/dev/sda of=/dev/null bs=512K >/dev/null; } 2>&1 | grep real)""
- echo $variable
- 1:
- cat /proc/$(pidof dd -s)/status | grep Threads
- ps -o pid,etime,cputime,%cpu $(pidof dd -s)
- pmap -x $(pidof dd -s)
- pmap -X $(pidof dd -s) | grep --color -E "stack|heap|$"
- echo -e "\033[0;32mVSZ\033[0m - rozmiar stron\n \033[0;32mRSZ\033[0m - rozmiar ramek"
- ps -o pid,vsz,rsz $(pidof dd -s)
- cat /proc/$(pidof dd -s)/status | grep Threads
- 2:
- #PO ZAKONCZENIU PROCESU W TERMINALU 1 (10s)
- perf sched latency -p | grep -e "Task" -e "dd"
- #tu wszystko WKLEJAC RAZEM az do komentarza KONIEC
- real=${variable#*0m};
- real=${real%%s*};
- real=$(tr ',' '.' <<<"$real");
- real=$(echo "scale=2; ($real * 1000)" | bc);
- variable="$( perf sched latency -p | grep -e "dd")";
- runtime=${variable#*|};
- runtime=${runtime%%ms*};
- variable="$( perf sched latency -p | grep -e "dd")";
- avg=${variable#*avg:};
- avg=${avg%%ms*};
- variable="$( perf sched latency -p | grep -e "dd")";
- switches=${variable#*ms |};
- switches=${switches%% |*};
- lockedTime=$(echo "scale=2; $real - $runtime - ($switches * $avg)" | bc);
- lockedPercentage=$(echo "scale=2; $lockedTime / $real * 100" | bc);
- echo -e "
- Czas w stanie zablkowanym = real - runtime - (switches * avg)
- Procent w czasie zablokowanym = Czas w stanie zablokowanym / real * 100%
- runtime[ms]: $runtime ms
- avg delay[ms]: $avg ms
- switches: $switches
- real[s]: $real ms
- Czas w stanie zablokowanym: $lockedTime ms
- Procent w stanie zablokowanym: \033[0;32m$lockedPercentage\033[0m %
- \033[0;32m$lockedPercentage\033[0m % > 50 %, wiec proces jest ograniczony wejsciem-wyjsciem
- ";
- #KONIEC
- 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
- #ILOSC TERMINALI: 1
- 1:
- echo -e "
- \033[0;32m-------------------------------------------------------[4.1.1.5]-----------------------------------------------------------------------------\033[0m
- \033[0;32mCykl zycia procesu\033[0m to calkowity czas przez jaki istnial proces (\033[0;32mreal\033[0m)
- \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)"
- echo bfq > /sys/block/sda/queue/scheduler
- time perf sched record ionice -c 1 -n 0 stress -i 1 -t 3
- perf sched latency -p | grep -e "Task" -e "stress"
- 4.1.1.6 Co reprezentuje wartosc %cpu dla procesu jednowatkowego? - dla jakiego procesu wartosc %cpu moze przekroczyc 100%?
- #ILOSC TERMINALI: 2
- 1:
- echo -e "
- \033[0;32m-------------------------------------------------------[4.1.1.6]-----------------------------------------------------------------------------\033[0m
- 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)
- Ta wartosc reprezentuje czas przetwarzania podzielony przez czas zycia procesu.
- \033[0;32mstosunek wirtualnego czasu zycia procesu do jego rzeczywistego czasu zycia procesu \033[0m (runtime/real)
- \033[0;32mReal\033[0m – calkowity czas istnienia procesu – czas cyklu zycia procesu
- \033[0;32mRuntime\033[0m – czas przebywania procesu w stanie wykonywanym
- \033[0;32mMoze przekroczyc 100%\033[0m Dla procesu posiadajacego wiele watkow, ktore wiekszosc czasu spedzaja w stanie wykonywanym
- czyli
- jesli sumaryczny czas przetwarzania zadan przez watki jest wiekszy niz czas cyklu zycia procesu."
- #WIELOWATKOWY
- 2:
- sysbench --test=cpu --threads=2 --time=70 run
- 1:
- echo -e "\033[0;32mWieloowatkowy\033[0m"
- cat /proc/$(pidof sysbench -s)/status | grep Threads
- 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|$"
- #JEDNOWATKOWY
- 2:
- echo bfq > /sys/block/sda/queue/scheduler
- time perf sched record dd if=/dev/sda of=/dev/null
- #sysbench --test=cpu --threads=1 --time=70 run
- 1:
- echo -e "\033[0;32mJednowatkowy\033[0m";
- echo -e "Dla procesu jednowatkowego \033[0;32mnie moze przekroczyc 100%\033[0m";
- cat /proc/$(pidof dd -s)/status | grep Threads;
- #PO CHWILI PRZERWAC DD ZA POMOCA CTRL + C (raz)
- 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|$"
- 4.1.1.7 (1). Co reprezentuje wartosc %mem dla procesu? - wymagane wykazanie w listingach wartosci, na bazie ktorych %mem jest wyliczany
- #ILOSC TERMINALI: 2
- 1:
- echo -e "
- \033[0;32m-------------------------------------------------------[4.1.1.7 (1)]-----------------------------------------------------------------------------\033[0m
- \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
- \033[0;32m%MEM\033[0m = RSZ / MEM total * 100%
- \033[0;32mRSS\033[0m (\033[0;32mRSZ\033[0m) - ZBIOR ROBOCZY (working set), zbior ramek dla procesu, tworzy obszar roboczy
- \033[0;32mtotal\033[0m - fizyczna pamiec ulotna maszyny
- \033[0;32mTablica stron\033[0m - zawiera uzywane przez proces \033[0;32mramki ze stronami\033[0m, jest nieciagla i hierarchiczna
- \033[0;32mobszar roboczy\033[0m - zbior ramek
- \033[0;32mlsmem\033[0m - pokazuje calkowita pamiec ulotna fizyczna maszyny
- \033[0;32mfree\033[0m - pokazuje dostepna (uzyteczna) pamiec ulotna [pamiec fizyczna - kernel - zarezerwowana przez system]"
- 2:
- stress -m 1 -t 60
- 1:
- lsmem | grep --color -E "Total online memory:|$"
- ps -o pid,%mem,rsz "$(pidof stress -s)" | grep --color -E " %MEM|total|$" ; free -h | grep --color -E "total|$"
- 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?
- - wymagane zaprezentowania odpowiednich wartosci dla segmentu danych i tekstu w listingu z mapa pamieci procesu jednowatkowego.
- #ILOSC TERMINALI: 2
- 1:
- echo -e "
- \033[0;32m-------------------------------------------------------[4.1.1.7 (2)]-----------------------------------------------------------------------------\033[0m
- \033[0;32mNie wszystkie\033[0m, czesc kodu i danych wczytywana jest z segmentow anonimowych.
- \033[0;32mr-x\033[0m - zawiera text
- Dane:
- \033[0;32mrw-\033[0m - zawiera zmienna
- \033[0;32mr--\033[0m - zawiera stala
- 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
- czyli \033[0;32mrozmiar stron jest wiekszy od rozmiaru ramek\033[0m
- Ramki znajduja sie w \033[0;32mzbiorze roboczym (zbiorze ramek)\033[0m
- "
- 2:
- echo bfq > /sys/block/sda/queue/scheduler
- time perf sched record ionice -c 1 -n 0 stress -i 1 -t 240
- 1:
- #POKAZUJESZ DOWOLNY SEGMENT (KOLOREM JEST PRZYKLADOWY ZAZNACZONY) TEKSTU LUB DANYCH I ZAZNACZASZ, ZE "Kbytes" JEST WIEKSZE OD "RSS"
- pmap -x $(pidof stress -s)| grep --color -E "Kbytes|RSS|r-x-- libc.so.6|$";
- 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.
- #ILOSC TERMINALI: 2
- 2:
- echo bfq > /sys/block/sda/queue/scheduler
- time perf sched record ionice -c 1 -n 0 stress -i 1 -t 240
- 1:
- echo -e "
- \033[0;32m-------------------------------------------------------[4.1.1.10]-----------------------------------------------------------------------------\033[0m
- [\033[0;32mstack\033[0m] - stos (Segment z mapowaniem [ stack ])
- [\033[0;32mheap\033[0m] - sterta(Segment z mapowaniem [ heap])
- tak, \033[0;32moba sa anoniowe\033[0m, poniewaz ich zawartosc zostala wytworzona przez proces, a nie wczytana z pliku.
- \033[0;32mSterta\033[0m zawiera dane wytworzone przez proces np. zmienne lokalne, jest dynamicznie przyznawana procesowi.
- Zawartosc segmentu procesu \033[0;32mmoze pochodzic z biblioteki\033[0m.
- \033[0;32mPamiec anonimowa\033[0m lub mapowanie anonimowe reprezentuja pamiec, ktora nie jest obslugiwana przez system plikow.
- Takie mapowania sa tworzone niejawnie dla stosu i sterty programu przez jawne wywolanie wywolania systemowego
- mmap."
- pmap -X $(pidof stress -s)| grep --color -E "stack|heap|$"
- 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
- #ILOSC TERMINALI: 2
- 2:
- echo bfq > /sys/block/sda/queue/scheduler
- time perf sched record ionice -c 1 -n 0 stress -i 1 -t 240
- 1:
- echo -e "
- \033[0;32m-------------------------------------------------------[4.1.1.12]-----------------------------------------------------------------------------\033[0m
- \033[0;32mVSZ\033[0m - rozmiar stron [KiB]
- rozmiar wszystkich przydzielonych dla procesu stron (w KiB) (cała pamięć, do której proces ma dostęp, czyli
- pamięć wymieciona + pamięć zaalokowana + pamięć bibliotek współdzielonych + pamięć plików wykonywalnych)
- \033[0;32mRSZ\033[0m - rozmiar ramek [KB]
- rozmiar wszystkich przydzielonych dla procesu ramek z jego stronami (w KB) (nie uwzględnia SWAP, ale
- uwzględnia pamięć bibliotek współdzielonych, czyli pokazuje tylko stan aktualny ramek w pamięci fizycznej)
- \033[0;32mStrona jest ladowana do ramki\033[0m (czyli fizycznej strony pamieci) w momencie, gdy proces potrzebuje dostepu do danego obszaru pamieci wirtualnej,
- ktory nie jest obecnie obecny w pamieci fizycznej.\n
- \033[0;32mnie kazda\033[0m strona jest przechowywana w ramce tego procesu\n
- gdy proces odwoluje sie do strony pamieci ktorej nie ma w zadnej z jego ramek \033[0;32mwystapi blad strony\033[0m
- \033[0;32mkolejnosc odszukiwania strony\033[0m - poza zbiorem roboczym, (gdy wystapi \033[0;32mblad strony\033[0m):
- \033[0;32m1.\033[0m swap cache - jesli znajdzie to blad poboczny, aktualizacja zbioru roboczego, pozniej tablicy
- stron
- \033[0;32m2.\033[0m przestrzeni wymiany swap
- \033[0;32m3.\033[0m plik regularny tego programu lub biblioteki
- \033[0;32mStrona jest ladowana do ramki\033[0m w momencie, gdy program probuje uzyskac dostep do tej strony.
- To co proces ma w segmentach to jego pamięć wirtualna, każdy segment jest podzielony na strony. Te ze stron, które są
- załadowane do ramek to jego rzeczywista fizyczna pamięć ulotna. Strony, które nie są w ramkach, znajdują się w
- plikach regularnych programu lub bibliotekach, wykorzystywanych przez proces. Strona. która jest niepotrzebna dla
- procesu zmienia oznaczenie na nieaktywną i jej właścicielem zostaje swap cache."
- ps -o pid,vsz,rsz $(pidof stress -s) | grep --color -E "VSZ|RSZ|$"
- 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.
- #ILOSC TERMINALI: 2
- 2:
- cp /usr/bin/stress /home/tytus/stress
- /home/tytus/stress -c 1
- 1:
- echo -e "
- \033[0;32m-------------------------------------------------------[4.1.1.20]-----------------------------------------------------------------------------\033[0m
- Jezeli plik zawierajacy program/biblioteke ELF zostanie usuniety, to system operacyjny \033[0;32mbedzie doczytywal potrzebne strony Ze swap cache\033[0m
- jezeli nie ma potrzebnej strony w swapcache i strona nie jest wczytana do ramki to z swap.
- Zostanie usuniety jedynie wpis katalogowy - \033[0;32mnie zostana zwolnione\033[0m zadne bloki ani wezel zwiazany z tym plikiem
- Bloki nie zostaly zwolnione poniewaz proces korzysta ze wczytanych wczesniej stron programu/biblioteki.
- \033[0;32mBloki te blokuje\033[0m mechanizm pamieci wirtualnej, zeby moc doczytac
- Bloki i wezel \033[0;32mzostana zwolnione\033[0m, gdy wszystkie procesy korzystajace z tego pliku zostana zakonczone
- Wynika z tego, ze nie każde usunięcie plików w systemie plików spowoduje zwolnienie miejsca,
- Niezwolnione bloki systemu plikow to dane przechowywane na dysku, podczas gdy strony w
- pamieci operacyjnej sa ich buforowanymi wersjami w pamieci RAM, co umozliwia szybszy
- dostep do tych danych podczas operacji odczytu i zapisu
- \033[0;32mPo usunieciu\033[0m pliku z programem strona znajduje sie w bloku
- Blok ma taki sam rozmiar jak strona, przez co \033[0;32mmoze byc odczytywany jako strona\033[0m
- Strone jako blok odczytuje \033[0;32mmechanizm pamieci wirtualnej\033[0m"
- #TO MUSI BYC ZROBIONE W TRAKCIE TRWANIA PROCESU STRESS (UPEWNIC SIE, ZE DZIALA ^^^)
- stat -f /home/tytus | grep --color -E "wolnych:|$"
- ls /home/tytus
- rm /home/tytus/stress -f
- stat -f /home/tytus | grep --color -E "wolnych:|$"
- ls /home/tytus
- killall stress
- #TUTAJ BEDZIE WIECEJ WOLNYCH:
- stat -f /home/tytus | grep --color -E "wolnych:|$"
- 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 free –w dotyczaca roznicy w wartosciach pomiedzy kolumna free i available w wierszu mem.
- #ILOSC TERMINALI: 1
- 1:
- echo -e "
- \033[0;32m-------------------------------------------------------[4.1.1.21]-----------------------------------------------------------------------------\033[0m
- \033[0;32mBierze z swap cache\033[0m
- \033[0;32mAlgorytm wymiany\033[0m (algorytm zastępowania stron) bedzie wybieral przede wszystkim ramki ze stronami niekatywnymi,
- a w szczegolnosci zawierajace strony niezabrudzone i nieanonimowe (czyli ramki które mogą być natychmiastowo wykorzystane).
- \033[0;32mMEM free\033[0m - rozmiar wolnej pamięci fizycznej ulotnej (rozmiar wolnych ramek), ale bez ramek z przestrzeni swap-cache
- \033[0;32mMEM available\033[0m - wartość free + ramki ze swap cache zawierające niezabrudzone i nieanonimowe strony (możliwe,
- że jeszcze + ramki z buforów zawierające niezabrudzone strony)
- \033[0;32mStrony nieaktywne\033[0m - nie byly ostatnio uzywane (nie bylo do nich w ostatnim czasie odwołań)
- \033[0;32mStrony niezabrudzone\033[0m - ich zawartosc nie zmienila sie od momentu wczytania ich do ramki
- \033[0;32mstrony nieanonimowe\033[0m - strony ktorych zawartosc zostala wczytana z pliku regularnego z programem lub biblioteka
- fakt ze ramka z ta strona nalezy do swap cache oznacza, ze \033[0;32mstrona jest nieaktywna\033[0m
- Ramki zawierajace strony niezabrudzone i nieanonimowe moga byc natychmiastowo wykorzystane
- 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,
- ponieważ nadpisalibyśmy dane. Dlatego takie strony są utwrwalane w przestrzeni wymiany. Będą to np. strony
- zawierające ramkę tekstu, ponieważ ramka tekstu zawiera kod programu, więc nie może zostać zmieniona.
- Za wczytywanie stron do ramek odpowiada system operacyjny
- Jeżeli wartość available jest niska to zachodzi procedura OOM (Out Of Memory)"
- free -wh | grep --color -E "free|available|$"
- 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.
- #ILOSC TERMINALI: 1
- 1:
- echo -e "
- \033[0;32m-------------------------------------------------------[4.1.1.24]-----------------------------------------------------------------------------\033[0m
- 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
- pamięci swap (ilosc wolnych ramek w pamieci, zajetosc przestrzeni wymiany swap)
- Jeśli posiadamy mało wolnej ulotnej pamięci fizycznej (available) oraz mało wolnej pamięci przestrzeni wymiany (free),
- możemy spodziewać się podjęcia przez system operacyjny odpowiednich kroków
- \033[0;32mW przypadku presji pamieci\033[0m (kiedy brakuje ramek) system stosuje:
- \033[0;32m1.\033[0m wymiatanie stron.
- \033[0;32m2.\033[0m redukcja zbioru roboczego procesu - odebranie czesci przydzielonych procesom ramek
- \033[0;32m3.\033[0m procedura OOM (Out of Memory) - wybierane sa procesy, ktore zostana natychmiast zakonczone
- Aby procedura OOM nie była zastosowana możemy:
- \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
- \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
- \033[0;32m- zapisać stan procesów\033[0m na dysku.
- Dlatego też instalowanie systemu bez przestrzeni wymiany swap jest złym pomysłem, ponieważ bez magazynów stron
- przyspierzymy wystąpienie procedury OOM.
- \033[0;32mfree\033[0m - rozmiar wolnej pamieci ulotnej(operacyjnej) ale bez ramek z przestrzeni swap cache (NIE UZYWANA PRZEZ ZADEN URUCHOMIONY PROCES,
- GOTOWA DO ALOKACJI DLA NOWEGO PROCESU)
- \033[0;32mAvailable\033[0m - rozmiar wolnych ramek wraz z ramkami z swap-cache, ktore zawieraja niezabrudzone i nieanonimowe strony
- pokaze wartosc free(mem)(rozmiar wolnych ramek) + ramki ze swap cache NIEZABRUDZONE I NIEANONIMOWE strony + z buforow te zabrudzone
- SZACUJE ILOSC PAMIECI MOZLIWA DO PRZYDZIELENIA NOWEMU PROCESOWI, BIERZE POD UWAGE BUFORY I CACHE, KTORE MOGA ZOSTAC ZWOLNIONE PRZEZ INNE PROCESY W RAZIE POTRZEBY
- "
- free -wh | grep --color -E "free|used|$"
- /////////////////////////////////////////////////////////////KONIEC LISTINGOW/////////////////////////////////////////////////////////////////////////////////////////////////////
- Z tego co widze to dodatkowe:
- 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
- Blad glowny wymaga zaladowania strony do ramki(np z programu, biblioteki lub sprowadzenia z przestrzeni wymiany swap).
- Wyswietlanie informacji o biezacych priorytetach I/O dla procesow:
- ionice -p <pid>
- Zmiana algorytmu windy dla dysku:
- echo bfq > /sys/block/sda/queue/scheduler
- ionice -c 1 -n 0
- -c 1 (Realtime) to klasa o najwyzszym priorytecie I/O w systemie
- Priorytet 0 to najwyzszy priorytet dla ionice -c 1, zakres (0-7)
- Algorytmy windy:
- 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
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement