[megoldva] Oprendszer csak 3.2 GB RAM-ot lát a 4-ből

Fórumok

Sziasztok,
nem tudom ezt jó helyre írom-e és azt sem, hogy kérdezte-e már ezt valaki.
Ha nem jó helyre írom, akkor bocs és megköszönöm az eligazítást, ha pedig már kérdezte valaki, akkor megköszönném a linket.

Kérdésem az lenne, hogy miért lehet az, hogy debian etch amd64 standard gyári kernellel (2.6.18-6) 2.8-as 64 bites pentium d procival, foxconn intel 945g+ich7 chipsettel (gyártó szerint 4 giga ram-ot támogat) 4GB ramból csak kb 3.2-őt lát. Legalábbis a /proc/meminfo -ban a MemTotal bejegyzésnél 3341872 kB-ot látok.
4 db egyforma 1GB-os ram van benne. BIOS a legfrissebb és nincs benne olyan beállítás, hogy "enable memory remapping / reallocate". Semilyen kiegészítő kártya nincs benne. Ha 3 GB ram-al indítom a gépet akkor pár MB híján látja az összeset.
Általam eddig olvasott fórumokon állítják, hogy ez alaplap (chipset) probléma, de normális magyarázatot nem találtam rá sehol.

Előre is köszi mindenkinek a segítséget.

Hozzászólások

Hát én ezt úgy értem, hogy minden architektúrához (az x86-os-hoz, mips-eshez, alpha-hoz) van egy standard gyári kernel. Meg felteheted a testing kernelt is és forgathatsz magadnak sajátot, vagy letöltheted a legfrissebbet a krenel.org-ról, stb. Ha felteszel egy amd64-es debiant akkor az "standard gyári kernellel" települ és ha simán csak apt-get upgrade-el frissítesz, akkor a standard gyári kernelnek lesz fent a legújabb verziója, de 64 bites lesz nem?

ennyire ne legyel mar lusta rakeresni:
http://en.wikipedia.org/wiki/HighMem
http://en.wikipedia.org/wiki/Physical_Address_Extension
roviden osszefoglalva:
a 32 bites cimterben nem csak a RAM-nak kell cimezhetonek lenni, hanem minden periferianak (videokartya memoriatol kezdve az irq-k es egyeb nyalanksagok altal lefoglalt cimterrel egyutt).
ilyenkor a 32-bites cimtartomanybol "kilogo" ter mindig a RAM-bol veszik el (logikus hogy nem a tobbi periferia szorul ki).
megoldas lehet a fent emlitett PAE ami virtualis 36bites cimter, amivel nemi teljesitmenyvesztes aran 64GB-osra no a cimter, vagy a 64 bites cpu+os amivel ugye 64biten tud cimezni a proci.

Tyrael

mi a fenének kell a processzor által címezhetőnek lenni egy eszköz memóriájának? azt címezze az eszköz. sztem semmi köze a cpunak ahhoz, h egy hddben mennyi cache van vagy mekkora rom van egy hálókártyán.
btw, a wiki szerint a pae az azért van, h 4GB-nél több memóriát lehessen használni 32bites procival, nem azért, h a meglevő négyet ki lehessen használni.

Olvassátok el ezt, bár nincs kellően részletezve a dolog, de használható.
Itt le van írva, hogy a linux a kernel memóriakezelésének sajátosságai miatt annó natívan csak 1 GB fizikai memóriát tudott kezelni 32 bites rendszeren.
http://lwn.net/Articles/75174/
Később különböző változtatásokat vezettek be pont emiatt, de ezek használata mind némi teljesítményveszteséggel jár.
Ennek ahhoz sztem nem sok köze van, hogy különböző hardvare eszközöknek is szüksége van szeletekre a fizikai memóriából.

jo, akkor kezdjuk az alapoknal:
http://en.wikipedia.org/wiki/Address_space
ha a cpu vezerel mindent, akkor szerinted hogy tudna hivatkozni 1-1 eszkozre, ha nincs benne az altala cimezheto terben?

pae valoban azert van, hogy 4GB-rol 64GB-re, de mivel ezek a szamok az address space-re vonatkoznak, ezert 4GB ram kihasznalasahoz mar 4GB-nal nagyobb address space kell.

Tyrael

Engem is piszkál ez a 4GB probléma, de nem értem egészen a probléma forrását, hiszen az a 32 nem az a 32!

Világosítson fel valaki, miért lenne a (mostani) intel prociknak 32Bites címbusza?
Az, hogy a CPU 32bit-es annak, ehhez (gyakorlatilag a probléma szempontjából) semmi köze, ez a 32Bites CÍMZÉSMÓD-ra vonatkozik. (Ráadásul már egy jó ideje 64bites a fizikai adatbusz az átviteli sebesség megduplázására, pedig a CPU 32bites adatokkal dolgozik).

Az Intel szerint:
i386-tól:
Fizikai címzés: 32bit(4GByte), Virtuális: 46bit(64TByte)
Pentium Pro-tól:
Fizikai címzés: 36bit(64GByte), Virtuális: 46bit(64TByte)

A címzés/címzés:

A 32bites címzés valós módban jelenti ugyanazt a 32bites fizikai memóriatartományt, de ezt nagy valószínűséggel senki sem használja.

A 32bites (azaz 4GByte) címzés a virtuális címtartományban egy kijelölt tartományon belüli címzést jelent, ez lehet max. 4GB. Ez gyakorlatilag teljesen független attől, hogy a CPU fizikailag 64Gbyte-ot címezhet meg, és ez ráadásul akár egy 64TByte-os virtuális tartományban lehet.

A másik, hogy ez többek szerint BIOS kérdése, de miért nem OS? (persze HW kérdése is, mert ha az elfedi a CPU képességeit, akkor azon már semmi sem segít.)

Linux kernel 2.6-tól támogatja a 64GB-os fizikai tartományt, ez nem működik jól?
(elvileg a BIOS-tól függetlenül, akár 8GB-ot is kezelnie kellene, a rendszer erőforrásoknak van bőven hely.)

Pentium Pro biztos, hogy nem használt 46 bites virtuális címzési módot, hanem 32 bitest használt.
A mostani 64 bites Intel procik (kivéve Itanium, mert az 39 bitest használ) azok már 48 bitest használnak (és nem 46 bitest), de nem a Pentium Pro.

Hol olvastad ezt? Belinkelnéd?

http://en.wikipedia.org/wiki/Physical_Address_Extension

De igen, tudott használni, jól mondja. Pentium Pro óta létezik PAE és 36 Bites fizikai címzés.

Ugye hogy is működik a védett módú címfordítás (i386 óta) (virtuális címzés).
Minden taszk számára használható egy számára külön fenntartott 32bites (4Gb-os) címtér.
A 32bites címből a processzor generál egy fizikai címet mindenféle táblázatok segítségével.
A fizikai cím i386 óta 32 bites, PPro óta 36bites!

két szintű laptáblázat, egyenként 1024 bejegyzéssel, a lapméret 4Kb.
A táblázat bejegyzés tartalmazza a lapcím felső 24 bitjét és az alsó 12bit pedig védelmi célokat szolgáló beállítás.
Tehát így 1024*1024*4K=4G memória címezhető meg.

Ha azonban a PAE bitet beállítjuk a control regiszterben, akkor a következőképp fob működni:
továbbra is 4K-os lapok, de most a táblázat bejegyzés a cím felső 52 bitjét tartalmazza + a 12 védelmi bitet. De így csak 512 bejegyzése van a laptáblázatoknak, ezért bevezettek egy újabb szintet ami 4 bejegyzésből áll, tehát most 4*512*512*4K, azaz 4GB-os terület fogalalható le 4Kb-os egységekben, azonban ezt a teljes 64bites címtérben megtehetjük.
Mivel minden taszknak amúgy is külön virtuális címtere van, egészen jól használható a 64Gb.

Ez a PentiumPro és utáni procikra vonatkozik, persze azóta lehet vannak még minden féle trükkök 32biten.

Ez teljesen korrekt, amit itt leírtál.
Viszont az, hogy úgy válaszolsz, hogy nem olvasod el rendesen, amit írok bosszantó.
Én fizikai címzésről nem ejtettem szót. A virtuális címzési mód pedig a Pentium Pro nál 32 bites volt.
Az hogy volt benne PAE az ok, de ez az előző tényen nem változtat semmit, a virtuális címzési mód 32 bites volt még PAE bekapcsolva módban is.

boot soran atadni a kernelnek a memoria meretet?

cat /proc/iomem
Ha 8 jegyu cimeket ir az regen rosz szerintem.

VGA -nak fentratott memoriat nem tudod csokenteni ?

Az alaplap konyve szerint mekkora a max memoria ami belemegy?

cpuinfo:
address sizes : 40 bits physical, 48 bits virtual
Virtul address space amd64 csak 48 bit, a fizikai meg csak 40, nekem is 8 jegyu szamok vannak az iomem-ben.

alphan nekem ott 9 jegyu szamok vannak, valaki erositse meg vagy cafolja, hogy 4Gb vagy a feletti ramos gepeknel ott 8 jegynel tobb van.

Ha van rá módod, forgass saját kernelt és 64 (!) GB-s memória supportot válaszd. Ha csak 4GB-t választod ki 3.2-3.5GB-t fog látni a rendszer (valszeg 4gb van belőve a gyáriban).

Nekem is pont ugyanez volt a gondom, és megesküdtem volna, hogy nincs memory remapping lehetőség a bios-ban, aztán kb fél óra kutatás után, valamelyik hihetetlenül zseniális módon eldugott menüpontban megtaláltam, és azóta probléma nélkül látja a 4 gb-t.

Milyen BIOS volt? Milyen chipset? Nem Phoenix BIOS volt véletlen mert ezen az alaplapon az van.
Amúgy megkérdeztem a foxconn online technical supportot és ők azt állítják, hogy a chipset elkülöníti a 3.2 GB feletti fizikai címeket különböző hardware eszközöknek (PCI stb. add on card-ok) és BIOS funkcióknak attól függetlenül, hogy vannak-e add on kártyák a slotokban vagy nem.
Azt mondják, ha lehetne bele (elméletileg) 5 GB ramot rakni, akkor is csak 3.2 GB látszana, mer az a feletti fizikai címek egyszerűen elkülönítésre kerülnek.
Irtam nekik, hogy ez elég pazarló, nem létező hardware eszközöknek 800 MB memóriát elkülöníteni, írták, hogy az. :)
Azt is állítják, hogy ezt nem lehet sehol kikapcsolni. Már végigbönglsztem 10 x az egész BIOS-t meg az alaplap könyvét is olvashgattam, de eddig nem találtam semmit. Ettől függetlenül benne van, hogy valami elkerülte a figyelmemet.

Szerintem itt nagyon korrektül elmagyarázzák: http://support.microsoft.com/kb/929605/en-us
A lényeg, hogy hiába 64bites a procid és az OS-ed, ha annyi ramot teszel a gépbe, mint amennyi a chipseted által kezelt címtartomány mérete akkor még úgy is lesz az MMIO miatt memória lyuk ha amúgy képes lenne már memory remap-re a chipset (hiszen ekkor már nem tudja még magasabb címekre átmappelni a lyukat). Tehát 975X-be 8G ramot teszel, akkor kb. 7.2-t használhatsz, mert 8G a max címtartománya a 975X-nek. A 945 azonban még magát a remap-et sem tudja!

apt-cache search bigmem
sok sikert

-------------------------------
"A gorog katolikus noknek 8 dioptria alatt nem kotelezo a bajusz!" avagy "Nozni csak muholdal lehet..." | http://lazly.hu

Linux valami 2.6.18-6-amd64 #1 SMP Thu May 8 06:49:39 UTC 2008 x86_64 GNU/Linux
valami:~# apt-cache search bigmem
valami:~#

őőő sok sikert

Ez a bigmem dolog nem véletlen a 32 bites architektúrára vonatkozik? Szerintem igen.
Én meg fent leírtam párszor, hogy ez egy 64 bites oprendszer.

http://packages.debian.org/search?suite=etch&arch=amd64&searchon=names&…
http://packages.debian.org/search?suite=etch&arch=i386&searchon=names&k…

Gondolom látszik a különbség.

Szerintem meg nem.

Package: linux-image-2.6-686-bigmem (2.6.25+14)

This package depends on the latest binary image for Linux kernel 2.6 on Pentium Pro/Celeron/Pentium II/Pentium III/Pentium 4 with 4-64G RAM machines.

Debian bigmem == CONFIG_HIGHMEM64G=y

Tehát: a bigmem a 4Gb-64Gb-os memória kezelés támogatást jelenti.

Üdv,
Dw.

"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."

szerintem de, csak 32 bitnel szamit. azon kivul, hogy a neten van par ezzel egybehangzo post,
Pentium Pro/Celeron/Pentium II/Pentium III/Pentium 4-en hogy futna 64 bites kernel? Jo pentium 4 legutolso szeriai
ismertek az em64t-t, de csak azok.

- Use the Source Luke ! -

Alaplap leírásban nem írnak a max. telepíthető memóriáról ?
Biztos hogy nincs abban a BIOSban (biosfrissítés?) semmi remappingos", memory hole, stb. opció? minden menüt végignéztél? Milyen memóriával kapcsolatos lehetőségek vannak?

nehéz elhinni hogy a méregdrága és neves Intel ekkora bakit elkövetne, mikor a - többek szerint - "szar, kvarcjáték" - pár éves ASUS nvidia csipes lapomban is bentvan.

--------

Nem a zsömle kicsi, a pofátok nagy...

Debainguruk! Ez így ok: "debian etch amd64 standard gyári kernellel" "pentium d procival" ?? Debijányhoz nincs véletlenül intel64 szerű kernel? Már ha amd64 van... :)

Fedora is a cutting edge distro that tests new and bleeding edge software.

Az intel64 az az Itanium platform.
Az amd64 az meg az x86 64 bites kiegészítése. Ezt használja az Intel és az AMD is. Azért hívják amd64 -nek, mert az AMD találta ki, vezette be.
Az Intel ugyan ezt használja, mondjuk ő EM64T-nek hívja, de tök ugyan az a kettő.
De ez már 1000x le lett írva...

Igazából hivatalosan x86_64 a neve, csak az AMD implemetnációját AMD64 -nek, az Intel megvalósítását meg EM64T -nek hívják. Szóval nem teljesen ugyanaz, mert a megvalósítást hívják AMD64/EM64T-nek.

Csak az AMD előbb jött ki a saját x86_64 megvalósításával, aztán sok helyen ezt vették át. (Valahol olvastam, hogy az Intel eredetileg az IA64-t (Itanium) akarta volna behozni desktopra is)

Mekkor mák, hogy nekem csak a jelek volt tőlük. :) A "terek" tényleg bebűntetett a villanyosoknak. Vendégmarasztaló tárgy hírében állt. :)
---
Sok gyerekkel ellentétben én sose akartam tűzoltó lenni. Lettem helyette informatikus. Nem találjátok ki, hogy mit csinálok nap mint nap...

Nah ez feladja a leckét. Akkor most ha a legfrissebb kernelt használom, amd64 arch és Core2Quad procim van... ehhez veszek 4x2gb dd4 4-4-4-12 GEIL ramot. Akkor abból csak 3.2gb fog látszódni? Nekem ez az egész már 'confusing'.. valaki homályosítson fel..köszi^^.
_____________________________________
aurora @ 2.6.25-4.slh.3-sidux-amd64 / 2.6.25-4.shark.3 | athena @ 2.6.24-generic-amd64

Hát én meg egy FuSi TX200S2-n tapasztaltam azt, hog 8GB ramból alig több, mint 7GB látszik, már a BIOS szintjén is. Pedig az is szervervas, 64bites Xeonokkal és mégis szar.
---
Sok gyerekkel ellentétben én sose akartam tűzoltó lenni. Lettem helyette informatikus. Nem találjátok ki, hogy mit csinálok nap mint nap...

Nekem minden tovabbi nelkul mukodik az alaprendszer a gyari kernellel...

uname -a

Linux ha2 2.6.24-1-amd64 #1 SMP Sat May 10 09:28:10 UTC 2008 x86_64 GNU/Linux

cat /proc/meminfo


MemTotal:      8182060 kB
MemFree:       4734144 kB
Buffers:         98752 kB
Cached:        2972400 kB
SwapCached:          0 kB
Active:         341888 kB
Inactive:      2958352 kB
SwapTotal:      979924 kB
SwapFree:       979924 kB
Dirty:              12 kB
Writeback:           0 kB
AnonPages:      229104 kB
Mapped:          11188 kB
Slab:           112064 kB
SReclaimable:    94652 kB
SUnreclaim:      17412 kB
PageTables:       3444 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:   5070952 kB
Committed_AS:  2084324 kB
VmallocTotal: 34359738367 kB
VmallocUsed:    287972 kB
VmallocChunk: 34359449595 kB
HugePages_Total:     0
HugePages_Free:      0
HugePages_Rsvd:      0
HugePages_Surp:      0
Hugepagesize:     2048 kB

cat /proc/iomem


00000000-0009e7ff : System RAM
0009f800-0009ffff : reserved
000ce000-000cffff : pnp 00:0a
000f0000-000fffff : reserved
00100000-cf5dffff : System RAM
  00200000-00418084 : Kernel code
  00418085-00513c5f : Kernel data
  005a6000-006223e7 : Kernel bss
cf5e0000-cf5e2fff : ACPI Non-volatile Storage
cf5e3000-cf5effff : ACPI Tables
cf5f0000-cf5fffff : reserved
d0000000-dfffffff : PCI MMCONFIG 0
  d0000000-dfffffff : reserved
e0000000-efffffff : 0000:00:02.0
f0000000-f0ffffff : PCI Bus #02
f1000000-f2ffffff : PCI Bus #03
  f2000000-f2000fff : 0000:03:00.0
    f2000000-f2000fff : r8169
f3000000-f30fffff : 0000:00:02.0
f3100000-f317ffff : 0000:00:02.0
f3182000-f31827ff : 0000:00:1f.2
  f3182000-f31827ff : ahci
f3183000-f31830ff : 0000:00:1f.3
f3200000-f32fffff : PCI Bus #03
  f3200000-f321ffff : 0000:03:00.0
fec00000-fec00fff : IOAPIC 0
  fec00000-fec00fff : pnp 00:0a
fed00000-fed003ff : HPET 0
fed10000-fed1dfff : pnp 00:0a
fed20000-fed8ffff : pnp 00:0a
fee00000-fee00fff : Local APIC
ffb00000-ffb7ffff : pnp 00:0a
100000000-22fffffff : System RAM

--
maszili

Nekem fusi laptopban van 4GB RAM egy T7300-as procival ICH8-as chipset, gyári 32 bites bigmem kernel debian lenny, és a biosban semmit sem lehet állítani (főnix bios), bigmem kernel nélkül csak 3.3Gigát látott:

$ uname -a
Linux xxxx 2.6.24-1-686-bigmem #1 SMP Thu May 8 02:55:42 UTC 2008 i686 GNU/Linux

$ lspci
00:00.0 Host bridge: Intel Corporation Mobile PM965/GM965/GL960 Memory Controller Hub (rev 03)

$ cat /proc/meminfo
MemTotal: 4139748 kB
MemFree: 1325592 kB
Buffers: 52404 kB
Cached: 949288 kB
SwapCached: 0 kB
Active: 1794488 kB
Inactive: 747484 kB
HighTotal: 3267392 kB
HighFree: 633796 kB
LowTotal: 872356 kB
LowFree: 691796 kB
SwapTotal: 4883720 kB
SwapFree: 4883720 kB
Dirty: 368 kB
Writeback: 0 kB
AnonPages: 1540276 kB
Mapped: 71260 kB
Slab: 44668 kB
SReclaimable: 26752 kB
SUnreclaim: 17916 kB
PageTables: 6740 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 6953592 kB
Committed_AS: 2458952 kB
VmallocTotal: 118776 kB
VmallocUsed: 9628 kB
VmallocChunk: 108672 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB

$ cat /proc/iomem
00000000-0009f7ff : System RAM
0009f800-0009ffff : reserved
000a0000-000bffff : Video RAM area
000c0000-000c7fff : Video ROM
000cf000-000cffff : Adapter ROM
000f0000-000fffff : System ROM
00100000-bf6cffff : System RAM
00100000-002c332f : Kernel code
002c3330-00376743 : Kernel data
003bc000-00400dbf : Kernel bss
bf6d0000-bf6defff : ACPI Non-volatile Storage
bf6df000-bfffffff : reserved
c2000000-c20000ff : 0000:00:1f.3
c8000000-c9ffffff : PCI Bus #0a
cc000000-cdffffff : PCI Bus #0a
d0000000-dfffffff : 0000:00:02.0
e0000000-efffffff : PCI MMCONFIG 0
e0000000-efffffff : reserved
f0000000-f1ffffff : PCI Bus #02
f0000000-f001ffff : 0000:02:00.0
f2000000-f3ffffff : PCI Bus #04
f4000000-f5ffffff : PCI Bus #08
f6000000-f7ffffff : PCI Bus #02
f6000000-f6000fff : 0000:02:00.0
f6000000-f6000fff : r8169
f8000000-f9ffffff : PCI Bus #04
fa000000-fbffffff : PCI Bus #08
fa000000-fa000fff : 0000:08:00.0
fa000000-fa000fff : iwl3945
fc000000-fc0fffff : 0000:00:02.0
fc100000-fc1fffff : 0000:00:02.1
fc400000-fc403fff : 0000:00:1b.0
fc400000-fc403fff : ICH HD audio
fc404000-fc4047ff : 0000:00:1f.2
fc404000-fc4047ff : ahci
fc404800-fc404bff : 0000:00:1a.7
fc404800-fc404bff : ehci_hcd
fc404c00-fc404fff : 0000:00:1d.7
fc404c00-fc404fff : ehci_hcd
fec00000-fec0ffff : reserved
fed00000-fed003ff : HPET 0
fed00000-fed003ff : reserved
fed14000-fed19fff : reserved
fed1c000-fed8ffff : reserved
fee00000-fee00fff : reserved
ff000000-ffffffff : reserved
100000000-13fffffff : System RAM

Mondjuk én azért kipróbálnám egy-két 64 bites live dvd-vel vagy cd-vel is.

Chipset szinte biztos. Én egy asus P5LD2-vel jártam így. Elég nagy méreg volt, mert direkt emiatt vettük meg. Az alaplap leírásában jobb esetben *-zott kisbetűs részben megtalálod, hogy 'may see less than..' mint az asus esetében. Sajnos ez van, marketing, cseréld le az alaplapot olyanra ami tudja. A 32 bites linuxról csak annyit, hogy egy rendes gépen (Dell PE2950) simán látja a 16GB ramot is.