Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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.
- \033m Bedy glowne maj_flt blad glowny strona nie należy do zadnej ramki
- \033
- \033m Blad poboczny min_flt poboczny należy do ramki ale nie należy do obszaru roboczego procesu
- co to obszar roboczy - zbior ramek\033
- "
- echo bfq > /sys/block/sda/queue/scheduler
- time perf sched record ionice -c 1 -n 0 stress -i 1 -t 240
- ps -o pid,cmd,maj_flt,min_flt $(pidof stress)
- ps -o pid,vsz,rsz $(pidof stress -s) | grep --color -E "VSZ|RSZ|$"
- 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|$"
- 1:
- echo -e "\033[0;32m-------------------------------------------------------[4.1.2.21]-----------------------------------------------------------------------------\033[0m"
- 2:
- lscpu
- numactl --cpunodebind=2 --membind=2 leafpad
- 1:
- pidof leafpad
- ps -o pid,nlwp -p $(pidof leafpad)
- numastat -p $(pidof leafpad)
- numactl -H
- taskset -c -a -p $(pidof leafpad)
- #uma - zasoby nie dziela się na wezly
- #numa - zasoby dziela się na wezly zawierające pewny obszar pamięci operacyjnej i jednostki przetwarzające. Jest to korzystniejsze ponieważ przetwarzanie w ramach jednego wezla jest szybsze
- echo -e "Maska przypisana zgadza się z przypisanymi CPU do tego węzła (6-9) – widać, że nastąpiło ograniczenia zasobów
- \033[0;32mNUMA\033[0m to architektura komputerów charakteryzująca się podziałem na węzły, które dysponują jednostkami przetwarzającymi i
- ciągła przestrzenią pamięci ulotnej RAM
- *Obowiązująca polityka NUMA oraz reguły koligacji są zawsze nadrzędne do ustalonej polityki szeregowania*
- \033[0;32mNUMA > koligacja > priorytet statyczny > polityka szeregowania > priorytet zewnętrzny nice\033[0m
- \033[0;32m#P\033[0m Co jeżeli reguły koligacji mówią że proces może korzystać z drugiego CPU a należy do węzła NUMA który nie zawiera tej
- jednostki przetwarzającej?
- - nie dostanie wtedy przydziału jednostki przetwarzającej ponieważ NUMA jest nadrzędna
- NUMASTAT
- - Huge - zakres dużych stron (mogą zajmować 2MiB)
- - Heap - sterta
- - Stack - stos
- - Private - strony anonimowe (segment składa się ze stron)
- Tablica TLB - przechowywane są ostatnio transformowane adresy stron z logicznych na fizyczne gdy odwołamy się do adresu
- strony której nie ma zostanie ona przetransformowane.
- Tablica stron - Zawiera numery ramek odpowiadające numerom stron
- \033[0;32m#P\033[0m Skąd wiadomo, że ten proces korzystał z pamięci ulotnej, zlokalizowanej w tym ostatnim węźle?
- - anonimowe segmenty pamięci - stos i stertę lokalizował w pamięci węzła nr 2. (pokazać niezerowe wartości po wykonaniu
- polecenia numastat -p <PID>
- \033[0;32m#P\033[0m Skąd wiadomo że to jednostki z ostatniego węzła?
- - z polecenia numactl -H widać node 2 cpus: 6 7 8 9
- \033[0;32m#P\033[0m Jakie zasoby przynależą do węzłów NUMA?
- - jednostki przetwarzające i obszar pamięci ulotnej
- "
- echo -e "\033[0;32m-------------------------------------------------------[4.1.2.22]-----------------------------------------------------------------------------\033[0m"
- lscpu | grep NUMA
- numademo 100M memset #może być 350M jak będzie dzialalo
- #pokazuje:
- #memory on node 1 memset Avg 17118
- #dla
- #memory interleaved on 0 1 2 memset Avg 16651
- #przekaz danych poprzez szyne interconnect powoduje opóźnienie w przetwarzaniu
- ----------------------------------------------------------------------------------
- echo -e "
- 5.1.2.1
- Rodzaje przetwarzania współbieżnego, ze względu na liczbę wykorzystywanych jednostek przetwarzających
- Przetwarzanie równoległe - gdy ich zadania są wykonywane jednocześnie z wykorzystaniem różnych jednostek
- przetwarzających - nie jest możliwe w przypadku włókien procesu.
- Podział czasu jednej jednostki przetwarzającej (przetwarzanie pseudorównoległe) (tzw. przeplot) - jest to
- przykład zwielokrotnienia w czasie zasobu jednostki CPU, a występowanie tylko jednego CPU zapewnia
- pseudorównoległość (zadania rywalizują o jednostkę przetwarzającą – więcej zadań niż jednostek)."
- echo -e "
- 5.1.2.2
- Kryteria poprawności programu współbieżnego.
- bezpieczenstwo - w trakcie przetwarzania zawsze wystąpią jedynie zdarzenia dopuszczalne
- zywotnosc - po skonczonej liczbie zdarzen przetwarzanie kolejnych instrukcji programu zostanie kontynuowane. Oczekiwanie procesu z cecha zywotnosci na spelnienie okreslonego warunku musi wiec gwarantowac jego zajscie w skonczonym czasie
- Uszczegolowieniem cech zywotnosci to wlasciwosc ktora precyzuje czas oczekiwania na wystapienie stanu
- "
- echo -e "
- 5.1.2.3
- Zaglodzenie - nie wszystkie uruchomione zadania uzyskuja potrzebne do dalszego przetwarzania zasoby
- Uwiezienie - Program ma zasoby ale dziala w nieskonczonosc bez efektow
- "
- echo -e "
- 5.1.2.4
- Przeplot - podzial czasu jednostki przetwarzajacej
- Uwiezienie - Program ma zasoby ale dziala w nieskonczonosc bez efektow jest to przykład zwielokrotnienia w czasie zasobu jednostki
- CPU, a występowanie tylko jednego CPU zapewnia pseudorównoległość
- Konflikt – sytuacja w której wykonywane instrukcje przynależące do różnych procesów posiadają wspólny operand i
- przynajmniej jedna z nich jest operacją wyjścia (zapisu). Innymi słowy, występuje on, kiedy zadania muszą operować na
- współdzielonym zasobie i jedno z zadań dokona modyfikacji tego zasobu poprzez zapis (kiedy oba zadania jedynie
- odczytują zasób nie dochodzi do konfliktu)
- Hazard/wyścig – zjawisko kiedy wykonywane współbieżnie operacje pomiędzy przetwarzanymi procesami/wątkami (m.
- in. konflikty) powodują, że w zależności od kolejności występowania zdarzeń system operacyjny uzyska różne stany
- "
- echo -e "
- 5.1.2.5
- W funkcji filozof().
- Jest to funkcja sparametryzowana czyli, że z jednej funkcji można utworzyć wiele różnych zadań filozofów.
- "
- echo -e "
- 5.1.2.6
- W głównym skrypcie (najpewniej ucztujacy_filozofowie lub wywołanie z użyciem pętli w Bash), dla każdego filozofa tworzony jest osobny proces (przez & – uruchamianie w tle).
- Procesy są niezależne, współbieżne, realizują identyczne zadanie, konkurują o widelce.
- "
- echo -e "
- 5.1.2.7
- Powstanie o jeden więcej procesów niż podana liczba filozofów, ponieważ powstanie również proces, który wywołuje
- procesy filozofów, a wszystkie te procesy są jednowątkowe. Ostatni będzie się kończył proces nadrzędny czyli ten
- wywołujacy procesy filozofów. (Linia nr 49 – wait czyli czekanie aż zakończą się procesy powołane przez proces rodzica)
- "
- -------------------------------------------------------------
- echo -e "
- 5.1.2.1
- Rodzaje przetwarzania współbieżnego, ze względu na liczbę wykorzystywanych jednostek przetwarzających
- Przetwarzanie równoległe - gdy ich zadania są wykonywane jednocześnie z wykorzystaniem różnych jednostek
- przetwarzających - nie jest możliwe w przypadku włókien procesu.
- Podział czasu jednej jednostki przetwarzającej (przetwarzanie pseudorównoległe) (tzw. przeplot) - jest to
- przykład zwielokrotnienia w czasie zasobu jednostki CPU, a występowanie tylko jednego CPU zapewnia
- pseudorównoległość (zadania rywalizują o jednostkę przetwarzającą – więcej zadań niż jednostek)."
- echo -e "
- 5.1.2.2
- Kryteria poprawności programu współbieżnego.
- bezpieczenstwo - w trakcie przetwarzania zawsze wystąpią jedynie zdarzenia dopuszczalne
- zywotnosc - po skonczonej liczbie zdarzen przetwarzanie kolejnych instrukcji programu zostanie kontynuowane. Oczekiwanie procesu z cecha zywotnosci na spelnienie okreslonego warunku musi wiec gwarantowac jego zajscie w skonczonym czasie
- Uszczegolowieniem cech zywotnosci to wlasciwosc ktora precyzuje czas oczekiwania na wystapienie stanu
- "
- echo -e "
- 5.1.2.3
- Zaglodzenie - nie wszystkie uruchomione zadania uzyskuja potrzebne do dalszego przetwarzania zasoby
- Uwiezienie - Program ma zasoby ale dziala w nieskonczonosc bez efektow
- "
- echo -e "
- 5.1.2.4
- Przeplot - podzial czasu jednostki przetwarzajacej
- Uwiezienie - Program ma zasoby ale dziala w nieskonczonosc bez efektow jest to przykład zwielokrotnienia w czasie zasobu jednostki
- CPU, a występowanie tylko jednego CPU zapewnia pseudorównoległość
- Konflikt – sytuacja w której wykonywane instrukcje przynależące do różnych procesów posiadają wspólny operand i
- przynajmniej jedna z nich jest operacją wyjścia (zapisu). Innymi słowy, występuje on, kiedy zadania muszą operować na
- współdzielonym zasobie i jedno z zadań dokona modyfikacji tego zasobu poprzez zapis (kiedy oba zadania jedynie
- odczytują zasób nie dochodzi do konfliktu)
- Hazard/wyścig – zjawisko kiedy wykonywane współbieżnie operacje pomiędzy przetwarzanymi procesami/wątkami (m.
- in. konflikty) powodują, że w zależności od kolejności występowania zdarzeń system operacyjny uzyska różne stany
- "
- echo -e "
- 5.1.2.5
- W funkcji filozof().
- Jest to funkcja sparametryzowana czyli, że z jednej funkcji można utworzyć wiele różnych zadań filozofów.
- "
- echo -e "
- 5.1.2.6
- W głównym skrypcie (najpewniej ucztujacy_filozofowie lub wywołanie z użyciem pętli w Bash), dla każdego filozofa tworzony jest osobny proces (przez & – uruchamianie w tle).
- Procesy są niezależne, współbieżne, realizują identyczne zadanie, konkurują o widelce.
- "
- echo -e "
- 5.1.2.7
- Powstanie o jeden więcej procesów niż podana liczba filozofów, ponieważ powstanie również proces, który wywołuje
- procesy filozofów, a wszystkie te procesy są jednowątkowe. Ostatni będzie się kończył proces nadrzędny czyli ten
- wywołujacy procesy filozofów. (Linia nr 49 – wait czyli czekanie aż zakończą się procesy powołane przez proces rodzica)
- "
- echo -e "5.1.3.1
- Jak zauważyć problem zakleszczenia w przygotowanym grafie?
- - Każdy z filozofów ma jeden swój widelec (lewy) i czeka na drugi widelec (po prawej), ponieważ wszyscy filozofowie
- czekają i żaden z nich nie zwalnia widelców (zasobu), które już trzyma, tworzy się sytuacja w której nie można zrobić
- postępów co ilustruje zakleszczenie.
- Zakleszczenie – to nieprzerwany stan wzajemnego blokowania się zadań; system oczekuje na zajście zdarzenia, które
- nigdy nie zajdzie. Ciągłość blokowania wynika m. in. z wykorzystywania zasobów wyłącznych poprzez procesy, które nie
- zostają zwolnione w wyniku wstrzymania wykonania zadania.
- Kółka reprezentują – Zadania
- Kwadraty reprezentują – Zasoby wspólne o dostępie wyłącznym
- Kierunki strzałek mają znaczenie, strzałka DO procesu oznacza, że ten zasób jest przyznawany procesowi, a OD procesu,
- że proces oczekuje na przydział tego zasobu
- Sytuacja wyrysowana na diagramie nie jest korzystna bo występuje ZAKLESZCZENIE
- "
- echo -e "5.1.3.2
- Ilu zadań dotyczy zakleszczenie i jak jego wystąpienie wpływa na poprawność programu?
- - W tym przypadku zakleszczenie dotyczy 5 zadań (bo 5 filozofów), jego wystąpienie jest niekorzystne ponieważ dalsze
- przetwarzanie wzajemnie blokujących się procesów/wątków nie może być kontynuowane, występuje więc brak
- postępu w realizacji ich zadań.
- Nie spełnia warunków poprawności programu przetwarzanego współbieżnie (warunku żywotności - brak postępu) – w
- więcej niż jednym zadaniu nie ma postępu
- Zakleszczenie dotyczy minimum dwóch zadań"
- echo -e "5.1.3.3
- Warunki konieczne wystąpienia zakleszczenia i który z nich został wyeliminowany poprzez zastosowane rozwiązanie eliminujące zakleszczenia filozofów?
- - Brak wywłaszczeń – zwolnienie wykorzystywanego zasobu jest realizowane wyłącznie z inicjatywy procesu,
- - Wzajemne wykluczanie – zasób jest wykorzystywany tylko przez jeden proces( w danej chwili czasu nie może być
- dostępny dla innych procesów),
- - Przetrzymywanie i oczekiwanie – proces posiadający już przydzielone jednostki zasobu może żądać jednostek innego
- zasobu, które są przydzielone innemu procesowi,
- - Cykl oczekiwania – istnienie zbioru procesów, w którym można wyróżnić cykl, gdzie kolejne pary procesów są
- powiązane zależnością oczekiwania i przetrzymywania,
- Brak spełnienia jednego z powyższych warunków oznacza brak sytuacji zakleszczenia procesów!
- Problem zakleszczenia może dotyczyć również wątków należących do jednego procesu.
- Jednak spełnienie wszystkich warunków koniecznych nie musi oznaczać wystąpienia zakleszczenia zadań
- Który z tych warunków i jakim mechanizmem został wyeliminowan
- "
- echo -e " 5.1.3.4
- Jak zastosować hierarchię zasobów i dwufazowe blokowanie.
- - hierarchia zasobów – wprowadzanie porządku dla zasobów. Proces nie może zamówić jednostek zasobu, jeżeli zostały
- już przydzielone jednostki zasobu, który względem ustalonego porządku występuje wcześniej. Jednostki jego samego
- zasobu muszą być zamawiane w jednym zleceniu.//przykład: jeżeli filozof musi pobrać widelce w kolejności od najniższego nr do najwyższego to po pobraniu 5 nie może
- pobrać 1, ale może najpierw 1 a potem 5
- - Dwufazowe blokowanie – w ramach dwufazowego blokowania wyróżnia się w przetwarzaniu zadania fazę blokowania
- niezbędnych zasobów oraz fazę przetwarzania z wykorzystaniem zablokowanych zasobów i zwracania zasobów do
- systemu operacyjnego
- W pierwszej fazie istotne jest zablokowanie przez zadanie wszystkich wspólnych zasobów zwrotnych, dopiero wówczas
- następuje realizacja fazy drugiej
- Jak należy stosować hierarchię zasobów przy przetwarzaniu współbieżnym zadań, żeby nie występowały zakleszczenia
- tych zadań?
- - Najpierw trzeba ponumerować zasoby wspólne o dostępie wyłącznym
- Co dalej? Zgodnie z hierarchią zasobów co dalej powinniśmy ustawić?
- - Ustalamy regułę dostępu do zasobów, według której proces nie może zamówić jednostek zasobu, jeżeli zostały już
- przydzielone jednostki zasobu, który względem ustalonego porządku występuje wcześniej //patrz przykład wyżej
- Czyli zgodnie czy niezgodnie należy te zasoby przydzielać?
- - Zgodnie
- Dwufazowe blokowanie występuje czy nie występuje?
- - Występuje
- Co robi filozof w ramach pierwszej fazy blokowania dwufazowego?
- - Podnosi dwa widelce i zakłada blokady
- skrypt lib_uczta_filozofów:
- Co się dzieje w ramach drugiej fazy?
- - Wykonywane jest przetwarzanie z wykorzystaniem zablokowanych zasobów
- Kolejność ma znaczenie - widelce odstawiane są w odwrotnej kolejności"
- echo -e "5.1.3.5
- Czym jest współbieżność konkurencyjna i współbieżność kooperacyjna? - wymagane wskazanie, gdzie występuje każda z tych współbieżności pomiędzy zadaniami filozofów?
- Konkurencyjna – procesy nie współpracują ze sobą, a wzajemne oddziaływanie pomiędzy nimi sprowadza się do
- rywalizacji o dostęp do zasobów, których potrzebują do realizacji przetwarzania swoich zadań
- Kooperacyjna – procesy współpracują ze sobą, poprzez komunikację i synchronizację koordynują wykonywanie swoich
- zadań
- Współbieżność konkurencyjna i kooperacyjna wskazanie przykładów w skrypcie. Na przykład mamy filozofa niech
- będzie 4 i 5 to jak oni sięgają po widelec pomiędzy nimi to jest przykład współbieżności konkurencyjne czy
- kooperacyjnej?
- - Konkurencyjnej
- Którą instrukcją sięgnie po widelec nr 5 filozof numer 4, a którą filozof nr 5?
- - obaj sięgną po widelec tą samą instrukcją:
- podnies_widelec $1 $7 $DESKRYPTOR_WIDELEC_2Którą instrukcją sięgnie po widelec nr 4 filozof nr 4?
- - (swoją instrukcją którą podnosi dla siebie pierwszy widelec) - nie mówić tego tylko pokazać
- podnies_widelec $1 $6 $DESKRYPTOR_WIDELEC_1
- Ogólnie rzecz biorąc filozof o numerze n sięgnie po widelec o numerze n instrukcją:
- podnies_widelec $1 $6 $DESKRYPTOR_WIDELEC_1
- a o numerze n+1 :
- podnies_widelec $1 $7 $DESKRYPTOR_WIDELEC_2
- Przykład zastosowania współbieżności kooperacyjnej?
- - W skrypcie lib_uczta_filozofow.sh: w funkcji zaczekaj_na_innych() echo >$5 zapewnia komunikacje
- Co to jest za instrukcja?
- - Wysyłanie komunikatu przez potok/plik potoku – wysyła filozof – wysyła pusty komunikat
- Inny przykład:
- - W skrypcie lib_uczta_filozofow.sh: w funkcji zaczekaj_na_innych() cat $5 zapewnia komunikacje instrukcja odczytu
- (odebranie komunikatu) z potoku/pliku potoku – mechanizm Potok – mechanizm NIEANONIMOWY/NAZWANY (bo ma
- swoją reprezentacje plikową)"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement