Zagadka pamięci RAM: ile pamięci RAM naprawdę potrzebujemy?

click fraud protection

Ponieważ urządzenia z Androidem zaczynają zmierzać w kierunku 6 GB pamięci RAM, musimy zadać sobie pytanie: Ile pamięci RAM naprawdę potrzebujemy? Podążaj za nami podczas eksploracji!

Niedawno usłyszeliśmy zapowiedzi jednego z pierwszych smartfonów z Androidem i 6 GB pamięci RAM.

6 cholernych GB! To dużo pamięci RAM w urządzeniu mobilnym.

Rozpoczęcie gry liczbowej polega na Vivo Xplay5 Elite. Vivo jako firma może nie jest zbyt dobrze znana poza Chinami, ale trzeba przyznać, że w przeszłości wyprodukowała kilka naprawdę cienkich smartfonów. W Xplay5 Elite starano się zmieścić wiele specyfikacji w urządzeniu, które ma wyróżniać się wśród królów.

Vivo Xplay 5 Elite jest wyposażony w podwójnie zakrzywiony wyświetlacz QHD Super AMOLED o przekątnej 5,43 cala, umieszczony na metalowej ramce korpusu. Wewnątrz znajduje się najnowszy układ Qualcomm Snapdragon 820 SoC o taktowaniu 2,15 Ghz, procesor graficzny Adreno 530, 6 GB pamięci RAM LPDDR4 i 128 GB pamięci bez możliwości rozbudowy. Jeśli chodzi o aparat, tylny to czujnik Sony IMX298 16 MP z przysłoną f/2.0, a przedni to 8 MP. Biorąc pod uwagę te specyfikacje i metaliczną konstrukcję urządzenia, nie powinno być zaskoczeniem, że będzie to sporo kosztować nawet dla chińskiego konsumenta. Przy cenie 4288 CNY (660 USD) jest to z pewnością chiński okręt flagowy, a nie niedrogi produkt ze średniej półki.

Vivo Xplay5 Elite nie jest obecnie jedynym smartfonem z 6 GB pamięci RAM. Mniej znany i nowo założony chiński producent OEM, Vernee, zamierza zapewnić konsumentom większą dostępność gigantycznych ilości pamięci RAM, wprowadzając na rynek urządzenie średniej klasy, Vernee Apollo.

Vernee Apollo będzie wyposażony w wysokiej klasy SoC MediaTek, Helio X20. Do dyspozycji będzie wspomniane 6 GB RAM-u, 128 GB pamięci wewnętrznej, tylny aparat Sony IMX230 o rozdzielczości 21 MP i 5,5-calowy wyświetlacz 2K. Z tym wszystkim Apollo miałby kosztować 399,99 dolarów. W przesłanych nam informacjach prasowych nie było żadnej wzmianki o chińskiej cenie ani rynkach docelowych, więc telefon nadal pozostaje dość tajemniczy.

Oba te telefony aż proszą się o zadanie pytania, prawda naprawdę potrzebuję tyle pamięci RAM teraz?

Aby odpowiedzieć na to pytanie, musimy zrozumieć, jak Android radzi sobie z zarządzaniem pamięcią i pamięcią RAM. Mishaal wykonał fantastyczną robotę, wyjaśniając zawiłości zarządzania pamięcią w Androidzie poprzedni artykuł, który sześć miesięcy później nadal pozostaje aktualny.

"Sposób, w jaki Android radzi sobie z zarządzaniem pamięcią, jest następujący: zamiast natychmiastowo zabijać każdy proces po zakończeniu jego działania (np po naciśnięciu przycisku Home w celu wyjścia z aplikacji) proces jest przechowywany w pamięci do czasu, aż system będzie musiał go zakończyć, aby zwolnić więcej pamięci. W jaki sposób system decyduje, które procesy zachować, a które zabić? Sterownik LMK (Low Memory Killer). Każdemu procesowi przypisana jest wartość oom_adj w zakresie od -17 do 15 przez usługę ActivityManager, która dynamicznie dostosowuje wartość oom_adj w zależności od ważności procesu. Wyższe wartości oom_adj oznaczają, że istnieje większe prawdopodobieństwo, że proces zostanie zabity w celu zwolnienia pamięci, natomiast niższe wartości oznaczają mniejsze prawdopodobieństwo zakończenia procesu."

"Android kategoryzuje każdy proces na pięć kategorii (Pierwszy plan, Widoczny, Usługa, Tło i Pusty), od najważniejszego do najmniej ważnego dla dalszego działania. Procesy należące do każdej kategorii są wyłączane przy różnych poziomach pozostałej wolnej pamięci (zwanej wartością minfree LMK). Na przykład, jeśli wartości LMK minfree Twojego urządzenia są ustawione na „2560,4090,6144,7168,8192” (wymienione jako strony o wielkości 4 tys., które można odczytać z /sys/module/lowmemorykiller/parameters/minfree), wówczas Twoje urządzenie zabije procesy zdefiniowane jako „Puste”, gdy ilość wolnej pamięci spadnie poniżej 32 MB, procesy zdefiniowane jako „W tle”, gdy ilość wolnej pamięci spadnie poniżej 28 MB, oraz aplikacje na pierwszym planie, gdy ilość wolnej pamięci spadnie poniżej 10 MB (niebiosa broń!) Te wartości minfree nie są obecnie typowe na większości urządzeń, ponieważ producenci uwielbiają je dostosowywać do własnych upodobań, w zależności od tego, jak ich zdaniem najlepiej pasuje do ich urządzenia. Ale z tego krótkiego wyjaśnienia powinieneś wyciągnąć wniosek, że im więcej masz wolnej pamięci, tym mniejsze jest prawdopodobieństwo, że krytyczne procesy zostaną wyłączone."

Jak wspomina Mishaal, rzeczywiste wartości różnią się w zależności od producenta OEM, więc możesz mieć różne doświadczenia z wielozadaniowością na różnych telefonach o podobnych specyfikacjach. Kolejną zmienną w tym zestawie jest ilość oprogramowania typu bloatware na urządzeniu. Mocno zmodyfikowane systemy Android UX, takie jak TouchWiz, zwykle zawierają wiele funkcji wykraczających poza system Android oparty na magazynie AOSP i jako taki wymaga przydzielenia znacznie większej ilości zasobów systemowi, aby działał na poziomie wymaganym przez producenta OEM to do. Pozostawia to mniej miejsca na buforowanie aplikacji innych firm, co z kolei pogarsza utratę pamięci.

Głównie Miękki

"Główna różnica między urządzeniem z 2 GB pamięci RAM a urządzeniem z 3 GB pamięci RAM polega na tym, że urządzenie z 3 GB pamięci RAM powinno być w stanie buforować więcej procesów w tle bez uruchamiania sterownika LMK w celu jego wyłączenia."

Teoretycznie więc więcej pamięci RAM dostępnej na poziomie sprzętowym powinno skutkować pozostawieniem większej liczby procesów w pamięci podręcznej na poziomie systemu operacyjnego i większą pulą, z której może korzystać producent OEM. Jednak najczęściej nawet na urządzeniach z 2 GB pamięci RAM widać znacznie więcej wolnej pamięci RAM, nawet gdy system i aplikacje korzystają z tego, czego potrzebują. Oto ta sama galeria z postu Mishaala, porównująca wolną pamięć RAM na różnych urządzeniach:

Jak widać, urządzenia z najlżejszym interfejsem użytkownika, takie jak Nexus 5 i Nexus 6, mają największą część wolnej pamięci RAM dostępnej w urządzeniu. Nawet najcięższy ze wszystkich, Samsung Galaxy Note 5 z 4 GB pamięci RAM i TouchWiz na start, ma około 1,7 GB pamięci RAM dostępnej do buforowania aplikacji. Nawet przy tak dużej puli wolnej pamięci RAM Note 5 miał problemy z wielozadaniowością, w wyniku której urządzenie uciekało się do agresywnej obsługi pamięci. Było to spowodowane wyborem przez producenta OEM wartości LMK: wpompowanie większej ilości pamięci RAM na poziomie sprzętowym nie pomoże! Poprawka dla Note 5 poprawiająca wielozadaniowość w rzeczywistości polegała na poprawieniu tych wartości LMK, aby były większe przyjazny dla wielozadaniowości niż standardowe ustawienia Samsunga, co jest ironią losu w przypadku urządzenia, na którym się skupiono wydajność. W związku z tym samo posiadanie większej ilości pamięci RAM nie sprawi automatycznie, że urządzenie będzie bardziej przyjazne dla wielozadaniowości.

Wracając ponownie do galerii, część wyświetlanej wolnej pamięci RAM jest już wykorzystana do buforowania procesów aplikacji, ale część pozostaje w rzeczywistości bezczynna i nic nie robi. Oto kilka zrzutów ekranu z mojego OnePlus One pokazujących wyświetlaną wolną pamięć RAM, a następnie podział na pamięć podręczną i bezczynną pamięć RAM:

Nawet w przypadku, gdy wyjście z aktywnej gry i wybranie opcji wyświetlania procesów zapisanych w pamięci podręcznej zajęło mi ~1 sekundę, system starał się zmniejszyć faktycznie używaną pamięć RAM. Stało się tak, ponieważ gra, w tym przypadku NFS No Limits, miała zmieniony priorytet, przechodząc z procesu na pierwszym planie do procesu w tle. Zrobiono to, aby zapewnić płynne działanie systemu operacyjnego, ponieważ pamięć RAM przy aktywnym użyciu została zmieniona z 2,5 GB na 1,9 GB, a proces gry NFS No Limits był buforowany. Ponieważ priorytet gry uległ zmianie, można ją teraz zabić, jeśli system operacyjny faktycznie potrzebuje więcej wolnej pamięci RAM. Nie jest tu wymagana żadna interakcja z użytkownikiem.

Celem tego przykładu było podkreślenie, jak ewoluowało zarządzanie pamięcią w systemie Android, aby było bardziej efektywne w ustalaniu priorytetów systemu i wszystkich jego procesów. Tylko określona liczba aplikacji pozostanie w pamięci podręcznej w dowolnym momencie: w idealnym przypadku system operacyjny nie wykorzystuje całej wolnej pamięci RAM w procesach buforowania. Część wolnej pamięci RAM pozostaje bezczynna. Jest to zgodne z projektem, na wypadek sytuacji, gdy proces może wymagać bardzo szybkiego zwiększenia wykorzystania pamięci RAM.

Istnieje również ograniczenie alokacji pamięci RAM dla procesów aplikacji, zgodnie z definicją producenta OEM dla poszczególnych telefonów. Według stary post w dyskusji autorstwa Dianne Hackborn, inżynier ds. platformy Android, istnieją ograniczenia dotyczące Kopia Java gdzie będą znajdować się obiekty Java przed zainicjowaniem zbierania śmieci, ale nawet to można rozszerzyć dzięki sprytnemu wykorzystaniu NDK. Krótko mówiąc, oznacza to, że istnieje maksymalny limit pamięci RAM dostępnej dla dowolnej aplikacji, która chce działać na tym urządzeniu. W przypadku starszych urządzeń wielkość tej sterty została ustawiona na 24 MB, ale w przypadku nowszych urządzeń rozmiar został zwiększony ze względu na zwiększenie ilości pamięci RAM w urządzeniach oraz zwiększone wymagania sprzętowe. Androida Dokument definicji kompatybilności Do Androida 6.0 wspomina (sekcja 3.7) minimalne wartości, jakie te sterty powinny ustawić przez producenta OEM. Dla porównania, mój OnePlus One na CM12.1 może pochwalić się limitem 192 MB dla normalnych stert maszyn wirtualnych Dalvik i pozwala na aż 512 MB dla aplikacji, które w manifeście aplikacji określają Android: LargeHeap=true. Teoretycznie pojedyncza aplikacja może wykorzystać maksymalnie 512 MB pamięci RAM na moim urządzeniu. Poza tym zostanie zainicjowane zbieranie elementów bezużytecznych, aby zapewnić swobodny przepływ innych niezbędnych procesów systemowych.

Teraz połącz limit rozmiaru sterty dla aplikacji z przypisanymi do nich wartościami LMK na podstawie ich priorytetu i System operacyjny nalega, aby zachować pewną ilość wolnej pamięci RAM w trybie bezczynności, i możesz sobie wyobrazić, jak wielozadaniowość Androida Pracuje. To złożony mechanizm, który obejmuje wiele zmiennych pomiędzy sprzętem, oprogramowaniem i samą aplikacją; dostrojony, aby umożliwić działanie nawet najbardziej podstawowym urządzeniom, jednocześnie umożliwiając najlepszym z flagowców pełne wykorzystanie ich potencjału, teoretycznie. Praktycznie nie jest to świat idealny, więc ani jedno, ani drugie nie ma miejsca. Oznacza to, że nie ma gwarancji, że urządzenie z 4 GB pamięci RAM będzie działać tak samo jak inne z 4 GB pamięci RAM. Nie oznacza to również, że dodatkowy GB pamięci RAM powyżej pewnego progu zapewni wprost proporcjonalny wzrost wielozadaniowości i obsługi pamięci.

Praktyczne i przyszłościowe

Wracając więc do pierwotnego pytania, czy na początku 2016 roku naprawdę potrzebujesz 6 GB pamięci RAM w swoich urządzeniach? Dla mnie odpowiedź brzmi: nie.

Większość posiadanych przeze mnie urządzeń ma 3 GB pamięci RAM LPDDR3, a jedno ma 4 GB pamięci RAM. Po prostu nie ma zauważalnej różnicy w wydajności, jeśli chodzi o wielozadaniowość. Oto demonstracja wielozadaniowości z mojej ostatniej recenzji OnePlus X, urządzenie z 3 GB pamięci RAM i zbliżoną do standardowej pamięci ROM Androida:

Urządzenie nie miało problemów z przełączaniem między 12 aplikacjami (13, jeśli liczyć aktywny rejestrator ekranu) bez konieczności zabijania żadnej z tych aplikacji. Nie było ponownego ładowania ani przerysowywania, a to doświadczenie pozostaje zaskakująco spójne podczas codziennego użytkowania, bez ponownego uruchamiania lub ręcznego zabijania aplikacji. Zwykły konsument po prostu nie ma potrzeby aktywnego przełączania się między wieloma aplikacjami podczas praktycznego użytkowania!

Ale co, jeśli użytkownik chce zamiast tego przełączać się między tymi wieloma grami? Uzgodniono, że czynniki wymienione powyżej wejdą w grę, umożliwiając w najlepszym przypadku przełączanie się między tylko kilkoma grami. W takim stanie posiadanie większej ilości fizycznej pamięci RAM umożliwiłoby urządzeniu bierne przechowywanie w pamięci większej liczby gier. Jednak kontrapunktem tej zalety jest to, że wiele gier często wymusza ponowne ładowanie podczas wykonywania wielu zadań jednocześnie! Ich intencją jest uniknięcie oszukańczych mechanizmów polegających na manipulowaniu danymi gry podczas jej działania, więc ponowne załadowanie/ponowna synchronizacja/odświeżenie wymusza ponowne sprawdzenie integralności. Ich intencje są inne, ale to sprawia, że ​​wiele gier jest kiepskimi kandydatami do wielozadaniowości.

Jest jeszcze kilka czynników, które powstrzymują Cię przed korzystaniem z całej tej wspaniałej pamięci RAM. Jeśli rzeczywiście znajdziesz zadanie/kilka zadań, które wymagają łącznie 6 GB pamięci RAM LPDDR4 Twojego urządzenia, będziesz mieć znacznie większe wąskie gardło w postaci mobilnego SoC. To prawda, że ​​Snapdragon 820 i Helio X20 mogą być flagowymi procesorami swoich firm, ale nadal są to mobilne SoC. W związku z tym mają inne ograniczenia, takie jak wytwarzanie i rozpraszanie ciepła, dławienie termiczne i akumulator życia, co spowodowałoby, że byliby złymi wyborami w przypadku zadań wystarczająco intensywnych, aby zużywać tak dużo pamięci RAM przez dłuższy czas czas. W takich przypadkach lepiej będzie skorzystać z systemu, który nie jest przeznaczony do trzymania w dłoni; taki, który ma bardziej liberalne ograniczenia dotyczące generowanego ciepła i energii, jaką może zużywać.

Ostatecznie, niezależnie od tego, ile masz wolnej pamięci RAM, aplikacje i tak będą usuwane. Tak właśnie działa zarządzanie pamięcią. Duże wykorzystanie pamięci RAM nadal ma zalety, na przykład pomocne może być dalsze zwiększenie rozmiaru sterty zasilanie zasobów bitmapowych na wyświetlaczach o wyższej rozdzielczości, co pozwala nam wyjść poza rozdzielczości QHD na naszych urządzeniach. Zwiększony rozmiar sterty jako trend na rynku doprowadzi do powstania aplikacji, które mogą chcieć zrobić więcej. O ile pamięć RAM nie zostanie zablokowana jako nietykalna, zawsze znajdzie się dla niej takie czy inne zastosowanie. Biorąc jednak pod uwagę, że na flagowcach ekrany pozornie oscylują pomiędzy 1080p a 1440p, możemy uznać 4 GB za rozsądny standard na kolejny rok lub dwa.

Podsumowując, możemy odpowiedzieć na pytanie: czy my naprawdę potrzebuję tyle pamięci RAM teraz? Nie, nie. W przypadku urządzeń, dla których cena jest jednym z czynników, które muszą utrzymywać na niskim poziomie, 3 GB lub 4 GB pamięci RAM będą im wystarczające. W przypadku flagowców, na które zapotrzebowanie ze strony użytkowników nie przywiązuje tak dużej wagi do cen, nie zaszkodziłoby to przyszłościowe zabezpieczenie. Jako klient pamiętaj, że nie będziesz jeszcze wykorzystywać całej pamięci RAM.

Co sądzicie o telefonach z 6 GB RAM? Daj nam znać, co myślisz w komentarzach poniżej!