sobota, 15 lutego 2014

Kernele e X t 7 3

Założenia

W pierwszej kolejności pragnę wyjaśnić, co przyświecało mi w procesie budowy zoptymalizowanych kerneli. Otóż, użytkując kernele generic, a zatem standardowo dostępne w każdej dystrybucji i budowane przez jej Developerów stwierdziłem, że nie satysfakcjonują mnie przyjęte rozwiązania. Były on bowiem wynikiem – moim zdaniem, zbyt daleko idących kompromisów, a w pewnych aspektach nawet bym to określił „błędnych” założeń. Zatem przyjąłem, że przyświecają mi 4 cele, w procesie budowy kerneli - w wyniku czego mają one zapewniać:
  1. Maksymalną responsywność,
  2. Maksymalną wydajność,
  3. Najniższe możliwe zużycie energii i najniższą możliwą do osiągnięcia temperaturę pracy – w każdym trybie,
  4. Zapewnienie maksymalnego poziomu bezpieczeństwa.
Już od ponad 4 lat staram się udostępniać kernele oraz inne rozwiązania, które realizują te 4 powyższe cele. Zatem, ad rem in concreto, budowane przeze mnie kernele przeznaczone są dla Ubuntu od wersji 12.04 do 14.04 [w tym także Kubuntu/ Lubuntu/ Xubuntu/ Gnome Ubuntu]. Kernele oraz proponowane modyfikacje powinny jednak - przy spełnieniu powyższych przesłanek - działać także z nowymi wersjami (odpowiadających obecnym wersjom Ubuntu) dystrybucji Mint oraz innym bazujących na Ubuntu. Jednakże instalacja na innych dystrybucjach niż Ubuntu - we wskazanych wersjach, realizowana jest jedynie na ryzyko i odpowiedzialność podejmujących się tego Śmiałków ;)

Podkreślenia wymaga fakt, iż w przypadku korzystania z zamkniętych sterowników graficznych, konieczne będą ich najnowsze udostępniane w ramach NeteXt'73 wersje dla układów Nvidii, bądź AMD/ATi.


Przyjęte rozwiązania

Kernele zostały zbudowane w oparciu o źródła Vanilla ("czyste" źródła) kernela. Odnosząc się do ich konfiguracji, zastosowałem auto-grupowanie (Automatic process group scheduling). Jako defaultowego schedulera procesów/obciążenia CPU używam CFS, natomiast w odniesieniu procesów wyjścia/wejścia [dyski] schedulera I/O CFQ. Jednakże od APM w wersji 2.2 aktywowane są jednocześnie 2 schedulery I/O - w zależności od rodzaju dysku działają, dla: 
  • Dysków SSD [Solid State Drive - dyski pamięci "nieulotnych"] - Noop, a dla 
  • Dysków HDD [dyski mechaniczne] - CFQ. 
Takie rozwiązanie pozwala na optymalizację wydajności i zwiększa bezpieczeństwo oraz żywotność dysków - w szczególności tyczy się to dysków SSD.


Licencja

Powszechna Licencja Publiczna GNU w wersji trzeciej [GPL 2.0] - wersja oryginalna - obowiązująca

Powszechna Licencja Publiczna GNU w wersji trzeciej [GPL 2.0] - wersja polskojęzyczna (nieoficjalne tłumaczenie)

Przygotowane przeze mnie kernele udostępniane są zgodnie z postanowieniami powołanej powyżej Powszechnej Licencji Publicznej GNU w wersji drugiej [GPL 2.0]. Zgodnie z jej postanawianiami udostępniam źródła na podstawie których budowane są poszczególne pakiety deb.

Zgodnie z postanowieniami licencji GPL na udostępniane źródła (kod źródłowy) oraz pakiety (kod wynikowy) nie udziela się gwarancji. Jedynie w przypadku pakietów (kod wynikowy) oznaczonych jako i7, i7-pro oraz Brazos i Brazos-pro gwarantuje, iż pakiety te są zbudowane prawidłowo i są zgodne z GNU/Linux Ubuntu oraz Kubuntu [i pochodnych]. W związku z powyższym oraz postanowieniami powołanej licencji nie ponoszę odpowiedzialności za skutki ewentualnych błędów wynikających z funkcjonowania udostępnionych pakietów.

Wskazane źródła zostają przeze mnie poddane modyfikacji (o czym mowa powyżej) i prawo do korzystania z nich udostępniam na zasadach opisanych w powołanym akcie normatywnym. Kod źródłowy jest odpowiedni dla wszystkich wydań (K8, atom, i7, i7-pro, Brazos, Brazos-pro) z danej serii (np. v28.x) i dystrybuowany jest zgodnie z wszelkimi postanowieniami Licencji GPL w wersji 2.

Pakiety binarne (kod wynikowy) zawierające kernele oznaczone, jako K8 oraz atom udostępniam w pełni nieodpłatnie, bez ograniczenia ilości stanowisk na których użytkownik je instaluje oraz bez ograniczenia swobody ich rozpowszechniania.


Odpłatna subskrypcja

W przypadku pakietów binarnych (kod wynikowy) oznaczonych, jako i7, i7-pro oraz Brazos, Brazos-pro, ich dystrybucja ma charakter odpłatny i realizowana jest na podstawie indywidualnej umowy wykonania dzieła - budowy kodu wynikowego zoptymalizowanego dla architektury 64 bitowych, w tym architektury Intel Sandy Bridge i Ivy Bridge – i3, i5 oraz i7 (pakiety oznaczone, jako i7), dla architektury Haswell  – i3, i5 oraz i7 (pakiety oznaczone, jako i7-pro) oraz dla architektury procesorów Firmy AMD od wersji K10.5 – w tym Athlon II, Phenom II, Brazos, Fusion (Llano, Trinity) oraz FX (Zambezi, Bulldozer) – pakiety oznaczone, jako Brazos, a także dla najnowszych procesorów AMD opartych o architekturę Piledriver i Steamroller, np. procesory z rodziny Vishera, czy Kaveri  – pakiety oznaczone, jako Brazos-pro

Umowa zawierana jest pomiędzy moją osobą, jako przyjmującym zamówienie, a ich użytkownikiem (zamawiającym) otrzymującym prawo do korzystania z tego dzieła (danej kompilacji, np. wersja v28.3), który w ramach jednorazowej zapłaty opiewającej na kwotę 50 zł, uzyskuje prawo do otrzymania najnowszej - na danych dzień - wersji dzieła oraz jej kolejnych ulepszonych wersji (następne kompilacje, np. v28.5, etc.) w okresie roku od dnia zawarcia umowy (dnia zapłaty). 

Użytkownik w ramach wskazanej jednorazowej opłaty uzyskuje prawo do korzystania w powołanym okresie z dzieła oznaczonego jako pakiety i7, i7-pro bądź też Brazos, Brazos-pro.


Źródła

Zgodnie z powołaną powyżej licencją pod wsianym poniżej linkiem udostępniał będę źródła kerneli wraz z konfiguracją dla poszczególnych architektur. pragnę jednak poinformować,  że kernele zbudowane w oparciu o udostępnione źródła nie będą odpowiadały kernelom budowanym przeze mnie [responsywność, wydajność i energooszczędność], co wynika z przyjętych założeń kompilacji na poziomie kompilatora, o czym szerzej w poniższym linku:

źródła kerneli oraz pliki konfiguracyjne