Znikna ponad 100MB z 4GB RAM na systemie 64b

Mam 4GB RAM, czyli 4096MB jak dobrze policzyć. Na grafikę przydzielam 128MB, czyli zostaje 3968MB.

Teraz podaję wynik poleceń.

xxx@linux-70u8:~> cat /proc/meminfo

MemTotal: 3926576 kB


xxx@linux-70u8:~> free -k

             total used free shared buffers cached

Mem: 3926576 2527596 1398980 0 63612 1660024

3926576 KB = 3834 MB, czyli znika ok 120MB. Jeśli dam 256MB na grafikę to znika ok 140MB. Gdzie tu jest problem?

Wiadomo że przy tej ilości ram zanik ok 2-3% to nic wielkiego, ale jednak coś mi tu się nie kalkuluje.

Pamiętaj, że 4GB to co najwyżej chwyt marketingowy, musiałbyś mieć 4GiB.

Pozdrawiam!

Tzn? Włożę 2 GB i jest ok. Przy 2x2 jest takie coś.

Ja przy 2GB mam 2050860kB (wg free), czyli tak naprawdę 1,95GB. Jeśli masz tak samo, to masz prawdopodobnie nie 4GB, a około 3,90GB, odejmując te 128MB, to by było około 3,75GB (3834/1024 = ~3,75).

3834 + 128 = 3962

3962 * 1024 = 4057088kB (w ten sposób masz marketingowe 4GB).

Pozdrawiam!

Eh, masz lepiej ode mnie. Powinienem mieć 4GB, a mam 3,85GB.

Ja też tak mam. Na windows 7 wykrywa mi elegancko pełne 4 GB a na Xubuntu tyle co tobie. Nie wiem od czego to zależy.

Chodzi o to, że free podaje Ci to w KiB, czyli *1024, a producenci dysków, pamięci etc. stosują GB, czyli *1000.

4GB * 1000 * 1000 / 1024 / 1024 = 3.81 GiB.

Nic nie znika, tylko w innej jednostce jest podawane.

Kurczak, a może w nowych jądrach jest PAE włączone? Tylko jak to sprawdzić?

Free nie uwzględnia m.in. pamięci zajętej przez jądro.

Jeżeli chcesz sprawdzić ile pamięci rozpoznaje Linux i ile jest zarezerwowane (tj. poza zasięgiem dla free i innych programów) wykonaj polecenie:

dmesg | grep Memory

Powinieneś otrzymać coś w rodzaju:

[0.000000] Memory: 2047476k/2096960k available (3081k kernel code, 452k absent, 49032k reserved, 1890k data, 592k init)
xxx@linux-70u8:~> dmesg | grep Memory

[0.000000] Memory: 3847932k/5242880k available (5300k kernel code, 1180484k absent, 214464k reserved, 6126k data, 936k init)

[6.000082] EDAC amd64: This node reports that Memory ECC is currently disabled, set F3x44[22] (0000:00:18.3).

5300k kernel code

214464k reserved

6126k data

936k init

=226826k (~221,5 MiB)

… i już wiadomo gdzie znikło;)

Odnośnie “1180484k absent”, bo pewnie to cię zaciekawi - przytoczę cytat z link:

"absent memory reflects the memory addressing space lost due to memory

holes in the memory map. Typically holes are left for PCI space, IO, etc…

Every vendor model system is different, and every system will have a different

value reported for the absent memory."

PS

W trakcie uruchamiania systemu część z tej zarezerwowanej puli jest zwalniana, by zobaczyć ile:

dmesg | grep freed

W trakcie ładowania dodatkowych modułów itp. ta wartość może się jeszcze trochę zmieniać i nie ma większych powodów do obaw.

To dziwne. U mnie na Ubuntu 11.04 64 bit po wywołaniu polecenia free -k wygląda to następująco:

total used free shared buffers cached

Mem: 4056904 1725372 2331532 0 62508 706376

A jest dostępne 3926576kB (~3834 MB) odliczajac 128MB wraz z odliczeniem na kartę grafiki. Więc nie wiadomo co to policzyło:)

xxx@linux-70u8:~> dmesg | grep freed

[0.485376] Freeing initrd memory: 10600k freed

[1.691643] Freeing unused kernel memory: 936k freed

[1.692171] Freeing unused kernel memory: 824k freed

[1.692492] Freeing unused kernel memory: 332k freed

[3.099101] PM: Basic memory bitmaps freed

Jakieś groszowe sprawy. kijek ,

4056904 KB - 131072 KB na grafikę = 3925832 KB

czyli praktycznie tyle co u mnie.

Jednak śmierdzi mi tu PAE albo czymś, bo widzę że nie tylko ja mam takie coś.

Jak koniecznie chcesz zobaczyć precyzyjne statystyki pamięci - “/proc/meminfo” podejrzyj ten plik. Ale ze znaczeniem wpisów musisz już sobie sam poradzić :stuck_out_tongue:

Edit:

link - częściowo wytłumaczone znaczenie wpisów w meminfo [eng]

Do tego mogę dorzucić polecenie “vmstat” z przełącznikami “-s” lub “-m” wyświetlającymi statystyki odpowiednio pamięci systemu i slab (cache jądra).

vmstat i meminfo dają takie same informacje jak w poleceniu free.

Poddaję się :confused:

Co do PAE -> raczej śmierdzi mi tu MTRR/PAT (może zerknij do “/var/log/mtrr” czy coś tam jest ciekawego?) lub może coś związane z odpowiednikiem “agp aperture” dla karty graficznej PCI-E? Nie wiem w końcu jak rozwiązali ten problem, a nie mam siły do przeglądania takiej ilości manuali…