4 GB RAM auf 32-bit-System ?

  • ich habe vier Speicherbänke und vier identische RAM-Riegel über je 1 GB.


    Wenn ich alle vier bestücke, habe ich erwartungsgemäß auf einem 32-bit-System nur 3 GB nutzbar.


    Bringt es nun trotzdem irgendwas, den vierten RAM-Riegel bestückt zu lassen, oder kann ich ohne Leistungseinbuße einen rausnehmen? Wenn ich das Handbuch richtig verstehe, soll die Größe der Speichermodule bei Dual Channel auf jedem Kanal gleich sein, da so eine bessere leistung erzielt würde. Demnach bräuchte ich den vierten Riegel also?

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Wenn du von Linux sprichst und dein Kernel PAE kann, dann gehen auch mehr als 4 GB.
    Wenn dein MB DDR2 (kommt nach BRD) unterstützt, dann solltest du auf alle Fälle paarweise bestücken.

    D400 + Opera + Ubuntu 8.04 Server = 14W
    MSI G31M2FD v2.1 + E8400 + 2GB + Ubuntu Server 8.04 = 54W
    EEE Box B202 + Opera + Ubuntu 8.10 Server = 18W

  • Das hängt auch davon ab ob dein Mainboard überhaupt vier Dual Channel Speicher Slots hat, meins hat nur zwei davon.


    Da bei Dual Channel Interleaving stattfindet, denke ich schon, dass der vierte Riegel bei einem 4 Slot Dual Channel Mainboard Leistungssteigernd sein sollte.


    Normaler Speicher:


    Riegel 1: 1234
    Riegel 2: 5678
    Riegel 3: 9ABC
    Riegel 4: 0000


    4xSlot Dual Channel:


    Riegel 1: 1357
    Riegel 2: 2468
    Riegel 3: 9A00
    Riegel 4: BC00


    Grüße,
    mapovi

    2.6.29-gentoo-r5, vdr-1.7.9, xine-vdpau-284, vdr-xine 0.93 - 5050e, M3A78-EM, Postville, 2xTTS21600

    PearlHD text2skin

  • bei mir isses so das, wenn ich 2 speicherriegel stecke, dual-channel-betrieb habe, stecke ich nen dritten dazu habe ich nur singel-channel-betrieb, erst beim 4, habe ich wieder dual-channel-betrieb.


    merken tue ich es bei nem windoof-system so gut wie garnicht, lediglich 3dmark hat dann ein paar punkte weniger. im normalen büro-alltag wird sich das nicht bemerkbar machen, wenn ich dann bein zocken 3 fps weniger habe interessiert mich das auch nicht wirklich...


    wenn du den 4. riegel irgendwo anders einbauen kannst dann baue ihn da ein, wenn du wirklich keine andere anwendung hast dann spare dir die arbeit und ärgere dich das der 3. riegel speichermäßig eh nicht ausgenutzt wird sondern nur dafür beiträgt den stromverbrauch etwas in die höhe zu treiben (macht ja schließlich je nach taktung auch ein paar watt aus;))

    Client 1 Hardware : MSI Z87-G43, I5-4570, 4 GB Ram (oversized aber war über :) ),Zotac NVidia GT630 (25 Watt),Thermaltake DH202 mit iMon-LCD ( 0038 ) und vdr-plugin-imon
    Software : yaVDR 0.6,sofhhddevice @ 1920x1080@50Hz
    Server Hardware : MSI Z87-G43, I7-4790, 16 GB RAM, 5x3 TB WD Red, Digibit-R1 (2 Devices)
    Software : Ubuntu 16.04 LTS mit yavdr-Paketen,virtualbox,diverse VM's


    Yoda: Dunkel die andere Seite ist...sehr dunkel!
    Obi-Wan: Mecker nicht, sondern iss endlich dein Toast ...

  • Moin,


    was viele nicht kennen und wissen:


    DualChannel-Betrieb ist auch möglich mit z.B. 2x 512MB + 1x 1024 MB.
    Vorzugsweise sollten aber die Riegel gleiche Werte aufweisen und möglichst gleichen Ursprungs sein.


    Diese Konfig läuft hier stabil im produkt. Umfeld.


    Nur so am Rande.


    Ansonsten, wenn nur 3GB genutzt werden, denke ich sind 2GB im DualChannel besser als 3GB im Single Channel. Kommt aber auf die Konfig an.
    --
    Gruss


    monolith

    Mein VDR:
    Gehäuse: SSt.LC16M incl. VFD Internals: Asrock K7S8XE, AMD XP 2K8+, 1024M, Enermax 375W, hda=120G(SYS/Audio/Bilder), hdb=Plextor PX-716A DVD-RW, hdc=500G(Video0), hdd=500G(Video1)Matrox G450 - 8'' TFT(fbtv), 1x TT S-2300, 2x TT S-1401, 1x PVR350
    OS: LinVDR 0.7 + libs + Toxic-1.4.5-2, Kernel: 2.6.18

  • Hi,


    PAE: Geht, kostet aber etwas Performance (IMO 10% oder so) - dann hast du auch 4 GB unter einem 32 Bit-System. Duerfte aber dennoch lohnen, denn wenn es als dynamischer Plattencache verwendet wird, ist es auf jeden Fall schneller als jede Platte.


    Zitat


    DualChannel-Betrieb ist auch möglich mit z.B. 2x 512MB + 1x 1024 MB.


    IMO kommt das sehr auf Board und BIOS an, was dann genau passiert.


    Edit: Wenn es um das AM2-System aus deiner Signatur geht... warum eigentlich kein 64Bit-System? Nahezu alles funktioniert doch damit... mein VDR laeuft seit Juni 2007 so.


    Viele Gruesse,


    Jan

    Hardware: ASRock AM2NF3-VSTA + AMD Sempron 3200+ (1,8 GHz, meist 1,0 GHz) mit Fujitsu Siemens DVB-C FF (ohne Kabelsignal), 2 x TechniSat AirStar 2 DVB-T PCI und Terratec Cinergy T2 DVB-T USB 2.0 (als IR-Empfaenger ohne Antenne), Pollin 27x4 LCD, 1 GB DDR2, diskless, /video ueber NFS
    Software: Gentoo Linux 64 Bit (Kernel 2.6.24) mit VDR 1.4.7 aus den ebuilds mit einigen manuellen Anpassungen und wenigen Plugins (femon, dvd, remote, lcdproc)

    2 Mal editiert, zuletzt von JanR ()

  • eigentlich habe ich nur aus Versehen 4 GB :)
    wollte für mein neues Board (GA-M56_S3) 2 GB bestellen, aber habe aber aus Versehen zwei Paar zu je 2x1 GB bestellt.


    Das neue Gigabyte wird mittelfristig im VDR das ECS S370-Board ersetzen. Derzeit habe ich es im Desktop-Rechner als Ersatz für ein M2NPV-VM, welches als Garantiefall eingeschickt wird.


    Das M2NPV-VM habe ich vorher mit GB laufen gehabt, und das Gigaybte ist mit 4 GB nicht schneller. 2 GB RAM reichen zumindest für KDE 3.5 also aus.


    Da ich derzeit keine andere Verwendung für den Speicher habe, werde ich wohl 4 GB drin lassen. Habe für 2 Riegel a 1 GB (Kingston) bei Reichelt um 20,- gezahlt.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    Einmal editiert, zuletzt von Dr. Seltsam ()

  • Na das KDE auch mit weit weniger Speicher läuft ist doch bekannt.
    Aber ob 2 oder 4GB für dich reichen oder nicht liegt eher an den Anwendungen die du laufen lässt.

    Server: Athlon II X2 250 - Asus M3N-H HDMI - 2x1GB RAM - 3TB HDDs -
    1 x Digital Devices Cine S2 V6 DVB-S2 (SD Sender im Highband funktionieren mit der Karte nach wie vor unter Linux nicht, unter Windows schon)
    3 x Nova Budget (die ich eigentlich durch die Cine S2 mit Erweiterungsmodul ersetzen wollte, leider aber für die SD Sender immer noch brauche)
    mit yavdr 0.4.0

  • 32-bitiges Linux mappt den physischen Speicher bis 768MB (HighMem-Grenze) in den Adressraum ab 3GB. Wenn Linux auf physischen Speicher oberhalb von 768MB zugreift, muß dieser erst gemappt und hinterher der Adressbereich wieder freigegeben werden. Bei einem Multil-Core muß das Mapping auch noch zwischen allen Cores synchronisiert werden. Bei 64-bitigem Linux gibt es die HighMem-Beschränkung vorerst nicht. Daher sollte man bei mehr als 768MB Speicher auf 64-bitiges Linux umsteigen.


    Gruß
    e9hack

  • HI,


    IMO liegt die Grenze etwas hoeher, bei knapp 900 MB. Zumindest ist das der Speicher, den man hat, wenn man mit 1 GB oder mehr einen Kernel startet, der ohne Highmem kompiliert ist.


    Viele Gruesse,


    Jan

    Hardware: ASRock AM2NF3-VSTA + AMD Sempron 3200+ (1,8 GHz, meist 1,0 GHz) mit Fujitsu Siemens DVB-C FF (ohne Kabelsignal), 2 x TechniSat AirStar 2 DVB-T PCI und Terratec Cinergy T2 DVB-T USB 2.0 (als IR-Empfaenger ohne Antenne), Pollin 27x4 LCD, 1 GB DDR2, diskless, /video ueber NFS
    Software: Gentoo Linux 64 Bit (Kernel 2.6.24) mit VDR 1.4.7 aus den ebuilds mit einigen manuellen Anpassungen und wenigen Plugins (femon, dvd, remote, lcdproc)

  • Zitat

    Originally posted by e9hack
    32-bitiges Linux mappt den physischen Speicher bis 768MB (HighMem-Grenze) in den Adressraum ab 3GB. Wenn Linux auf physischen Speicher oberhalb von 768MB zugreift, muß dieser erst gemappt und hinterher der Adressbereich wieder freigegeben werden. Bei einem Multil-Core muß das Mapping auch noch zwischen allen Cores synchronisiert werden. Bei 64-bitigem Linux gibt es die HighMem-Beschränkung vorerst nicht. Daher sollte man bei mehr als 768MB Speicher auf 64-bitiges Linux umsteigen.


    Gruß
    e9hack


    Du hast mit der Grundlage recht, allerdings ist das Mapping nicht durchgehend so, wie Du es beschreibst. Und Deine Schlussfolgerung kann ich nicht teilen.


    So wie ich das verstehe:
    <960MB:
    Keine Probleme oder sonstige Schwierigkeiten zu erwarten. Sowohl CPU als ob Kernel/32 und Anwendungen sehen den vollen Speicher.
    >960MB, <4GB:
    Grunsaetzliche keine Schwierigkeiten, da die CPU problemlos 4GB addressieren kann. Oberhalb von 1GB wird der Speicher fur den Kernel "gemappt", allerdings permanent (also schneller). Der Kernel selbst verbleibt und nutzt unterhalb 1GB (um Mapping-Reserven fuer mehr Speicher zu haben).
    >4GB:
    Zwei Varianten:
    Kernel ohne PAE:
    Flexibles Mapping des Kernels (der dafuer wie oben Bereiche unterhalb 1GB nutzt), die Anwendungen sehen aber nie mehr als 3GB (Limit von 32bit CPU=4GB abzgl. Kernel mapping 1GB). Doof, weil Speicher oberhalb von 1GB stets neu "gemapt" werden muss. Langsam.
    Kernel mit PAE:
    Keine gravierenden Einschraenkungen, da das ganze Mapping an die physikalische CPU delegiert werden kann. Dennoch IMHO Limit von 4GB fuer die Anwendungen (die ja nur 32bit sind und nicht mehr adressieren koennen).


    Kurz:
    Bis 4GB kann man 32bit Linux problemlos nutzen, auch ohne Performanzeinbussen. Darueber nur noch mit PAE Support der CPU.
    Braucht eine Anwendung dagegen mehr als 4GB virtuellen Speicher, kommt man um 64bit Linux nicht herum (auch schon unterhalb 4GB, da virtueller Anwendungsspeicher auch groesser sein kann als physikalisch vorhanden).


    Die Entscheidung, ob und wann man 64bit verwendet haengt also ausschliesslich von der eigentlichen Hauptapplikation ab! Und dann erst von der physikalischen CPU. Hat die CPU PAE Support, kann man auch locker 64GB mit einer 32bit CPU fahren! Das kann u.U. sogar schneller sein als 64bit, da natuerlich weniger Daten bewegt werden muessen.


    Gutes Beispiel ist da der VMware ESX Kernel. Das ist ein 32bit Kernel, ESX unterstuetzt aber bis zu 64GB RAM. Demzufolge sollte man virtuellen Maschinen mit 32bit auch nicht mehr als 4GB RAM zuordnen...

    Glotze: yaVDR (ASRock Q1900M, 4GB RAM, DD Cine S2 V6.5, ZOTAC GT630 (Rev. 2)
    Server: HP ProLiant MicroServer G8, VMware ESXi 5.5 :P

  • @Dr.Seltsam:
    Lass die 4GB drinnen. Du hast keine Performanzeinschraenkungen. Teile des Speichers werden halt fuer permanentes Mapping verwendet. Und die Anwendungen sehen max. 3GB virtuellen Speicher. Da das MApping aber permanent ist und Du wohl keine Anwendungen hast, die mehr als 3GB virtuellen Speicher adressieren moechte, faehrst Du mit 4GB sehr gut.

    Glotze: yaVDR (ASRock Q1900M, 4GB RAM, DD Cine S2 V6.5, ZOTAC GT630 (Rev. 2)
    Server: HP ProLiant MicroServer G8, VMware ESXi 5.5 :P

  • Zitat

    Original von knebb


    Kurz:
    Bis 4GB kann man 32bit Linux problemlos nutzen, auch ohne Performanzeinbussen.


    Dem kann ich so nicht zustimmen. Schaue Dir mal kmap() und kunmap() an. Sobald eine Page aus dem HighMem-Bereich kommt, muß der Kernel einen großen Aufwand treiben, um die Page irgendwo im virtuellen Addressraum oberhalb von 3GB einzublenden.


    Gruß
    e9hack

  • Jetzt wird's akademisch ;)
    Schoen, wenn man auf so hohem Niveau diskutieren kann ohne zu flamen o.ae. So lernen alle was :gap


    Zitat

    Originally posted by e9hack
    Sobald eine Page aus dem HighMem-Bereich kommt, muß der Kernel einen großen Aufwand treiben, um die Page irgendwo im virtuellen Addressraum oberhalb von 3GB einzublenden.


    Du schreibst "oberhalb von 3GB". Der "HighMem" faengt aber schon ueber 960MB an.
    Du hast vermutlich recht (wie gesagt, bin kein Programmierer), dass der Kernel Aufwand betreiben muss, um Adressbereich (Zitat:) "oberhalb von 3GB einzublenden".
    Du beschreibst hier also zwei verschiedene Bereiche. Naemlich alles ueber 3/4GB und HigMem.


    Nochmal:
    Bis 4GB verwendet der Kernel IMHO ein statisches Mapping, so dass vom eigentlich verfuegbaren Speicher eben nicht alles verfuegbar ist. Ich meine, bin mir aber nicht sicher, dass das ca. 512MB sind. D.h. wenn Du 4GB einbaust, verbleiben Dir nur ca. 3.5GB. Sofern mehr als 4GB physikalischer Speicher verfuegbar ist, wird dynamisches (langsames) Mapping verwendet.


    Deshalb sollte man bei mehr als 4GB auf jeden Fall PAE CPUs mit entsprechendem Kernel verwenden. Oder halt 64bit.
    Darunter tut es der "normale" Kernel auch, sofern man bereit ist, ca. 512MB RAM zu "opfern"- Geschwindigkeitseinbussen sollte das dann aber nicht allzu viele bringen. Erst darueber wirds langsam.

    Glotze: yaVDR (ASRock Q1900M, 4GB RAM, DD Cine S2 V6.5, ZOTAC GT630 (Rev. 2)
    Server: HP ProLiant MicroServer G8, VMware ESXi 5.5 :P

  • Hi,


    Zitat


    Bis 4GB kann man 32bit Linux problemlos nutzen, auch ohne Performanzeinbussen.


    Ein Argument ist noch ungesagt bisher: Wenn 4 GB drinstecken, kann 32-Bit Linux je nach der drinsteckenden Hardware (!) dennoch nicht 4 GB nutzen, sondern irgendwas zwischen etwa 2,8 und 3,5. Der Grund ist, dass die IO-Bereiche der verschiedenen Karten (vor allem Grafikkarten mappen gerne Speicher in den Adressraum der CPU) ebenfalls in dem 32bittig adressierten Speicherraum Platz haben muessen. Das blendet dann zwangslaeufig Speicher aus, auf den man nicht zugreifen kann. Darum haengt das wiederum von der Ausstattung ab... zwei Grafikkarten beispielsweise korrigieren die Werte ordentlich nach unten.


    Fuer manche Geraete gilt das auch im 64 Bit-Betrieb (wenn das Geraet naemlich nicht 64bittig adressierbar ist), nur ist das da kein Problem, weil dann Speicher umgemappt wird. Ein Blick in /proc/mtrr ist da aufschlussreich. Auf meiner Workstation (nforce4, K8 Dualcore, 4 GB, 64 Bit) sieht das z.B. so aus:


    Code
    reg01: base=0x80000000 (2048MB), size= 512MB: write-back, count=1
    reg02: base=0xa0000000 (2560MB), size= 256MB: write-back, count=1
    reg03: base=0x100000000 (4096MB), size=1024MB: write-back, count=1
    reg04: base=0x140000000 (5120MB), size= 256MB: write-back, count=1


    Man sieht gut, dass eigentlich nur 2 3/4 GB Speicher unterhalb von 4 GB gemapt sind, die uebrigen 1 1/4 GB liegen ab 4 GB. Auf dieser Maschine haette man mit einem 32bit-Kern entsprechend nur 2,8 GB Speicher, auch wenn 4 drinstecken. Grund ist hier, dass aufgrund des Dualhead-Betriebes (ein Rechner, 2 Monitore/Tastaturen/Maeuse) 2 Grafikkarten drinstecken, die beide Speicher unter 4 GB wollen.


    Von daher kann PAE (Einstellung 64 GB, siehe oben) auch bei 4 GB was bringen, bremst aber auch ein wenig.


    Oder eben... wie ich es tue... ein 64 Bit-Kernel. Spaetestens, wenn man auf modernen Boards Speicher weit jenseits von 4 GB hat, wird das dann unumgehbar, warum also nicht vorher schon ueben? :)


    Viele Gruesse,


    Jan

    Hardware: ASRock AM2NF3-VSTA + AMD Sempron 3200+ (1,8 GHz, meist 1,0 GHz) mit Fujitsu Siemens DVB-C FF (ohne Kabelsignal), 2 x TechniSat AirStar 2 DVB-T PCI und Terratec Cinergy T2 DVB-T USB 2.0 (als IR-Empfaenger ohne Antenne), Pollin 27x4 LCD, 1 GB DDR2, diskless, /video ueber NFS
    Software: Gentoo Linux 64 Bit (Kernel 2.6.24) mit VDR 1.4.7 aus den ebuilds mit einigen manuellen Anpassungen und wenigen Plugins (femon, dvd, remote, lcdproc)

    Einmal editiert, zuletzt von JanR ()

  • Zitat

    Original von knebb
    Jetzt wird's akademisch ;)
    Schoen, wenn man auf so hohem Niveau diskutieren kann ohne zu flamen o.ae. So lernen alle was :gap



    Du schreibst "oberhalb von 3GB". Der "HighMem" faengt aber schon ueber 960MB an.


    Man muß physikalische und virtuelle RAM-Adressen strikt trennen. Der HigMem-Bereich bezieht sich auf physikalische Adressen. Der Adressraum 0-3GB (User-Space) und 3-4GB (Kernel-Space) bezieht sich auf virtuelle Adressen.


    Zitat


    Nochmal:
    Bis 4GB verwendet der Kernel IMHO ein statisches Mapping, so dass vom eigentlich verfuegbaren Speicher eben nicht alles verfuegbar ist.


    Es wird prinzipiell kein lineares 1:1 Mapping (phys. = virtuelle Addr.) verwendet. Linux mappt den physik. Bereich von 0 bis zur HighMem-Grenze linear in den virtuellen Bereich von 3GB bis 3GB+HighMem-Grenze.


    Zitat

    Ich meine, bin mir aber nicht sicher, dass das ca. 512MB sind. D.h. wenn Du 4GB einbaust, verbleiben Dir nur ca. 3.5GB. Sofern mehr als 4GB physikalischer Speicher verfuegbar ist, wird dynamisches (langsames) Mapping verwendet.


    Der Verlust von 512MB bis 1GB hat nichts mit Linux zu tun. Der Memory-Controller blendet einen bestimmten physik. Adressbereich aus, um über dieses Fenster das RAM von Grafik-Karten oder den Memory-Mapped-IO-Bereichn von PCI-Karten verfügbar zu machen. Intelligente Memory-Controller (und wenn das BIOS mitspielt) können das ausgeblendete RAM am Ende vom RAM phys. wieder verfügbar machen.


    Zitat

    Deshalb sollte man bei mehr als 4GB auf jeden Fall PAE CPUs mit entsprechendem Kernel verwenden. Oder halt 64bit.
    ...
    Geschwindigkeitseinbussen sollte das dann aber nicht allzu viele bringen.


    Wie schon geschrieben, ist das falsch. Allen phys. Speicher oberhalb der HighMem-Grenze muß der Kernel separat mappen (um z.B. auf Filesystem-Buffer zuzugreifen) und das Mapping zwischen einzelnen Cores abgleichen. Für den UserMode-Bereich ist es egal, ob der phys. Speicher vom unteren oder oberen Bereich kommt. Das Mapping muß für jeden gestarteten Prozeß neu erzeugt werden.


    Gruß
    e9hack

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!