5 sztuczek przyspieszających czas kompilacji w Gentoo Linux

5 Tips Speed Compile 00 Featured Image

Gentoo to wydajna i elastyczna dystrybucja Linuksa. Dzięki innowacyjnemu menedżerowi pakietów – Portage – pozwala na dopracowanie systemu komputerowego do jego najbardziej podstawowych części.

Dzieje się tak, ponieważ Gentoo domyślnie wymaga skompilowania wszystkich pakietów, które chcesz zainstalować. Takie podejście umożliwia zmianę ustawień czasu kompilacji. Obejmuje to ustawienia dla różnych technologii, które nie byłyby możliwe w dystrybucji binarnej.

Co to jest zarządzanie pakietami źródłowymi?

Zarządzanie pakietami w oparciu o źródła to oryginalny sposób dystrybucji programów innych firm w systemie Linux. Jest to system, w którym opiekun ma listę przepisy kulinarne w pozyskiwaniu i tworzeniu programów.

Te przepisy mogą zawierać zarówno kod źródłowy programu, jak i instrukcje, jak go uzyskać. Jako użytkownik możesz następnie pobrać te przepisy od dystrybutora za pośrednictwem swojego menedżera pakietów. Po zakończeniu Twój komputer pobierze kod źródłowy programu i utworzy go w czasie rzeczywistym dla Ciebie.

5 wskazówek Szybkość kompilacji 04 Dystrybucja ebuildów

Chociaż może się to wydawać staromodne, robienie tego w ten sposób ma wiele zalet:

  • Dystrybucja tylko receptury pakietu zajmuje mniej danych niż dystrybucja kopii binarnych. To z kolei zmniejsza ilość zasobów wymaganych do hostowania kopii lustrzanej repozytorium.
  • Kompilacja pakietu z jego kodu źródłowego udostępnia programy, dzięki którym Twój system operacyjny działa. Może to być szczególnie przydatne, jeśli chcesz dowiedzieć się, jak działa Twój komputer i jak możesz rozszerzyć jego funkcje.
  • Wreszcie, kompilacja pakietu z jego kodu źródłowego daje możliwość dostosowania i zmiany zachowania programów. Możesz łatwo dodać lub usunąć funkcje, których nie potrzebujesz.

Mimo to takie podejście ma również szereg wad. Na przykład kompilacja i instalacja pakietów takich jak Firefox i Chromium zajmuje wiele godzin. Dzieje się tak, ponieważ są to programy z milionami linii kodu i setkami zależności.

5 wskazówek Szybkość kompilacji 05 Przykład skompilowanego programu

Wiedząc o tym, ten artykuł ma na celu przedstawienie pięciu sztuczek, które można wykorzystać do skrócenia czasu kompilacji podczas korzystania z Gentoo.

1. Zoptymalizuj MAKEOPTS

Jednym z najprostszych sposobów na przyspieszenie czasu kompilacji w Gentoo jest optymalizacja pliku make.conf. Jest to główny plik konfiguracyjny, którego Portage używa do określenia ustawień kompilacji na Twoim komputerze. W związku z tym zawiera wiele zmiennych, które określają architekturę i ustawienia systemu.

Plik make.conf można znaleźć w „/etc/portag”. Możesz również wydrukować zawartość pliku za pomocą następującego polecenia:

5 porad Speed ​​Compile 06 Przykład Make Conf

Jedyne, co musisz zmienić, aby zoptymalizować Portage, to MAKEOPTS. To jest ustawienie, które zajmuje się flagami optymalizacji twojego systemu. Rozważmy następujący przykład:

W tym przypadku są dwie flagi, których możesz użyć z MAKEOPTS:

  • ten -j flaga wskazuje ilość zadań kompilacji, które chcesz przydzielić do procesora. Dobrą zasadą przy ustawianiu tej wartości jest podanie jej połowy liczby rdzeni procesora. Na przykład, jeśli używasz czterordzeniowego procesora, możesz ustawić tę wartość na -j2.
  • ten -l z drugiej strony flaga ustawia średnie obciążenie, które chcesz dla swojego systemu. Średnie obciążenie to łączna liczba zadań wykonywanych przez procesor przez określony czas. Na przykład, jeśli chcesz przyspieszyć czas kompilacji dla swojego systemu, możesz ustawić tę wartość na -l2.

2. Skorzystaj z CCache

Innym sposobem na przyspieszenie czasu kompilacji jest użycie Cache. Jest to program innej firmy, który umożliwia zapisywanie typowych skompilowanych plików w tymczasowym miejscu na komputerze.

5 wskazówek Szybkość kompilacji 07 Witryna pamięci podręcznej

Stamtąd kompilator może użyć tych zapisanych plików, zamiast ponownie je kompilować. Może to być szczególnie przydatne, jeśli stale przebudowujesz programy lub kompilujesz duży pakiet.

Możesz zainstalować CCache przez Portage:

5 wskazówek Szybkość kompilacji 08 Instalacja pamięci podręcznej

Następną rzeczą do zrobienia jest konfiguracja ustawień CCache. Aby to zrobić, musisz utworzyć plik ccache.conf:

Następnie możesz użyć domyślnych ustawień konfiguracyjnych CCache, aby rozpocząć:

Ostatnią rzeczą, jaką musisz zrobić, to powiedzieć Portage, aby używał CCache podczas kompilacji pakietów. Aby to zrobić, możesz dołączyć następujące wiersze do swojego pliku make.conf:

3. Wypróbuj DistCC

Podobne do CCache, DistCC to także program innej firmy, który może przyspieszyć czas kompilacji. W przeciwieństwie do CCache, DistCC robi to poprzez dystrybucję zadań kompilacji do innych komputerów w sieci. Może to być szczególnie przydatne, jeśli masz w domu wiele nieużywanych komputerów.

5 wskazówek Szybkość kompilacji 09 Witryna Distcc

Działa to tak, że DistCC jest podzielony na dwa programy: distccd i distcc.

  • distccd to narzędzie działające na serwerze obliczeniowym. Jest to prosty program, który nasłuchuje przychodzących żądań DistCC od klientów i przejmuje od nich zadania. Po zakończeniu kompilacji skompilowany obiekt jest następnie odsyłany do klienta w celu spakowania.
  • distcc, z drugiej strony, jest programem klienckim, który łączy się z distccd. Jest to program, który współpracuje z Portage, aby bezproblemowo planować i dystrybuować zadania kompilacji w sieci.
Czytać  Jak używać polecenia lp w systemie Linux do drukowania plików z terminala?

Tworzenie małego klastra DistCC jest stosunkowo proste. Aby to zrobić, musisz zainstalować program distcc zarówno na serwerze, jak i na komputerze klienckim:

Konfiguracja serwera DistCC

Następnie musisz skonfigurować swój serwer, aby akceptował połączenia DistCC. Możesz to zrobić, tworząc plik konfiguracyjny distcc w „/etc/conf.d/”:

Po zakończeniu możesz dołączyć następujący wiersz kodu do pliku distccd:

  • ten port flaga wskazuje port, na którym distccd będzie nasłuchiwać połączeń przychodzących. 3632 to domyślny port dla DistCC.
  • ten log-level oraz log-file mówi DistCC, aby utrzymywał plik dziennika dla wykonywanych zadań.
  • ten N flaga wskazuje „fajność” distccd. Jest to zmienna, która informuje DistCC, jak bardzo może wykorzystać procesor serwera do zadań kompilacji. Jest to wartość z zakresu od 0 do 20, gdzie 0 oznacza najmniej ładną wartość, a 20 największą.
  • Wreszcie, allow flaga mówi DistCC, aby nasłuchiwał tylko połączeń przychodzących z określonych adresów. Na przykład powyższy wiersz mówi DistCC, aby nasłuchiwał tylko połączeń przychodzących od jednego klienta.
5 wskazówek Szybkość kompilacji 11 Konfiguracja Distcc

Następną rzeczą, którą musisz zrobić, to utworzyć plik dziennika distccd:

Po wykonaniu tych czynności możesz teraz włączyć serwer distccd na akceptowanie przychodzących połączeń DistCC:

Konfiguracja klienta DistCC

W przeciwieństwie do distccd, konfiguracja klienta DistCC jest niezwykle prosta. Najpierw musisz powiedzieć klientowi, gdzie szukać serwera distccd:

5 wskazówek Szybkość kompilacji 12 konfiguracji klienta Distcc

To powie DistCC, aby używał zarówno lokalnego komputera, jak i serwera do kompilacji programów. Od tego momentu jedyną rzeczą do zrobienia jest skonfigurowanie pliku make.conf tak, aby używał DistCC.

Podobnie jak w przypadku CCache, musisz użyć zmiennej FEATURES, aby poinformować Portage, że używasz DistCC w swojej sieci. Na przykład to jest make.conf z komputera klienta:

4. Użyj BuildPKG

Innym sposobem na przyspieszenie czasu kompilacji w Gentoo jest stworzenie binarnego serwera dystrybucji. W tym przypadku używasz oddzielnej maszyny, na której pakiety są budowane i dystrybuowane w formie binarnej.

W przeciwieństwie do DistCC, dystrybucja plików binarnych wymaga tylko jednej maszyny do kompilacji. Powstały program jest następnie udostępniany na wielu komputerach, na których można go normalnie zainstalować.

5 wskazówek Szybkość kompilacji 13 Dystrybucja Buildpkg

Robienie tego w ten sposób może być pomocne, jeśli używasz już Gentoo na wielu podobnych maszynach. Dzieje się tak, ponieważ pliki binarne skracają czas potrzebny do zbudowania i utrzymania pojedynczego klienta.

Aby rozpocząć, wystarczy dodać następującą linię do make.conf swojego serwera kompilacji:

5 wskazówek Szybkość kompilacji 14 Buildpkg Konfiguracja serwera kompilacji

To z kolei poinstruuje Portage, aby automatycznie utworzył pakiet binarny dla każdego programu, który zainstalujesz na swoim serwerze.

Czytać  Jak kompresować i dzielić pliki w Ubuntu

Stamtąd musisz stworzyć sposób na udostępnianie tych plików binarnych maszynom w Twojej sieci. Aby to zrobić, możesz zainstalować prosty serwer WWW HTTP:

Następnie powiedz lighttpd, aby obsługiwał pakiety twojego serwera, dodając następujący wiersz do swojego „/etc/lighttpd/lighttpd.conf”:

Instalowanie pakietów binarnych w Gentoo

Po wykonaniu tych czynności instalowanie pakietów binarnych z serwera dystrybucji jest prostym, dwuetapowym procesem. Najpierw musisz podać Portage adres swojego serwera dystrybucyjnego:

5 wskazówek Szybkość kompilacji 15 konfiguracji klienta Buildpkg

Stamtąd użyłem Portage do instalacji pakietów binarnych:

Tutaj -K Opcja ta zmusi Portage do szukania tylko binariów pakietu, który chcesz zainstalować.

Robiąc to, sprawdzi serwer, czy ma jakieś kopie programu Firefox. Jeśli Portage nie znajdzie żadnego, instalacja się nie powiedzie. To ostatecznie oznacza, że ​​serwer musi już mieć plik binarny programu, zanim jakikolwiek klient go zażąda.

5. Zoptymalizuj swój kompilator w Gentoo

Na koniec możesz również ustawić Kompilator GNU C (GCC), aby umożliwić optymalizację pod kątem szybkości.

5 wskazówek Szybkość kompilacji 16 Przykładowa kompilacja

Jednak w przeciwieństwie do MAKEOPTS opcje te będą zależeć od posiadanej maszyny. Obejmuje to procesor, a także dysk twardy i pamięć, którą posiadasz.

Ponadto musisz umieścić te opcje w COMMON_FLAGS zmienny. Na przykład:

W tym przypadku są trzy opcje, które możesz ustawić, aby zoptymalizować GCC:

  • ten march opcja mówi GCC, aby skompilował program na żądanym procesorze. W większości przypadków mówisz GCC, aby utworzył program dla twojego lokalnego procesora. Aby to zrobić, możesz podać wartość „native”, a GCC zbuduje dla procesora, na którym aktualnie działa.
  • ten O opcja informuje o poziomie optymalizacji, który chcesz dla swoich programów. Jest to zakres od 0 do 3, a im wyższa wartość, tym szybciej program będzie działał. Jednak zrobienie tego wydłuży czas potrzebny na kompilację.
  • ten pipe opcja to przełącznik, który możesz ustawić, aby przyspieszyć proces kompilacji. Robi to, przechowując obiekty w pamięci RAM zamiast zapisywać je w plikach tymczasowych. W związku z tym zużyje dużo pamięci, a używanie tego z ograniczoną pamięcią RAM spowoduje awarię GCC.
5 wskazówek Szybkość kompilacji 17 opcji optymalizacji

Często Zadawane Pytania

1. Nie mam zmiennej MAKEOPTS ani FEATURES w moim make.conf. Czy moja instalacja Gentoo jest zepsuta?

Nie! To normalne, że domyślny plik make.conf nie zawiera zmiennych MAKEOPTS i FEATURES. Wystarczy dodać zmienne i ich wartości do pliku make.conf, a Portage rozpozna je i natychmiast zastosuje.

2. Czy mogę włączyć CCache tylko dla tych pakietów, które chcę?

Tak! Z łatwością włączasz CCache tylko dla określonych pakietów. Aby to zrobić, musisz najpierw usunąć wartość „ccache” ze swojej zmiennej FEATURES.

Następnie musisz edytować plik „/etc/portage/package.env”. Jest to plik, w którym możesz włączyć funkcje Portage dla poszczególnych pakietów. Wiedząc o tym, jest to plik package.env, który używa CCache dla niektórych programów:

Robiąc to, włączyłem CCache dla Firefoksa, GCC i Clang. Oznacza to, że Portage zapisze tylko pliki obiektowe tych programów i powiązanych z nimi zależności.

3. Czy są jakieś problemy z uruchomieniem serwera dystrybucji Gentoo?

Jednym z głównych problemów związanych z utrzymaniem serwera dystrybucyjnego jest to, że jesteś odpowiedzialny za aktualizowanie pakietów binarnych. Oznacza to, że zanim będziesz mógł aktualizować klientów, musisz najpierw zaktualizować serwer dystrybucji, a następnie usunąć stare pliki binarne z klientów.

Innym problemem związanym z uruchomieniem serwera dystrybucji jest utrata elastyczności flag USE dla komputerów klienckich. Oznacza to, że musisz włączyć flagi, których nie potrzebujesz na wszystkich swoich komputerach.

Kredyt obrazu: Unsplash

Czy ten artykuł jest przydatny?

Zapisz się do naszego newslettera!

Nasze najnowsze samouczki dostarczane prosto do Twojej skrzynki odbiorczej