Wady korzystania z wstępnego ładowania? Dlaczego nie jest domyślnie uwzględniony?

110

Chciałbym wiedzieć, jakie są wady korzystania preload? Jeśli nie byłoby żadnych wad, preloadbyłoby domyślnie włączone, więc myślę, że są pewne.

Dobra, potrzebujesz trochę więcej pamięci RAM, ale większość ludzi ma zdecydowanie więcej pamięci RAM niż potrzebuje Ubuntu - więc jakie są wady korzystania preload?

Paradiesstaub
źródło
6
Dziękuję za przydatne pytanie. Chcę wiedzieć, czy to mit?
Saeed Zarinfam,
1
użycie procesora i bateria mogą być wadą niektórych ... bugs.launchpad.net/ubuntu/+source/preload/+bug/481861
Mateo
1
Miłe pytanie. Niektóre dystrybucje są fabrycznie załadowane, na przykład podstawowy system operacyjny (to jest to, co uruchamiam na moim laptopie, ponieważ gala jest znacznie szybsza niż jedność Ubuntu).
1
Tylko zgadnij: Jednym z powodów niewłączenia go domyślnie jest fakt, że nie można go używać we wszystkich systemach (jego wymagania sprzętowe mogą różnić się od wymagań standardowych).
don.joey
2
brainstorm.ubuntu.com/idea/1122 post tutaj sugeruje, że „działa jako demon z uprawnieniami roota”. Co może być problemem bezpieczeństwa, jest też ta burza mózgów, która chce domyślnie włączyć brainstorm.ubuntu.com/idea/14092
Mateo

Odpowiedzi:

65

Mówiąc najprościej, Preload nie jest dla wszystkich. Jest to świetne, jeśli często otwierasz aplikacje lub biblioteki. Jest to szkodliwe, jeśli ładujesz aplikacje lub biblioteki tylko od czasu do czasu. Wykorzystam dwa przykłady z mojego faktycznego użycia (i tak, używam wstępnego ładowania).

Po pierwsze, Google Chrome. Teraz przeglądarka jest otwierana tylko raz na rozruch, a może dwa razy (dla mnie jestem programistą). Chrome i powiązane z nim biblioteki pozostają w pamięci, ponieważ zawsze go używam. Nawet kiedy zamknę wszystkie chromowane okna, nadal działa w tle. Tak więc wszystkie pamięci RAM przeznaczone do przechowywania wstępnie załadowanej kopii Chrome są całkowitą i całkowitą stratą. Nigdy nie jest (lub rzadko) rozładowywany. Dla przeciętnego użytkownika jest to prawdą w przypadku dużej liczby aplikacji. Użytkownik pakietu Office prawie zawsze będzie miał otwartą aplikację e-mail. Małe oszczędności czasu uruchamiania są więc całkowicie zmarnowane, ponieważ otwierają aplikację e-mail tylko raz dziennie i pozostawiają ją otwartą.

Drugi przykład to rake. Jako programista rubinowy, który wierzy w testowanie, uruchamiam rake TON. grabie przebiega, działa przez kilka sekund - minuty, a następnie wychodzi. Wstępne ładowanie pomaga mi przyspieszyć moją codzienną pracę, ponieważ z wyprzedzeniem ładuje prowizję i potrzebne biblioteki (które mogą być bardzo obszerne). Jest więc wiele startów i zatrzymań do uruchomienia prowizji. Dodatkowy taran używany do przyspieszenia 400 lub 500 uruchomień grabi w ciągu kilku godzin jest całkowicie tego wart.

Dlatego domyślnie nie jest włączony, ponieważ jego zdolność do poprawiania wydajności zależy w dużej mierze od sposobu korzystania z systemu. Dla niektórych osób będzie to negatywne, a dla innych pozytywne.

Wreszcie, po wstępnym załadowaniu, nawet jeśli go nie używasz, zużywa pamięci RAM. Więc jeśli nie uruchamiasz często aplikacji, możesz faktycznie spowolnić cały system, nie udostępniając tego RAM-a dla innych typów buforowania. Pamiętaj, że nawet jeśli masz 32 GIG RAM, Linux spróbuje wykorzystać jego jak najwięcej do buforowania danych, aby przyspieszyć twoją interakcję. Używając wstępnego ładowania, zmniejszasz trochę tę wolną pamięć. Nawet jeśli jest to tylko trochę, 2 sekundy, które zaoszczędziłeś na uruchomieniu Chrome 1, może kosztować cię 60 sekund w ciągu miesiąca, w którym działa.

Coteyr
źródło
1
Ponadto użycie wstępnego ładowania spowalnia uruchamianie. Im więcej rzeczy jest wstępnie załadowanych, tym dłużej trwa uruchomienie systemu. Teraz wyobraź sobie, że wszystko, co chcesz zrobić, to uruchomić komputer, napisać zdanie na notatce i zaraz potem zamknąć. Będziesz czekał, aby nawet móc napisać notatkę, ponieważ Twój system ładuje rzeczy najprawdopodobniej niezwiązane z tym zadaniem. Tak więc w pewnym sensie wstępne obciążenie (ogólnie) jest mieczem obosiecznym.
F-3000,
1
Wstępne ładowanie tak naprawdę nie działa w ten sposób ... Daje wskazówki jądra, takie jak: „hej, załaduj to do swojej pamięci podręcznej, gdy będziesz na miejscu, będę go wkrótce potrzebować” i jądro to robi. Więc tak naprawdę nie używa pamięci RAM, jak to opisujesz. Mogą się zdarzyć dwie rzeczy: Po załadowaniu do pamięci podręcznej wypychane są aplikacje, które wkrótce będą używane - co powoduje krótkie zawieszenie i aktywność dysku twardego po powrocie do aplikacji.
hurikhan77
1
Po drugie: jeśli wstępne ładowanie przewiduje nieprawidłowy wzorzec użytkowania (co może się zdarzyć w przypadku ciągle ładowanych aplikacji), buforuje rzeczy, które później zostaną ponownie wypchnięte z pamięci RAM, a z kolei samo wypchnie pamięć podręczną z pamięci RAM, którą mogłeś mieć lepsze wykorzystanie dla. Ale w końcu „zużywa” ona pamięć RAM, podobnie jak pamięć podręczna systemu plików vfs - tak więc jest to w rzeczywistości możliwa do odrzucenia pamięć RAM, a tym samym „wolna pamięć RAM”. Jednak podczas pisania konkuruje on z „normalną pamięcią podręczną”.
hurikhan77
1
Biorąc pod uwagę powyższe coteyr i @ hurikhan77, zgadzasz się, że Wstępne ładowanie jest przeciwnie skutecznym sposobem na poprawę postrzeganej prędkości w starszych, o niskiej pamięci RAM (~ 800 MB za darmo po uruchomieniu) komputerów stacjonarnych. Aktywacja FYI Preload w tak odnowionych pudełkach da menedżerowi pamięci wirtualnej jądra dużo pracy przy niewielkiej poprawie?
tuk0z
2
@lliseil Jeśli te 800 MB to naprawdę nieprzydzielona pamięć RAM, wstępne ładowanie może pomóc ... Ale prawdopodobnie działa lepiej z większą ilością pamięci RAM. A to z kolei oznacza: Wstępne ładowanie spowoduje konflikt z aplikacjami wymagającymi dużej ilości pamięci, które możesz uruchomić później. Konieczne może być obniżenie swapiness, co prawdopodobnie spowoduje, że wstępne ładowanie stanie się bezużyteczne, gdy tylko zużyjesz zbyt dużo pamięci RAM.
hurikhan77
21

Pytanie zadane przez bountier Saeed Zarinfam w dniu 5 września 2012 r .:

Cześć wszystkim, chcę wiedzieć, czy to mit? Czy [wstępne ładowanie] naprawdę poprawia moją wydajność? Jakie są wady korzystania z niego? Mam laptopa o tej specyfikacji (procesor Core i5, 4 GB pamięci RAM, dysk twardy 128 GB SSD). Dziękuję bardzo.

  • Jeśli masz dysk SSD , nie ma potrzeby wstępnego ładowania
    • Wynika to z faktu, że dyski SSD zapewniają znacznie szybsze czasy losowego dostępu niż dyski twarde, więc „wstępne ładowanie” plików binarnych / zależności w pamięci jest marnotrawstwem, IMO
    • Podstawowym minusem jest to, że wstępne ładowanie „korzysta” z dodatkowej pamięci, nie zapewniając wymiernej korzyści.
ish
źródło
20
Nie obejmuje to pytania OP, ponieważ istnieją jakieś wady korzystania z wstępnego ładowania? Po drugie, sformułowałeś opinię, wypowiedziałeś się na temat „wstępnego ładowania”, a następnie wprowadziłeś do równania „SSD”. W którym momencie zamierzałeś odpowiedzieć na pytanie?
Ringtail,
12

Wstępne ładowanie to „adaptacyjny demon readahead”, który działa w tle systemu i obserwuje najczęściej używane programy, buforując je w celu przyspieszenia ładowania aplikacji. Korzystając z Preload, możesz sprawić, by nieużywana pamięć RAM działała dobrze i poprawić ogólną wydajność systemu stacjonarnego.

Nie oczekuj od razu drastycznej zmiany wydajności. Ponadto, jeśli po prostu powtarzasz otwieranie / zamykanie aplikacji, komputer i tak będzie przechowywać te pliki w pamięci podręcznej (jest to nazywane „ciepłym” ładowaniem), więc nie zobaczysz żadnej różnicy w szybkości. Jednak zobaczysz poprawę prędkości, jeśli na przykład używasz programu sporadycznie; programy te uruchomią się szybciej niż bez Preload.

Wstępne ładowanie może znacznie poprawić czas uruchamiania aplikacji; ponieważ większość współczesnych maszyn ma sporo pamięci, Preload dobrze wykorzystuje tę pamięć RAM. 1

Teraz powiedziawszy, wydaje się, że wstępne ładowanie jest świetnym narzędziem, i może być.

Myślę, że powodem, dla którego nie jest fabrycznie załadowany do systemu operacyjnego, jest to, że użytkownik musi dokładnie wiedzieć, co tam robi, i mieć wystarczające doświadczenie, aby móc z niego korzystać, a system musi mieć wystarczającą ilość pamięci RAM.

W bardziej technicznym aspekcie wstępne ładowanie działa poprzez przeniesienie danych z dysku twardego do pamięci RAM, co powoduje, że większość dysków twardych przechodzi w tryb uśpienia, jeśli nie jest używany, a następnie w razie potrzeby musi zostać ponownie uruchomiona. Tak więc obracanie w górę / w dół napędu spowoduje zwiększenie liczby cykli ładowania / rozładowania oraz zwiększenie czasu włączania, co skróci żywotność napędu.

Zaprojektowaliśmy i wdrożyliśmy wstępne ładowanie, adaptacyjny schemat pobierania wstępnego oparty na Markovie, który działa na podstawie prognoz na poziomie aplikacji. Co więcej, wstępne ładowanie jest implementowane w przestrzeni użytkownika i nie zmienia środowiska wykonawczego aplikacji w żadnym sensie. Jest to pierwsza praca eksperymentująca z pobieraniem systemu plików na tym poziomie, o ile wiemy.

Nasze wyniki eksperymentalne pokazują obiecującą poprawę czasu uruchamiania aplikacji w porównaniu do zimnych pamięci podręcznych oraz przyzwoity współczynnik trafień w porównaniu z naiwnym algorytmem przewidywania.

Jednak przebywanie w przestrzeni użytkownika stanowi poważne przeszkody w uczynieniu wstępnego ładowania konkurencyjnym rozwiązaniem problemu z czasem uruchamiania. W szczególności brak pełnej informacji o żądaniach We / Wy aplikacji oraz brak silnych kanałów komunikacji z podsystemem pamięci podręcznej strony drastycznie obniżają efektywność wstępnego ładowania, szczególnie w ciasnych warunkach pamięci.

Innym nieodłącznym problemem związanym z projektem obciążenia wstępnego jest duża wariancja i niska pewność przewidywania spowodowana relatywnie luźną korelacją start-upów aplikacji. Chociaż z powodzeniem budujemy model do śledzenia korelacji aplikacji, fakt, że uruchamianie aplikacji jest bardzo rzadkim zdarzeniem w porównaniu ze skalą czasową, na której pracują komputery, schemat pobierania na poziomie aplikacji jest skazany na zużycie ogromnej pamięci pobierania wstępnego przez praktycznie nieskończone okresy czasu. Tej pamięci można użyć do poprawy krótkotrwałego zachowania pamięci podręcznej.

Wreszcie, opracowaliśmy zestaw rekomendacji dla programistów systemów, w jaki sposób poprawić czas rozruchu, czas logowania i czas uruchamiania aplikacji bez powrotu do preselektora zintegrowanego z podsystemem pamięci podręcznej w jądrze. Oczywiście, preetcher oparty na plikach w jądrze może być dodatkowo ulepszony. 2)

1 Źródło: techthrob

2 Źródło: Wstępne ładowanie - Adaptacyjny demon pobierania wstępnego autorstwa Behdada Esfahboda - Praca dyplomowa złożona zgodnie z wymaganiami dotyczącymi stopnia magistra - Absolwent Wydziału Informatyki - University of Toronto Copyright (c) 2006 autorstwa Behdad Esfahbod.

Mitch
źródło
1
Dziękuję za odpowiedź, Mitch. To też były moje myśli. Problemem może być zwłaszcza wstępne ładowanie laptopów. Ale nadal chciałbym znaleźć oficjalne źródło / dyskusję na temat tego, dlaczego zespół Ubuntu zdecydował się nie wysyłać preload.
Glutanimate
9

Wady Nie ma żadnych!

Zwiększona wydajność otwierania aplikacji przez użytkownika. Używam go od lat w moich systemach, a także „z wyprzedzeniem” i nie mam problemów. Strona błędów wstępnego ładowania również nie sugeruje żadnych wad.

Preload monitoruje aplikacje, które użytkownicy Uruchom i analizując te dane, przewiduje co aplikacje użytkownicy mogą uruchamiać i pobiera te pliki binarne i ich zależności w pamięci do szybszego uruchamiania.

Nieznacznie wydłuża to czas rozruchu, jednak zmniejszenie prędkości pobierania aplikacji znacznie przekracza ten mały problem.

zobacz artykuł

Jeśli ciągle korzystasz z popularnych aplikacji, takich jak Firefox lub Gimp , zauważysz znacznie lepsze czasy ładowania. Wstępne ładowanie to demon, który działa dyskretnie w tle i nie zakłóci w żaden sposób twojego pulpitu. Użytkownicy Ubuntu mogą zainstalować wstępne ładowanie za pomocą:

sudo apt-get install preload

Wyniki:

Wykres pokazujący różnicę między startem normalnym a napięciem wstępnym

ref

Ringtail
źródło
3
Wiem, co to dawkuje i przeczytałem kilka „wstępnych instrukcji”, ale nigdzie nie mogłem przeczytać o wadach. Jeśli nie byłoby żadnych wad, byłby domyślnie wysyłany z wieloma dystrybucjami Linuksa - ale o ile mi wiadomo - tak nie jest.
Paradiesstaub,
1
Wydajność nie jest zmniejszana , ale zwiększana . Taki jest sens używania wstępnego ładowania. Może to tylko literówka.
Marco
2
Twój schemat wygląda świetnie, ale brakuje w nim ważnych informacji. W 100% zmieściłoby się w prezentacji Powerpoint sprzedawcy, ale jest to przykład „złych statystyk”. Skąd pochodzą te liczby? Jakiego protokołu użyto do ich zarejestrowania? Co to jest pojedyncza migawka? Ile maszyn brało udział w próbie? Jaki był sprzęt? Jak skonfigurowano program wstępnego ładowania?
1
@Ringtail: Masz rację. Nie jesteś autorem tego schematu. Ale jeśli klikniesz wszystkie linki w artykułach, przejdziesz na stronę Techthrob.com, na której powinien znajdować się artykuł napisany przez autora programu. Ale ta strona zniknęła. Jest więc tylko źródło: teza autora.
2
Należy zaktualizować sprzęt, jeśli uruchomienie terminalu gnomów zajmuje więcej niż 2 sekundy ...
Peter and the wolf