Czy jest sens używania Prelink?

11

Przez lata, używając różnych Linuksa, przyzwyczaiłem się do rytualnego używania wstępnego linku, aby przyspieszyć ładowanie aplikacji.

Jednak zalety uruchamiania wstępnego linku są negowane za każdym razem, gdy pakiet jest instalowany ponownie, ponieważ wszystkie jego zależności i osoby na nim zależne muszą zostać ponownie połączone.

To wstępne linkowanie może powodować wiele problemów, a jednym z nich jest binarne unieważnienie MD5, które jest problematyczne dla rzeczy, które porównują MD5 z poprzednimi wersjami lub używają MD5 do ustalenia, czy plik binarny został zmieniony, a zatem nie chce się go wyczyścić po usunięciu pakietu .

Ostatnio komputery stały się znacznie szybsze, a wydajność prelinkowania nie jest obecnie zauważalna.

Czy używanie prelink jest nadal racjonalną koncepcją, czy może można go odrzucić i pozostawić jako coś z minionej epoki?

Kent Fredric
źródło

Odpowiedzi:

4

Nie możesz go przeczytać do 23 lipca 2009, chyba że subskrybujesz LWN.net, ale może okazać się przydatny http://lwn.net/Articles/341244/ .

David Pashley
źródło
Następnie możesz podać „link do subskrybenta” do tego artykułu.
wazoox
5
Zawsze źle się czuję, używając linków subskrybentów. Jakbym je oderwał czy coś.
David Pashley,
2
Zgadzam się. Nie mam nic przeciwko udostępnianiu linków subskrybentów do bezpośrednich kontaktów (znajomych lub współpracowników), gdy napotkam interesujący artykuł, ale publikowanie go publicznie jest błędem.
Christopher Cashell
1

Nie powiedziałbym, że należy go arbitralnie odrzucić, ale zdecydowanie powiedziałbym, że jego użycie powinno być nieco bardziej przemyślane.

Na nowoczesnym komputerze wyższej klasy, który jest często aktualizowany, prelink może nie być użyteczną optymalizacją. Jednak nadal istnieje wiele przypadków, w których warto byłoby z niego skorzystać. Na przykład na starszym lub niższym komputerze lub na komputerach, które są dość statyczne i nie doświadczają częstych zmian ani aktualizacji. Może być również opłacalne, jeśli masz dużą liczbę programów uruchamianych wielokrotnie (mogę pomyśleć o kilku sytuacjach, w których możesz mieć programy uruchamiane w krótkich odstępach czasu lub równolegle, gdzie wstępne linkowanie może poprawić wydajność).

Podsumowując, musisz wziąć pod uwagę swoją konkretną sytuację, a następnie zdecydować, czy korzyści przewyższają dodatkową pracę i wysiłek.

Christopher Cashell
źródło
1
„duża liczba programów uruchamianych wielokrotnie” - w takiej sytuacji pliki binarne i biblioteki znajdą się w pamięci podręcznej systemu plików. Jedyne, co pomogłoby w prelinkowaniu, to jeśli jesteś tak głodny pamięci, że masz bardzo mało dostępnej pamięci podręcznej fs
Daniel Lawson
2
Łącze wstępne przyspieszy uruchomienie programu, nawet jeśli program jest przechowywany w pamięci podręcznej systemu plików. Trzeba przyznać, że po buforowaniu programu (i powiązanych bibliotek) wzrost wydajności jest mniej zauważalny. Jednak w zależności od szybkości uruchamianych programów kilka mikrosekund może się sumować, aby w końcu coś zmienić.
Christopher Cashell
1

Powiedziałbym, że prelink jest zdecydowanie przydatny na serwerach dla wielu użytkowników, takich jak na przykład serwery LTSP używane w szkołach i kafejkach internetowych. Prelinkowanie nie tylko przyspiesza ładowanie aplikacji, ale także poprawia wykorzystanie pamięci RAM i przeładowanie dysku ze względu na rywalizację między użytkownikami, umożliwiając wielu innym jednoczesnym użytkownikom na serwerze.


źródło
0

Myślę, że ceny spadające pamięci stają się coraz mniej przydatne. Jeśli nadal chcesz nieco przyspieszyć, możesz przejrzeć wstępne ładowanie .

Nick Anderson
źródło
Próbowałem wstępnie załadować, po prostu zauważyłem, że spowolniło to uruchamianie, podczas gdy siedział tam i żuł oba rdzenie robiąc to samo. I również z jakiegoś powodu, którego nie rozumiem, spowodował śmierć X podczas rozruchu. Ponadto, jeśli często się nie restartujesz, wstępne ładowanie przestaje być przydatne.
Kent Fredric
0

Decyzję pozostawiam wersji systemu operacyjnego. Jeśli domyślnie system operacyjny decyduje się na regularne wywoływanie prelink za pomocą crona, może być dobrze, że nie jest to tak przydatne. Mam nadzieję, że twórcy dystrybucji zastanowili się, zanim domyślnie dodadzą / usuną opcję wstępnego linkowania. Więc wybieram się z nimi, zamiast samodzielnie analizować różne rzeczy.

Saurabh Barjatiya
źródło
er, nie jest tak naprawdę domyślny, to pakiet, który musisz zainstalować, a jeśli nie zostanie zainstalowany, nie dostaniesz prelinkowanych rzeczy. Jeśli jest zainstalowany, ma tendencję do tworzenia skryptu cron, który jest domyślnie wyłączony, który należy ręcznie włączyć.
Kent Fredric
Jest to domyślnie włączone fedora, domyślnie wyłączone. Został przeniesiony na 19, ale nie jest wyłączony. Tak było od Fedory 6 lub 7.
Saurabh Barjatiya
0

Gentoo używa prelink. Obchodzą problem z md5sum, ignorując informacje o prelinku obliczające skrót.

Prelink zawsze zapewnia zwiększenie prędkości, chociaż może być coraz mniej zauważalny, gdy sprzęt staje się szybszy. Jedynym sposobem, aby wiedzieć na pewno na swoim sprzęcie, jest wyłączenie wstępnego linku i sprawdzenie, jak lubisz spowolnienie uruchamiania aplikacji.

Sidenote: OS X również kiedyś robił formę wstępnego linkowania, ale zostało to porzucone na rzecz połączonej pamięci podręcznej, którą link utrzymuje. Najlepsze z obu światów, bez zmian binarnych i bez rzeczywistych kosztów ogólnych w porównaniu do normalnego łączenia. Mam nadzieję, że Linux w pewnym momencie podejmie ten pomysł :)

Aktualizacja: I niedawno próbował prelinkowania na Linuksie , a dla zestawiania Cscope z wielu plików i procesów Mam zwiększenie prędkości o 5%.

w00t
źródło
1
To naprawdę nie ... jej jeszcze coś trzeba zainstalować i skonfigurować, mówię to dlatego, że ja używam Gentoo. I nie możesz dokładnie „wyłączyć” prelink, możesz tylko przestać uruchamiać prelink lub przejść i rozpakować cały system. Ponadto, z jakiegoś powodu, o którym mi nie wiadomo, paludis ma problemy ze wstępnie połączonymi plikami binarnymi i bez haka cofania wstępnego link (nieobsługiwanego) pozostawia pliki binarne za sobą, powodując cruft. Niedawno odkryłem kilka aplikacji KDE, które zostały pozostawione z tyłu, zanim zainstalowałem hak, i były na drodze przed nowymi w innym miejscu, powodując seg
Kent Fredric
Możliwe, że włączenie optymalizacji linkera (-Wl, -O1) ¸ i nowe zmiany w alokacji gnu-hash są bardziej zbliżone do tego, do czego OSX się przeniósł, co jest być może bardziej efektywnym wyborem.
Kent Fredric
Muszę przyznać, że minęło trochę czasu odkąd użyłem Gentoo ... Od tego czasu przeszedłem na OS X :). Pamiętam test, który raz zrobiłem na OS X: uruchom wszystkie aplikacje na raz i to w tym czasie (około 1 minuty iirc). Następnie usuń wszystkie informacje o łączu wstępnym i ponownie uruchom wszystkie aplikacje. Tym razem zajęło to 5 minut ... To było w 2005 roku na wieży Mac, prawdziwej bestii.
w00t,
1
W przeciwieństwie do twojego pomysłu, że przyspieszanie wstępnego linkowania może stać się mniej zauważalne: prawdopodobnie staną się ważniejsze, ponieważ programy gwałtownie zwiększają użycie bibliotek ładowanych w środowisku wykonawczym. Gvim z 2009 roku wykorzystał 55 bibliotek uruchomieniowych. Jeden z 2 lat temu użył 73. „mount” z 2009 roku użył 7, mount od dzisiaj, używa 10 z 4 z nich w / usr / lib64 i 6 w / lib64 ... więc się rozwijają, stają się większe i bardziej rozproszone . - tak jak zawsze - gdy tylko HW przyspieszy, SW staje się znacznie bardziej skomplikowany, aby pochłonąć doładowanie.
Astara
@astara to prawda, ale wzrost wykorzystania biblioteki nie jest tak szybki jak wzrost dysku twardego i szybkości pamięci.
w00t