Pamięć RAM jest tania i znacznie szybsza niż dyski SSD. To jest po prostu niestabilne. Dlaczego więc komputery nie mają dużo pamięci RAM, a po włączeniu zasilania ładują wszystko do pamięci RAM z dysku twardego / SSD i po prostu uruchamiają wszystko stamtąd, zakładając, że nie ma potrzeby utrzymywania niczego poza pamięcią? Czy komputery nie byłyby znacznie szybsze?
Oczywiście obecny system operacyjny może w ogóle tego nie obsługiwać, ale czy jest jakiś powód, dla którego pamięć RAM nie jest używana w ten sposób?
Odpowiedzi:
Istnieje kilka powodów, dla których pamięć RAM nie jest używana w ten sposób:
Powiedziawszy to: Tak, dyski RAM istnieją. Nawet jako karta PCI z gniazdami DIMM i jako urządzenie do bardzo wysokich IOps. (Najczęściej używany w korporacyjnych bazach danych, zanim dyski SSD stały się opcją). Te rzeczy nie są tanie .
Oto dwa przykłady niskiej klasy kart pamięci RAM, które zostały wprowadzone do produkcji:
Zauważ, że jest na to znacznie więcej sposobów niż tworzenie dysku RAM we wspólnej pamięci roboczej.
Możesz:
Jestem pewien, że jest o wiele więcej do opisania, od Amiga RAD: zresetuj ocalałe dyski RAM do IOPS, wyrównywanie zużycia i Gd wie co. Skrócę jednak ten krótki i wymienię tylko jeszcze jeden element:
Ceny DDR3 (bieżąca pamięć DRAM) a ceny dysków SSD:
źródło
RAM loses its contents when powered off.
Mówiąc ściślej, robi to tylko ulotna pamięć RAM, ale nieulotna pamięć RAM zachowuje wszystko nawet po wyłączeniu, na przykład układy Flash . W tym sensie dysk SSD nie różni się od pamięci RAM, ale jest jego podtypem.Systemy operacyjne już to robią z pamięcią podręczną strony :
Gdy czytasz stronę z dysku, system operacyjny ładuje te dane do pamięci i pozostawia je tam, dopóki nie będzie lepiej wykorzystane dla tej pamięci. Jeśli masz wystarczającą ilość pamięci, system operacyjny odczyta każdą stronę tylko raz, a następnie odtąd będzie korzystał z pamięci. Jedynym powodem, dla którego system operacyjny wykona operacje We / Wy dysku, jest to, że musi odczytać stronę, która nie jest jeszcze w pamięci, lub jeśli strona jest zapisana (w takim przypadku prawdopodobnie chcesz ją zapisać na dysku).
Zaletą robienia tego w ten sposób jest to, że nie musisz ładować całego dysku twardego do pamięci, co jest przydatne, jeśli nie zmieści się, a także oznacza, że nie marnujesz czasu na czytanie plików, których nie mają twoje aplikacje potrzeba. Kolejną zaletą jest to, że pamięć podręczną można wyrzucić, gdy system operacyjny potrzebuje więcej pamięci (lepiej, aby odczyt następnego dysku był nieco wolniejszy niż w przypadku awarii programów, ponieważ brakuje pamięci). Przydatne jest również to, że użytkownicy nie muszą ręcznie decydować, co powinno być na ramdysku, czy nie: Cokolwiek użyjesz najczęściej, zostanie automatycznie zapisane w pamięci głównej.
Jeśli masz dużo pamięci, ale aplikacje nie działają tak szybko, jak się spodziewałeś, istnieje spora szansa, że działają wolniej, ponieważ działają bezpiecznie. Na przykład SQLite jest o rząd wielkości szybszy, jeśli powiesz mu, aby nie czekał na zakończenie zapisu, ale twoja baza danych zostanie całkowicie zepsuta, jeśli nie zamkniesz się czysto.
Ponadto
/tmp
jest zwykle ramdyskiem w dystrybucji Linuksa, ponieważ jest ok, jeśli dane zostaną utracone. Nadal trwa jednak debata na temat tego, czy to dobry pomysł, ponieważ jeśli zapisanych zostanie zbyt dużo danych/tmp
, może zabraknąć pamięci.źródło
Jak zauważa Alan Shutko w swoim komentarzu do pytania, pamięć RAM nie jest tak naprawdę tania.
Oto kilka punktów danych. Kiedy szukam w Google 4 GB pamięci RAM, 64 GB SSD i 1 TB HDD (mechaniczny dysk twardy), oto koszty, które widzę (dotyczy 25 sierpnia 2013 r.):
4 GB RAM = 32 USD - 36 USD => RAM = ~ 8 USD za GB
64 GB SSD = 69 USD - 76 USD => SSD = ~ 1 USD za GB
1 TB HDD = 80 USD => HDD = 0,08 USD za GB
Zaraz! Dyski twarde są 100 razy tańsze niż pamięć RAM! A dyski SSD są 8 razy tańsze niż pamięć RAM.
(Plus, jak wskazano w innych odpowiedziach, pamięć RAM jest z natury niestabilna, dlatego potrzebujesz innej formy trwałego przechowywania).
źródło
Wykonuję wszystkie moje natychmiastowe operacje odczytu / zapisu w celu generowania zawartości na dyskach RAM na moim komputerze lokalnym. Przechowuję tam również moje foldery kronikowania MongoDB, a także moje kompilatory i interpretery języka Python oraz standardową bibliotekę. Ten dysk jest zapisywany przy wyłączaniu i przywracany przy starcie. Drugim dyskiem RAM, z którego korzystam, jest 64 megabajty i wszystkie foldery pamięci podręcznej mojej przeglądarki internetowej tam wskazują; ten jest zagubiony po wyłączeniu i spłukuje się, gdy jest pełny.
Użyj odpowiednich narzędzi do pracy, która, jak sądzę, będzie odpowiedzią, którą ci dam. Generuję dane 30-1000x szybciej, używając dysku RAM niż na moim 7200 obr / min Western Digital.
To jest program, którego używam: http://www.romexsoftware.com/en-us/primo-ramdisk/
... a kiedy 32 gram Ram jest mniejszy niż 200 $, nie rozumiem, dlaczego to nie staje się bardziej powszechne.
źródło
Tak, jest to przesłanka wielu baz danych w pamięci, które pojawiają się na rynku. Jednym z przykładów jest SAP HANA. Chodzi o to, że pamięć RAM jest tania i z punktu widzenia wydajności operacje odczytu / zapisu w pamięci RAM są 1000 razy szybsze niż operacje na dysku. Dlatego większość danych jest przechowywana w pamięci RAM, a następnie definiuje się strategię starzenia się danych, w której stare dane są odzyskiwane z powrotem do chłodni (tj. Dysku).
źródło
Krótkie wyjaśnienie :
Przy pierwszym uruchomieniu aplikacja jest przenoszona z dysku twardego lub sieci do pamięci RAM. Więc nie martw się, już to robisz.
Ale zwykle nie ma tylko jednego pliku aplikacji / procesu i są pewne operacje we / wy skierowane na dysk twardy lub sieć (inne pliki aplikacji lub inne operacje we / wy z systemem itp.), Które mogą spowolnić działanie podanie. Mogą być one skierowane na dysk RAM, ale należy wziąć pod uwagę, że dysk RAM usuwa się po wyłączeniu zasilania i powinien zostać ponownie wypełniony podczas uruchamiania.
A pamięć RAM nie jest tak tania, jak przedstawiono w pytaniu. Powinieneś liczyć nie tylko koszt pamięci RAM, ale także koszt działającej pamięci RAM, w tym gniazd na płycie głównej (są one ograniczone / rzadkie, a przez to bardziej cenne) oraz koszt utraconych danych, gdy spada moc.
Na przykład komputer z dyskiem twardym 1 TB można kupić tanio i dotyczy on komputerów domowych, komputer z 1 TB pamięci RAM jest w zasięgu superkomputerów. (ale Intel pracuje nad czymś w środkowej odległości: http://vr-zone.com/articles/more-on-xeon-e5-terabyte-of-ram-even-at-midrange-/14366.html )
źródło
To jest WIELKIE pytanie i uważam, że odpowiedzi są fascynujące. Skomentuję to jako Oracle DBA, a moje odpowiedzi są SZCZEGÓLNE dla bazy danych Oracle. Jest to poważny błąd, który wielu ludzi popełnia podczas pracy z Oracle. Nie jestem pewien, czy dotyczy to również innych aplikacji. To nie ma być poza tematem, ale ma być specjalistyczną odpowiedzią.
Kiedy dostrajasz wydajność za pomocą Oracle, naprawdę chcesz usunąć wąskie gardła. Chociaż większość z nas tego nie mówi, opiera się na teorii ograniczeń: https://en.wikipedia.org/wiki/Theory_of_constraints
Pamięć może nie być twoim wąskim gardłem. Oracle ma złożone mechanizmy zarządzania pamięcią, a samo powiększanie pamięci może faktycznie spowolnić proces, jeśli inne obszary znajdują się w wąskim gardle. Dam wam jeden przykład, który jest BARDZO powszechny.
Zapytania wydają się być powolne. Konsensus jest taki, że jeśli zwiększymy pamięć RAM, powinniśmy zwiększyć czas odpowiedzi na zapytania, ponieważ pamięć jest szybsza niż dysk. Cóż ... Tak Oracle zarządza pamięcią danych. Oracle ma różne lokalizacje pamięci przydzielone do określonych zadań. Możesz więc zwiększyć te wspomnienia. Obszar wykorzystywany na dane nazywa się „pamięcią podręczną bufora”. Jest to seria połączonych list (ich liczba zwykle rośnie z każdą wersją). Za każdym razem, gdy blok zostanie znaleziony na dysku podczas zapytania, uruchamiany jest na nim algorytm mieszania, aby określić, na której liście należy go umieścić. Miejsce umieszczenia na liście jest oparte na algorytmie liczenia dotknięć (wyjaśnione na stronie wsparcia Oracle, więc musisz zapłacić, aby go zdobyć ... to nie jest tak naprawdę ważne).
JEDNAK po uruchomieniu zapytania Oracle wyjmuje zatrzask w łańcuchu buforów, który wyszukujesz w tym czasie. ZATRZASK (uwaga: nie jest to blokada. Google „zatrzask”, jeśli nie znasz różnicy) blokuje wszystkie inne operacje w tym łańcuchu na czas odczytu. Więc blokuje odczytywanie ORAZ zapisuje (jest to zupełnie inne niż Oracle, twierdząc, że blokady nie blokują odczytów).
Jest to konieczne, ponieważ podczas odczytywania bloku w łańcuchu Oracle przesuwa go w zależności od częstotliwości „żądania”. Częściej żądane bloki są przenoszone na górę, a rzadziej żądane bloki są pozostawiane na dole i wyszarzone. Nie możesz mieć 2 sesji czytających połączonej listy i przesuwających się bloków, albo uderzysz wskaźniki wskazujące na nieistniejące lokalizacje.
Zwiększając rozmiar pamięci, zwiększasz rozmiar każdej połączonej listy. Zwiększa to czas potrzebny na odczytanie listy. Pojedyncze słabe zapytanie lub złożone zapytanie może wykonać dziesiątki tysięcy, a nawet miliony odczytów połączonych list. Każdy odczyt jest szybki, ale ich liczba prowadzi do zatrzaśnięć, które zablokują inne sesje. Oracle nazywa to „logicznym we / wy” (lub buforowaniem lub innymi rzeczami. To żargon jest specyficzny dla Oracle i może oznaczać coś innego w innych obszarach IT).
Tak więc, jeśli lista jest dłuższa i masz naprawdę zły SQL, to instrukcje SQL dłużej utrzymają swoje zatrzaski. Zwiększenie pamięci może czasami ZMNIEJSZYĆ wydajność. W większości przypadków tak się nie stanie. Ludzie wydają dużo pieniędzy i nie widzą żadnych korzyści. To powiedziawszy, są chwile, kiedy potrzebujesz więcej pamięci w buforze bufora, ale musisz poprawnie zidentyfikować wąskie gardło, aby wiedzieć, czy jest to właściwe. W tym poście nie mogę omówić, jak to przeanalizować. Zobacz fora DBA. Niektórzy dyskutują na ten temat. To raczej skomplikowane.
Czy ktoś ma konkretne przykłady z innymi programami, w których może się to zdarzyć? Istnieje wspaniała książka biznesowa zatytułowana „The Goal”, która omawia łagodzenie ograniczeń w fabryce. Ten proces jest bardzo podobny do tego, co robią Oracle DBA podczas oceny problemów z wydajnością. Często jest to standardowy odczyt w programach MBA. Czytanie zawodów informatycznych jest bardzo cenne.
https://en.wikipedia.org/wiki/Eliyahu_M._Goldratt
źródło
Pamięć RAM może być tania, ale nie tak tania jak tradycyjne przechowywanie.
Mam dysk twardy o pojemności 3 TB (99 USD): HDD Quote
Będziesz potrzebował 48 z nich za 3 TB w cenie (719 USD): RAM Cytat
To by kosztowało 34 512 USD w porównaniu do 99 USD. Nie wspominając o cenie sprzętu wymaganego do uruchomienia 3 TB pamięci RAM.
źródło
W rzeczywistości jest to realizowane w niektórych scenariuszach. Jeśli masz wystarczająco mały stos systemu operacyjnego / aplikacji, możesz uruchomić go całkowicie w pamięci RAM. Oczywiście ma wszystkie wady, które ma zaakceptowana odpowiedź. Ale jest to możliwe i zdarza się.
Spójrz na Puppy Linux, popularną dystrybucję Linuksa. Ich strona o tym, jak działa, mówi o uruchamianiu z pamięci RAM: http://puppylinux.org/wikka/howPuppyWorks
źródło
Myślę, że na odpowiedź częściowo można odpowiedzieć w następujący sposób:
Przesłanka:
Biorąc pod uwagę ograniczoną liczbę gniazd pamięci, ważnym rozwiązaniem są wyższe układy pamięci o mniejszych wymiarach wewnętrznych i / lub układanie w stosy 3D. Oba procesy postępowały zgodnie z oczekiwaniami w ciągu ostatnich ponad 36 miesięcy.
Pytanie brzmi: „ Maksymalny rozmiar pamięci DDR3 ” lub semantycznie: „ Dlaczego DDR3 nie ma modułów pamięci większych niż 16 GB ”
Odpowiedź brzmi:
Standard DDR3 pozwala na układy o pojemności od 512 megabajtów do 8 gigabitów, skutecznie umożliwiając maksymalny rozmiar modułu pamięci wynoszący 16 gigabajtów ( src )
DDR4 to zmieni, zgodnie z poniższą mapą technologii:
Wynik:
Niektóre zastrzeżenia do dokładnego wpisu Hennesa:
pkr298
zakłada, że cały system operacyjny i programy są ładowane do pamięci RAM, a nie, że powinna znieść dysk twardy / SSDźródło
Właściwie masz rację W najbliższej przyszłości cała pamięć i pamięć będą miały postać nano-ram. NRAM jest w zasadzie „mechanicznymi” przełącznikami o szerokości kilku atomów, nie potrzebuje prądu do utrzymania stanu, więc jest energooszczędny i nie wymaga chłodzenia, a ponieważ przełączniki są tak małe, gęstość jest bardzo wysoka i jest to dobre z dwóch powodów, po pierwsze, dostęp do pamięci jest bardzo szybki i będziesz mieć terabajty danych na małych urządzeniach, takich jak telefon komórkowy. jeśli chcesz przeczytać więcej, zobacz to: http://www.nantero.com/mission.html i ten http://en.wikipedia.org/wiki/Nano-RAM
źródło
Jak powiedzieli inni, pamięć RAM jest niestabilna i kosztuje około 10 razy więcej niż koszt dysków SSD.
Istnieje jednak JEST produktem tam, że jest zbliżona do tego, co opisujesz - niestety nie pamiętam nazwy.
Co to jest dysk oparty na pamięci RAM (IIRC max 64 GB) w połączeniu z kartą CF i baterią. Po włączeniu systemu kopiuje zawartość karty CF do pamięci RAM (uważam, że obsługujące żądania z karty CF, jeśli jeszcze nie zostały załadowane). Po wyłączeniu zawartość pamięci RAM jest kopiowana na kartę CF- - bateria jest wystarczająco duża, aby pozwolić na jej zakończenie przed wyczerpaniem.
To nie jest tanie.
źródło