Jak zapobiec zawieszeniu się systemu podczas wyrzucania (z pamięci RAM)?


11

Mam 8 GB pamięci RAM, ale czasami uruchamiam kilka maszyn wirtualnych i wystarczającą liczbę procesów Chrome, aby zużyć większość mojej pamięci. Zwykle jest to w porządku, ale czasami mój system zaczyna się psuć i trudno mi się z niego zregenerować bez czekania na poprawę, ponieważ interfejs użytkownika jest w większości zamrożony.

We wszystkich tych przypadkach programy wykorzystujące większość mojej pamięci RAM mogły zostać zdeprioryzowane. Jeśli Chrome lub maszyna wirtualna przestałyby reagować, ale moje środowisko graficzne i terminal nadal odpowiadały, mógłbym przełączyć się na terminal, znaleźć winowajcę i go zabić. Mogłem sobie wyobrazić coś w rodzaju „ładnego” dla pamięci (tak, że mogłem fajnie Chrome i moją maszynę wirtualną) lub czegoś, co zmusiłoby środowisko graficzne i mój terminal do pozostania w pamięci i nie zamiany.

Czy istnieje sposób, aby zapewnić, że interfejs użytkownika pozostanie responsywny, gdy mój system jest wstrząsany?

Dzięki!

EDYCJA: Nadal interesuje mnie, czy istnieje coś takiego jak pamięć, ale właśnie odkryłem, że mój system nie ma miejsca na wymianę. Myślę, że tak się stało, ponieważ zacząłem używać zaszyfrowanego domu i zaszyfrowanej wymiany (zobacz Zamień nie działa na czystej instalacji 14.04 przy użyciu zaszyfrowanego domu ). Więc mój system prawdopodobnie przestaje odpowiadać, ponieważ nie mam żadnej przestrzeni wymiany, więc mój system nie może wymieniać niepotrzebnych programów, gdy zaczyna brakować pamięci.


Wygląda na to, że znalazłeś przyczynę problemu (nie przydzielono wymiany) - czy chcesz teraz wiedzieć, jak skonfigurować szyfrowaną wymianę? Może mógłbyś edytować pytanie lub rozpocząć nowe pytanie.
thomasrutter,

1
Nadal interesuje mnie styl w stylu RAM, ponieważ miałem problemy podobne do opisanych w moim pytaniu, nawet gdy miałem plik wymiany.
Sam King,

Odpowiedzi:


2

Właśnie odkryłem, że mój system nie ma miejsca na wymianę

Jeśli to prawda, to prawdopodobnie przyczynia się do problemu.

Dzięki użyciu wielu maszyn wirtualnych z dużymi przydziałami pamięci ilość pamięci RAM, która normalnie byłaby wystarczająca do normalnego użytkowania (8 GB), zaczyna być ciasna, co oznacza, że ​​Twój system nie będzie w stanie zużywać tyle pamięci podręcznej i będzie chciał wymienić . Teraz, jeśli nie masz zamiany, będzie jeszcze większa presja na pamięć i możesz nawet zabić zadania z powodu braku pamięci.

Swap próbuje poprawić ogólną stabilność i wydajność w sytuacjach takich jak ta, którą opisałeś, poprzez ponowne przydzielenie niektórych przydzielonych, ale rzadko używanych danych w pamięci na dysk, zwalniając pamięć na dane, których używasz. Dodanie wymiany, jeśli rzeczywiście jej nie masz, pomoże. Jednak pod względem wydajności znacznie poprawisz sytuację, jeśli kupisz więcej pamięci RAM lub zużyjesz mniej.

W systemie, w którym używasz maszyn wirtualnych, ale używasz również zwykłego pulpitu na hoście maszyny wirtualnej, nie chcesz, aby maszyny wirtualne zajmowały całą pamięć RAM, w rzeczywistości zaoszczędziłbym połowę pamięci RAM (do 4 GB ) dla hosta, biorąc pod uwagę, że na nim działa oprogramowanie i chcesz, aby było ono responsywne.

Zauważ też, że maszyny wirtualne mają nieodłączną nieefektywność nie tylko dlatego, że ich pamięć RAM jest całkowicie oddzielna, nie współużytkują pamięci podręcznej ani buforów, ale działają z całym oddzielnym systemem operacyjnym pod wieloma warstwami abstrakcji. Dzięki temu zawsze możesz uzyskać lepszą wydajność, jeśli zdecydujesz się uruchomić coś na hoście, a nie na maszynie wirtualnej - chociaż jeśli chcesz używać maszyn wirtualnych, to używać innych systemów operacyjnych, nie będzie to możliwe.

Czy istnieje sposób, aby zapewnić, że interfejs użytkownika pozostanie responsywny, gdy mój system jest wstrząsany?

Kiedy ilość pamięci RAM jest problemem, wszystko, co możesz zrobić, to tylko włamanie - prawdziwym rozwiązaniem jest zakup większej ilości pamięci RAM (chociaż w twoim przypadku, jak wspomniałem, możesz być w stanie po prostu przydzielić mniej do maszyn wirtualnych).

Twoje pytanie jest proste: chcesz, aby interfejs użytkownika mógł nadal działać płynnie, nawet jeśli IO jest zatłoczony. Jednak trudno jest odpowiedzieć. Twój system będzie już to robił najlepiej jak potrafił: operacje, które nie wymagają dostępu do dysku, nie będą opóźniane. Jeśli „interfejs użytkownika się zacina”, to dlatego, że określony proces odpowiedzialny za ten interfejs użytkownika potrzebuje dostępu do dysku. W sytuacji niskiego poziomu pamięci i gdy dysk jest przeładowany, nawet coś, co normalnie będzie trywialne - takie jak czytanie konfiguracji z katalogu domowego w celu ustalenia preferencji wyświetlania - może być powolne z powodu wyczerpania pamięci podręcznej dysku.

Mógłbym sobie wyobrazić coś w rodzaju „fajnego” dla pamięci (aby móc ładnie Chrome i moją maszynę wirtualną)

Tak naprawdę nie ma „miłego dla pamięci”. Dostęp do pamięci jest tak szybki, że zwykle można go praktycznie zignorować. Kiedy masz thrash, to nie pamięć, to dysk, to jest problem. Z tego powodu istnieje „jonizacja”. Chociaż prawdopodobnie nie to poleciłbym dla twojego problemu.

Innym przybliżonym odpowiednikiem „przyjemnego dla pamięci” jest zamiana - nie możesz kontrolować, jak bardzo każdy proces jest niezadowalający indywidualnie, ale system wykonuje całkiem niezłą robotę, sprawdzając, które procesy aktywnie używasz, i dlatego należy zachować wyższy priorytet BARAN.

Ale, jak powiedziałem i jak jest złotą zasadą, jeśli kończy Ci się pamięć RAM, to zakup większej ilości pamięci RAM jest rozwiązaniem z najmniejszymi problemami i wadami.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.