Zwiększanie (lub zmniejszanie) pamięci dostępnej dla procesów języka R.

123

Chciałbym zwiększyć (lub zmniejszyć) ilość pamięci dostępnej dla R. Jakie są metody osiągnięcia tego?

medriscoll
źródło

Odpowiedzi:

64

Z:

http://gking.harvard.edu/zelig/docs/How_do_I2.html ( kopia lustrzana )

Użytkownicy systemu Windows mogą otrzymać komunikat o braku pamięci w języku R.

Jeśli masz już zainstalowane oprogramowanie R, a następnie zainstalujesz więcej pamięci RAM, może być konieczne ponowne zainstalowanie R w celu wykorzystania dodatkowej pojemności.

Możesz również ustawić ilość dostępnej pamięci ręcznie. Zamknij R, a następnie kliknij prawym przyciskiem myszy ikonę programu R (ikona na pulpicie lub w katalogu programów). Wybierz `` Właściwości '', a następnie wybierz zakładkę `` Skrót ''. Poszukaj pola `` Cel '' i po cudzysłowach zamykających wokół lokalizacji pliku wykonywalnego R. dodaj

--max-mem-size = 500 M.

jak pokazano na poniższym rysunku. Możesz zwiększyć tę wartość do 2 GB lub maksymalnej ilości zainstalowanej fizycznej pamięci RAM.

Jeśli pojawi się błąd, że R nie może alokować wektora o długości x, zamknij R i dodaj następujący wiersz do pola `` Cel '':

--max-vsize = 500M

lub odpowiednio. Zawsze możesz sprawdzić, ile pamięci R jest dostępne, wpisując znak zachęty R.

memory.limit()

co daje ilość dostępnej pamięci w MB. W poprzednich wersjach R trzeba było użyć: round(memory.limit()/2^20, 2).

BobbyShaftoe
źródło
7
Zwróć uwagę, że w 32-bitowym systemie Windows R może używać tylko do 3 GB pamięci RAM, niezależnie od tego, ile zainstalowałeś. W REvolution Computing dostępna jest 64-bitowa wersja R dla Windows, która działa na 64-bitowym systemie Windows i może wykorzystywać całą dostępną pamięć RAM: revolution-computing.com/products/revolution-enterprise.php
David Smith
6
Tylko dwie uwagi: (i) memory.limit () działa tylko w systemie Windows, oraz (ii) polecenie, które zwróci poprawną odpowiedź jest okrągłe (memory.limit (), 2) - przynajmniej w mojej wersji R ( 2.8.1).
medriscoll
31
Jakieś sugestie, jak uzyskać podobne informacje jak memory.limit () działając na Linuksie?
exl
5
Strona internetowa już nie istnieje. Trudno mi to śledzić bez obrazów. Na przykład nie widzę karty „Skrót”. Czy możesz również użyć tego do zmniejszenia maksymalnej pamięci?
blakeoft
6
A co z użytkownikami komputerów Mac? Czy możemy coś z tym zrobić?
Alfredo Lozano
52

Użyj memory.limit(). Możesz zwiększyć wartość domyślną za pomocą tego polecenia,memory.limit(size=2500) , gdzie rozmiar jest w MB. Aby naprawdę to wykorzystać, musisz używać wersji 64-bitowej.

Inną sugestią jest używanie obiektów wydajnych pod względem pamięci, gdy tylko jest to możliwe: na przykład użyj macierzy zamiast data.frame.

Shane
źródło
3
Naprawdę nie rozumiem, jak to działa. Napotkałem ten problem z limitem pamięci i otrzymałem błąd „Osiągnięto łączną alokację 8182Mb”. Używam 64-bit z 8 GB pamięci RAM, więc wydawało mi się, że jestem SOL. Jednak dla shiggles ustawiłem memory.limit (size = 50000) ... I DZIAŁAŁO! Ale dlaczego???
leśnik
2
Wiem, że to ma 7 lat, ale próbuję zmniejszyć ilość pamięci RAM, z której może korzystać R, ale za każdym razem, gdy próbuję zmniejszyć wartość, otrzymuję ten komunikat (mam 12 GB pamięci RAM na 64-bitowym komputerze z systemem Windows) . Komunikat ostrzegawczy: In memory.limit (4095): nie można zmniejszyć limitu pamięci:
ignored
7

Microsoft Windows akceptuje każde żądanie pamięci z procesów, jeśli można to zrobić.

Nie ma ograniczeń co do ilości pamięci, którą można udostępnić procesowi, z wyjątkiem rozmiaru pamięci wirtualnej.

Rozmiar pamięci wirtualnej to 4 GB w systemach 32-bitowych dla dowolnych procesów, niezależnie od liczby uruchomionych aplikacji. Dowolny proces może przydzielić do 4 GB pamięci w systemach 32-bitowych.

W praktyce system Windows automatycznie przydziela niektóre części przydzielonej pamięci z pamięci RAM lub pliku stronicowania w zależności od żądań procesów i mechanizmu pliku stronicowania.

Ale innym ograniczeniem jest rozmiar pliku stronicowania. Jeśli masz mały plik stronicowania, nie możesz przydzielić dużych pamięci. Według firmy Microsoft można zwiększyć rozmiar pliku stronicowania, aby mieć więcej miejsca w pamięci.

Izaak
źródło
5
  1. Kup więcej pamięci RAM
  2. Przełącz się na 64-bitowy system operacyjny. Połącz z punktem 1.
Dirk Eddelbuettel
źródło
23
Kup więcej pamięci RAM (i przełącz się na inny system operacyjny) nie jest ogólnie odpowiednim rozwiązaniem.
om-nom-nom
17
Jasne, tak samo jak praca nad mniejszymi problemami, które są odpowiednie dla danego problemu. Pragnienie rozwiązania zwykle też go nie daje.
Dirk Eddelbuettel
2

Aby zwiększyć ilość pamięci przydzielonej do R, możesz użyć memory.limit

memory.limit(size = ...)

Lub

memory.size(max = ...)

O kłótniach

  • rozmiar - numeryczny. Jeśli NA zgłasza limit pamięci, w przeciwnym razie poproś o nowy limit w Mb. Tylko wartości do 4095 są dozwolone w 32-bitowych kompilacjach języka R, ale zobacz „Szczegóły”.
  • max - logiczne. Jeśli PRAWDA, podawana jest maksymalna ilość pamięci uzyskanej z systemu operacyjnego, jeśli FAŁSZ, ilość aktualnie używanej, jeśli nie dotyczy limitu pamięci.
Tiago Martins Peres 李大仁
źródło