piątek, czerwiec 06, 2008

Zarządzanie zasobami

Jednym z niesłusznie pomijanych elementów OpenSolarisa jest zarządzanie zasobami (ang. resources management). Solaris ma dość rozbudowane możliwości. Zaznaczę tylko kilka aspektów, zainteresowanych odsyłam do:

Jest to dokładna dokumentacja dotycząca zarządzania zasobami w Solarisie 10. Jeśli kogoś interesuje, dlaczego strefy (ang. zones) znalazły się w tytule, to dlatego, że są nie tylko związane z wirtualizacją, ale także z zarządzaniem zasobami systemu.
O wygodzie wynikającej z określania zasobów dostępnych dla użytkowników i ich procesów nie trzeba chyba przekonywać żadnego administratora. Wprawdzie w niewielkich rozwiązaniach puszczenie wszystkiego na żywioł rzadziej niż częściej powoduje poważne awarie, o tyle we wszystkich można sporo zyskać, jeśli dostępną pamięć, czas procesora, przestrzeń dyskową itp. sensownie rozparcelować.
Jakimi zasobami pozwala zarządzać Solaris? Dokładna lista jest dość długa. Na pewno można przydzielić czas procesora, ilość dostępnej pamięci (dla obu można określić zarówno minimum jak i maksimum), można podpiąć procesy pod konkretny procesor lub pod zestaw procesorów. W przypadku architektur NUMA warto zainteresować się grupami lokalnymi (ang. local groups), zwanymi lgroups. Więcej szczegółów w blogach na Planecie OpenSolarisa. Niestety, po angielsku, ale jeśli się już dokładniej o nich obczytam, to pewnie napiszę coś od siebie. :) Dodatkowo definiowalne są akcje, które ma podjąć system w przypadku naruszenia postawionych granic, od ubicia procesu, przez jego uśpienie, po logowanie do plików dziennika systemowego. Dodatkową atrakcją jest możliwość bardzo dokładnego śledzenia i księgowania zużycia zasobów.
Podstawowe zadania zarządzania zasobami to:

  • ograniczenie dostępu do pewnych zasobów systemowych,

  • określenie preferencji w dostępie do zasobów na poziomie grup procesów,

  • oddzielenie od siebie grup procesów nie powiązanych ze sobą logicznie.


W związku z tymi zadaniami system dostarcza trzy mechanizmy:

  • ograniczenia - pozwalają na ustalenie maksymalnego wykorzystania zasobów przez proces, zadanie lub projekt,

  • planistów (ang. schedulers) - pozwalają na zarządzanie alokowaniem zasobów za pomocą przewidywalnego algorytmu w określonych odstępach czasu,

  • partycjonowanie - pozwala na podpięcie określonej grupy procesów do określonej grupy zasobów systemu.



Podstawowe pojęcia dotyczące zarządzania zasobami w Solarisie to:

  • projekt,

  • zadanie (ang. task),

  • obciążenie (ang. workload).


Projekt jest identyfikatorem określonego obciążenia (aplikacji, usługi) na poziomie sieci, w której pracuje system.
Zadanie to grupa procesów prezentujących element obciążenia.

W ogólnym zarysie procesy należą do zadań, a zadania należą do projektów. Przynależność do zadania jest dziedziczna, co znaczy, że dowolny proces dziedziczy ograniczenia po swoim rodzicu.
Można powiedzieć, że projekty są bardziej abstrakcyjną jednostką. Na jej poziomie definiuje się ograniczenia i przynależność użytkowników. Użytkownik przypisany do danego projektu tworzy nowe zadanie przez zalogowanie się lub komendą newtask. Zadanie jest członkiem domyślnego projektu użytkownika, chyba że zostanie przeniesione lub stworzone jako element innego projektu, którego członkiem jest użytkownik.
W Solarisie istnieje domyślny projekt, do którego należą wszyscy użytkownicy, jeśli nie stworzy się innego projektu i nie przypisze użytkowników. W ten sposób każdy proces i każdy użytkownik w systemie należy do jakiegoś projektu.
Projekty można definiować w pliku /etc/projects, ale można też definiować w usługach NIS i LDAP, co pozwala na scentralizowane zarządzanie projektami na poziomie sieci serwerów.
Strefy są powiązane z zarządzaniem zasobami, ponieważ każdą strefę można przypisać do projektu, ustalając w ten sposób dla niej ograniczenia, a wewnątrz strefy można definiować dalsze projekty.
W następnych odcinkach:

  • komendy do definiowania projektów, tworzenia zadań i kontroli zużycia zasobów,

  • kilka przykładów wykorzystania zarządzania zasobami.

0 komentarze: