Linux kernel v2.6 skalowalność na miarę przedsiębiorstwa

W ostatnich latach Linux rozwijał się głównie jako serwer webowy lub serwer plików, a także jako serwer DNS czy DHCP. Nie pojawiał się jednak jako platforma do obsługi krytycznych aplikacji przedsiębiorstwa. Przełomowy Linux kernel v2.6 ma szansę to zmienić.

W ostatnich latach Linux rozwijał się głównie jako serwer webowy lub serwer plików, a także jako serwer DNS czy DHCP. Nie pojawiał się jednak jako platforma do obsługi krytycznych aplikacji przedsiębiorstwa. Przełomowy Linux kernel v2.6 ma szansę to zmienić.

Jądro v2.6 otwiera Linuksowi drogę do obsługi najbardziej wymagających zadań przetwarzania, które do tej pory były obsługiwane przez systemy tej klasy, co Solaris, AIX, HP/UX. Nowe jądro obsługuje nie tylko większą pamięć RAM i większą liczbę procesorów, ale zmieniło się także zarządzanie urządzeniami.

Wcześniejsze wersje miały ograniczenia, które mogły utrudniać zastosowanie Linuksa w dużych systemach. Jądro 2.6 wychodzi poza te ograniczenia, zapewniając obsługę niektórych największych architektur serwerowych.

Linux na serwerach z górnej półki

Linux kernel v2.6 skalowalność na miarę przedsiębiorstwa

Porównanie wersji Linuksa

Podstawowym celem, jaki postawiono przy projektowaniu wersji v2.6, są rozbudowane architektury serwerowe. Obsługa do 64 GB RAM w trybie stronicowania, zdolność adresowania systemu plików powyżej 2 TB oraz obsługa 64 CPU w systemach SMP opartych na x86 predestynują nowe wydanie Linuksa do pracy w rzeczywistych systemach mission critical. Nowe są także: obsługa systemu NUMA (Non-Uniform Memory Access); obsługa architektury SMP nowej generacji oraz PAE (Physical Address Extension) - pozwalające na obsługę do 64 GB RAM w systemach 32-bitowych.

Jądro to wnosi coś więcej, niż tylko zwiększenie liczby procesorów i obsługiwanej pamięci, przełamuje bowiem sztuczne bariery, które istniały w Linuksie od początku. Tworzyły je liczba adresowalnych urządzeń i pełna dostępność PID (Processor Identifiers).

Jądro v2.4 pozwala na obsługę 255 urządzeń głównych i 255 podrzędnych. Na serwerach z dużą liczbą urządzeń rzeczywistych i wirtualnych przydzielanie numerów może okazać się problemem. Jądro v2.6 rozwiązuje to, zwiększając zakres adresacji urządzeń głównych do 4096 z ponad milionem podurządzeń dla każdego urządzenia głównego. Dla większości użytkowników liczby te znacznie przekraczają praktyczne potrzeby, ale dla systemów w przedsiębiorstwach, które musza adresować dużo urządzeń, jest to istotna zmiana.

Nowością jest także NPTL (Native POSIX Threading Library). NPTL zapewnia obsługę wątków z wydajnością wymaganą przez systemy klasy przedsiębiorstw, znacznie przekraczającą osiągi Linux Threads z jądra v2.4.

Inne udoskonalenia v2.6 obejmują: zintegrowane wsparcie IPSec, rozszerzone wsparcie sieciowego systemu plików - w tym obsługa montowania plików NetWare; wstępne wsparcie NFSv4 (Network File System) oraz zmiany wydajnościowe i w zakresie kompatybilności, związane z systemem SMB (Server Message Block), w tym wsparcie CIFS (Common Internet File System). Jądro v2.6 używa także zupełnie nowej architektury bezpieczeństwa, która wywodzi się ze standardowej koncepcji użytkownika głównego Uniksa. Ten modularny mechanizm zapewnia większy poziom szczegółowości w zarządzaniu uprawnieniami użytkowników.

Nowa wersja to także nowe podejście do urządzeń. Moduł obsługi urządzeń z jądra 2.4 (oparty na devfs) ma do pomocy udev (nowa implementacja devf). Używając udev, system może "podążać" za urządzeniem przemieszczanym na szynie, podczas gdy jego identyfikator pozostaje niezmieniony. Na przykład pierwsze rozpoznane urządzenie SCSI pozostanie urządzeniem sda, używającym numeru seryjnego urządzenia jako identyfikatora, niezależnie od tego, na której pozycji zostanie odnalezione podczas kolejnego ładowania. Zastosowanie udev jest dość istotną zmianą jądra i wygląda na to, że udev/sysfs stanie się w przyszłości standardem, zastępując devfs. Jednak oba rozwiązania są obecne w jądrze v2.6 i prawdopodobnie pozostaną tam przez jakiś czas.

Inną znaczącą zmianą jest włączenie do jądra v2.6 projektu uClinux. Projekt ten skupia się na dostosowaniu jądra Linuksa do urządzeń zagnieżdżanych. Głównym mechanizmem tej funkcji jest wsparcie MMU (Memory Management Unit), powszechnie znajdującej się w mikrosterownikach dla systemów zagnieżdżanych, takich jak PDA. Lista zagnieżdżanych sterowników obsługiwanych przez jądro v2.6 jest dość długa i obejmuje procesory takich firm, jak: Hitachi, NEC, Motorola. To wyraźnie pokazuje proces odchodzenia od korzeni Linuksa, jako że wszystkie poprzednie wersje były bardziej lub mniej ograniczane architekturą Intel x86.

Poprawa osiągów

Do momentu pojawienia się jądra v2.6 Linux wykonywał zadania wg zasady "kto pierwszy, ten lepszy" (first-come, first-served) - brak było możliwości przerwania zadań pośrednich jądra w celu obsługi innego procesu. Jądro v2.6 może stosować (w razie potrzeby) wywłaszczanie zadań i przydzielać zasoby procesom wymagającym natychmiastowego obsłużenia, a dopiero po tym podjąć przetwarzanie przerwanego zadania. Takie przerwania są taktowane zegarem sekundowym i praktycznie nie są zauważalne. Być może zmiany te nie stawiają jeszcze Linuksa w pierwszym rzędzie systemów czasu rzeczywistego, ale jest to już droga do osiągnięcia tego celu.

Sercem tych rozszerzeń jest nowy scheduler procesów. Program planowania procesów w jądrze dzieli zasoby CPU pomiędzy procesy systemowe. Wydajność schedulera wpływa bezpośrednio na czas reakcji systemu i opóźnienia procesów. W wersji v2.6 nowy scheduler 0(1) zawiera nowy algorytm, który może istotnie zwiększać wydajność systemu, zwłaszcza zadań interaktywnych. Scheduler ten może wstrzymywać procesy monopolizujące CPU, polepszając możliwość priorytetyzacji procesów oraz zapewniając ich zrównoważoną wydajność.

Nowe są także dwa schedulery we/wy. Scheduler używany domyślnie w jądrze v2.6 (tzw. antycypujący) zawiera wiele usprawnień w obsłudze szeregowania we/wy, zapewniając procesom czas we/wy wtedy, gdy jest to potrzebne - bez zbędnego kolejkowania. Dostępny jest także "deadline scheduler", który przydziela czas ważności zleceniom przy użyciu trzech kolejek, podczas gdy scheduler antycypujący próbuje przewidywać zlecenia procesów we/wy zanim się pojawią.

Ponieważ można dużo dyskutować o zaletach i wadach schedulerów używanych w tym jądrze, zapewniono obsługę obu schedulerów, definiowaną w czasie procesu ładowania z opcjami przekazywanymi do jądra.

Poza nowymi schedulerami v2.6 zawiera wiele innych, większych zmian architektonicznych. Kod obsługi modułów został całkowicie napisany od nowa i wymaga do funkcjonowania nowego zestawu utility modułu userspace i pakietów mkinitrd. Mogą się one pojawiać jako uaktualnienia do większości dystrybucji Linuksa lub w formie do sprowadzania przez Internet.

Co dalej?

Linux kernel v2.6 skalowalność na miarę przedsiębiorstwa

Prognoza IDC o sprzedaży nowych licencji w roku 2007

Obecnie zdecydowana większość produkcyjnych systemów Linuks pracuje na wersji 2.4 jądra. Są to systemy satysfakcjonujące pod względem wydajności i funkcjonalności i nie należy spodziewać się masowych decyzji o szybkiej ich wymianie. W środowiskach, gdzie na Linuksach z jądrem v2.4 pracują duże bazy danych i inne krytyczne aplikacje, w których nie należy spodziewać się natychmiastowego przejścia na nową wersję, można jednak liczyć na pierwsze testy z v2.6. Jądro v2.6 jest czymś nowym i działy informatyki muszą zapoznać się z jego możliwościami i zaplanować wdrożenie.

Co więc z jądrem v2.4? Ponieważ v2.6 jest oficjalnie wydane, v2.4 wejdzie w tryb konserwacji - bez większych modyfikacji w przyszłości - po wydaniu v2.4.25. Należy sobie jednak zdawać sprawę, że zmiany w jądrze v2.6 są zasadnicze, a wielu producentów udostępniających sterowniki urządzeń jedynie w formie binarnej bardzo powoli tworzy sterowniki dla bieżących odgałęzień jądra v2.4, nie mówiąc już o powstających odgałęzieniach jądra v2.6.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200