Nie widzi calego RAM-u

Gdy jakieś urządzenie nie chce w Slackware działać...

Moderatorzy: Moderatorzy, Administratorzy

Goofi
Użytkownik
Posty: 23
Rejestracja: 2005-04-29, 20:57

Nie widzi calego RAM-u

Post autor: Goofi » 2009-10-01, 23:11

Witam,

Wrzucilem dzisiaj do serwerka nowy RAM w ilosci 8G (4x2G), pracuja teraz w dualu. W Biosie i przy starcie pokazuje ladnie pelna ilosc. Po odpaleniu Slacka...

Kod: Zaznacz cały

cat /proc/meminfo
MemTotal:        3823764 kB
...
Po wyjeciu polowy kosci pokazuje to samo :(
Co jest grane i co zrobic by korzystal ze wszystkiego co mu zaladowalem? :???:

Pajaczek
Użytkownik
Posty: 1439
Rejestracja: 2006-08-03, 13:16
Lokalizacja: Winny Gród

Re: Nie widzi calego RAM-u

Post autor: Pajaczek » 2009-10-01, 23:23

Wersja Slacka?? 32 czy 64bit? Jajko domyślne?

Na początek przeczytaj TO

Goofi
Użytkownik
Posty: 23
Rejestracja: 2005-04-29, 20:57

Re: Nie widzi calego RAM-u

Post autor: Goofi » 2009-10-01, 23:34

Pajaczek pisze:Wersja Slacka?? 32 czy 64bit? Jajko domyślne?
Wersja current 32 bity choc moglo by byc 64 bo procek to QC :)
Pajaczek pisze:Na początek przeczytaj TO
Ehm, jajko niekompilowane, chyba bede musial to nadrobic...

[ Dodano: 2009-10-02, 01:32 ]

Kod: Zaznacz cały

uname -r
2.6.29.6-smp
kawalek configa

Kod: Zaznacz cały

...
CONFIG_HIGHMEM4G=y
# CONFIG_HIGHMEM64G is not set
...
Zmiana na

Kod: Zaznacz cały

...
# CONFIG_HIGHMEM4G is not set
CONFIG_HIGHMEM64G=y
...
pomoze? ;)

Awatar użytkownika
mina86
Moderator
Posty: 3314
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 4.x x86_64
Kontakt:

Re: Nie widzi calego RAM-u

Post autor: mina86 » 2009-10-04, 12:49

Pomoże, a w ogóle nie uname -r tylko uname -mp.

Musisz pamiętać, że na 32-bitowym systemie z włączonym HIGHMEM64G aplikacje nadal będą miały do dyspozycji maksymalnie 3GiB przestrzeni adresowej.
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną. :: Post generated automatically by A.I. system called “mina86” in response to the previous one. :: Tiny Applications

Awatar użytkownika
ondreyos
Użytkownik
Posty: 331
Rejestracja: 2007-11-01, 17:31
Lokalizacja: Poznań

Re: Nie widzi calego RAM-u

Post autor: ondreyos » 2009-10-05, 15:41

mina86, a moze w takim razie kojarzysz (zeby nie bylo - pytam z ciekawosci, nie jest to zadne czepianie sie itp) - po co wprowadzono do jadra obsluge wiecej niz 4GB? z tego co pamietam, to ta opcja jest juz do daaaaawna (grubo przed wprowadzeniem do powszechnego uzycia prockow 64bit). czy jest to uklon w strone innych architektur, czy moze jest jakis sposob obejscia ograniczenia systemu 32bitowego? bo na chlopski rozum - skoro dopiero nowoczesne procesory moga od kilku lat z tym wspolpracowac, to sa dwie mozliwosci - albo jest tu jakis blad w rozumowaniu, albo inne architektury (znacznie bardziej rozbudowane niz zwykly PC) mogly juz wczesniej taka ilosc pamieci ugryzc.

i jeszcze jedna sprawa - piszesz, ze "aplikacje nadal beda mialy" - czy to jest celowe wprowadzenei rozroznienia na aplikacje i "cos innego" - np. jadro, sterowniki czy cokolwiek, co nie bedac aplikacja, bedzie moglo korystac z dodatkowej pamieci, czy po prostu tak ci sie napisalo ale nie ma w tym zadnych ukrytych znaczen ;) ?
Ostatnio zmieniony 2009-10-05, 15:42 przez ondreyos, łącznie zmieniany 1 raz.

Awatar użytkownika
mina86
Moderator
Posty: 3314
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 4.x x86_64
Kontakt:

Re: Nie widzi calego RAM-u

Post autor: mina86 » 2009-10-05, 19:20

HIGHMEM64G wykorzystuje rozszerzenie procesora o nazwie (o ile dobrze pamiętam) Physical Address Extension (w świecie Windowsów nazywa się to Windows Address Extension chyba). Rozszerzenie to pozwala na zaadresowanie 64GiB pamięci fizycznej nadal jednak wirtualna przestrzeń adresowa jest 32-bitowa zatem ciągle istnieje ograniczenie 4GiB w kontekście jednego procesu (do tego dochodzi ponadto tzw. "split", który dodatkowo zmniejsza pamięć dostępną dla procesów do 3GiB albo mniej).

Co do rozróżnienia na "aplikacje" i "coś innego" to jest to celowe. Jądro dzieli pamięć wirtualną na przestrzeń użytkownika oraz przestrzeń jądra. Domyślnie, dla systemów 32-bitowych, podział jest na granicy 3 GiB, ale można go zmienić (na 2 lub 1 GiB) kompilując jądro.

W konsekwencji, nawet jeżeli masz 4 GiB (czy nawet więcej) RAM-u aplikacja nie będzie w stanie wykorzystać całej pamięci. Ponadto, ponieważ jądro musi mieć możliwość dostania się do całej pamięci którą zarządza poprzez swoją przestrzeń adresową to z wyłączoną obsługą pamięci wysokiej może obsłużyć maksymalnie niecałe 900 MiB (zakładając domyślny podział 3/1).

Wynika to z faktu, iż bez obsługi pamięci wysokiej jądro mapuje pamięć fizyczną na sztywno w swojej przestrzeni adresowej. Dodatkowo potrzebuje jeszcze trochę ponad 100 MiB na własne potrzeby i dlatego ma dostęp do niecałych 900 MiB RAM-u.

Warto tutaj wspomnieć, że zmieniając granicę podziału można obejść problem z nieobsługiwaną częścią pamięci. Przykładowo jeżeli mamy jeden czy półtorej GiB RAM-u możemy ustawić podział na 2/2 i wówczas cała nasza pamięć będzie obsłużona. Nie można oczywiście zapominać, iż wiąże się to z kosztami w postaci zmniejszenia przestrzeni dostępnej dla programów. Może się to okazać krytyczne, gdy weźmiemy pod uwagę, że pamięć wirtualna jest niejako pofragmentowana i dzielona z kodem, bibliotekami dzielonymi, stosem, kopcem itp. W konsekwencji może się okazać, że aplikacja nie będzie w stanie zaalokować pojedynczego bloku o rozmiarze 500MiB.

Z włączoną obsługą pamięci wysokiej pamięć jest mapowana w zależności od potrzeby dzięki czemu jądro może obsłużyć pełne 4 GiB. Rzecz jasna konieczność modyfikacji tablic stron wiąże się z kosztem, ale jak mus to mus... Co więcej, PAE niesie za sobą dodatkowy koszt w postaci dodania kolejnego poziomu wskaźników w tablicy stron, co wydłuża czas odczytu jeżeli dany adres wirtualny akurat nie znajduje się w cache'u MMU.
Ostatnio zmieniony 2009-10-05, 19:41 przez mina86, łącznie zmieniany 1 raz.
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną. :: Post generated automatically by A.I. system called “mina86” in response to the previous one. :: Tiny Applications

Awatar użytkownika
ondreyos
Użytkownik
Posty: 331
Rejestracja: 2007-11-01, 17:31
Lokalizacja: Poznań

Re: Nie widzi calego RAM-u

Post autor: ondreyos » 2009-10-08, 17:52

dzieki za wyczerpujaca odpowiedz :)

tak w skrocie - powiedz, czy dobrze zalapalem. w systemach 32bitowych przy wkompilowanej w jadro opcji highmem, system widzi cala dostepna pamiec, ale z racji ograniczen adresowania, dla pojedynczego procesu/aplikacji dostepne jest jedynie nieco ponad 3GB. czyli na chlopski rozum - jeden proces nie przekroczy tego ograniczenia, ale sumarycznie wszystkie procesy moga wykorzystywac wiecej, niz te 3GB (i jeszcze jedno pytanie - czy cala dostepna pamiec, czy tez jest jakies ograniczenie?).

Awatar użytkownika
mina86
Moderator
Posty: 3314
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 4.x x86_64
Kontakt:

Re: Nie widzi calego RAM-u

Post autor: mina86 » 2009-10-08, 20:40

Nie "jedynie nieco ponad 3GB" tylko dokładnie 3GiB -- pojedyncza aplikacja więcej nie zaadresuje, ale oczywiście wiele aplikacji może już wykorzystać całą pamięć (zakładając rzecz jasna, iż płyta główna wraz z BIOS-em pozwalają zaadresować całą pamięć fizyczną, ale na to jądro nie ma już wpływu).
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną. :: Post generated automatically by A.I. system called “mina86” in response to the previous one. :: Tiny Applications

ODPOWIEDZ