Extmem

Alles rund um Anwendungen für Amiga OS4

Moderator: OS4Welt-Team

tommysammy

Re: Extmem

Beitrag von tommysammy »

Nun, da ich nicht in der Mailingliste bin, konnte ich die benötigte Informationen nicht bekommen. Werde es nun testen können.
xspace
Beiträge: 84
Registriert: 28. Februar 2014 09:49

Re: Extmem

Beitrag von xspace »

@tommysammy benutzen kannst du noch kein extmem, die funktion wurde lediglich im amigaOS kernel implementiert, aber du musst auch dafür anwedungen (um)schreiben das ist bisher nch nicht geschehen. Und ich glaube auch nicht wenn z.b die Ramdisk ins extmem gemappt wird, das dann systemweit poolmem ausgeschaltet wird, das lässt sich mit dem shell befehl poolstat überprüfen wenn es denn so weit ist................
Benutzeravatar
Cyborg
AmigaOS Entwickler
Beiträge: 3514
Registriert: 28. September 2009 11:10
Hat sich bedankt: 12 Mal
Danksagung erhalten: 34 Mal

Re: Extmem

Beitrag von Cyborg »

Leute, es geht in dem Zitat ausschließlich um die RAM Disk und nicht um irgendein anderes Tool oder gar "systemweite" Einstellungen.

Es ist doch ganz einfach: Ein Programm, z.B. die RAM Disk, benutzt entweder ExtMem oder MemoryPools oder normale Speicherallozierung. Bei ExtMem wird Speicher jenseits der 2GB verwendet, falls vorhanden, bei allen anderen Verfahren nur innerhalb von 2GB.
.. der SysOp hat immer recht :evil:

PGP Schlüssel verfügbar
Benutzeravatar
TearsOfMe
Beiträge: 1202
Registriert: 29. Dezember 2013 19:27
Wohnort: Bad Marienberg
Hat sich bedankt: 28 Mal
Danksagung erhalten: 2 Mal

Re: Extmem

Beitrag von TearsOfMe »

Hab jetzt nach dem Update nochmal daran gedacht und wollte es mal ausprobieren.
Also jetzt mal "run >NIL: sys:Kickstart/ram-handler.kmod EM=ON" ganz oben in die SS eingefügt und nach Neustart zeigt es auch an das es ON ist:

ram-handler 54.24 [Vectorport Filesystem]

Amiga Operating System (Release 4.1 - Final Edition Update 2)
Copyright (c) 1985-2020 Hyperion Entertainment CVBA.

MemPools=MP/T,ExtMem=EM/T,DisMountable=DM/T,BlockSize=BS/N,ShowSizeAsAllMemUsed=MU/T,ResetDefault=RESET/S,Report=SHOW/S: report

Current settings:
MemPools,MP = OFF (Options: ON or OFF)
ExtMem,EM = ON (Options: ON or OFF)
DisMountable,DM = OFF (Options: ON or OFF)
BlockSize,BS = 16380 (Options: 4092 to 4095996)
ShowSizeAsAllMemUsed,MU = ON (Options: ON or OFF)

Hab dann mal versucht die ramdisk voll zu machen aber bei der ca.2GB Grenze gibts einen lock des ganzen Rechners (also wie es ohne ExtMem normal ist).
Geht das doch noch nicht oder was mache (verstehe) ich falsch?

Gruß
Thomas

P.S.: Achso. Das ganze auf dem X1000 mit 4GB ram.
Zuletzt geändert von TearsOfMe am 6. April 2021 12:26, insgesamt 1-mal geändert.
Still speaks the silence, it speaks in riddles to my mind
And time keeps passing by as I walk tearful through this life.
Tarja i miss you so much. Farewell my baby.
Benutzeravatar
Cyborg
AmigaOS Entwickler
Beiträge: 3514
Registriert: 28. September 2009 11:10
Hat sich bedankt: 12 Mal
Danksagung erhalten: 34 Mal

Re: Extmem

Beitrag von Cyborg »

Nein, Du verstehst da nichts falsch .. das Problem ist ExtMem. Es ist einfach kaputt und wurde bisher nicht repariert.

Ich hab gerade mal in meinem Archiv gesucht, weil ich mich dunkel an was erinnerte: tatsächlich fiel das zumindest beim X5000 schon in 2017 auf (Betatestern und auch mir selbst). Scheinbar verwendete ExtMem Speicherbereiche, die für den Kernel reserviert waren, aber es war nicht bekannt, warum. Tatsächlich lief bei mir damals ExtMem einwandfrei, solange ich den Debugkernel verwendete. Thomas wollte weitere Nachforschungen anstellen, aber falls das immer noch nicht behoben ist, wurde daraus offensichtlich nichts.

Hast Du denn einen X5000? Dann probier doch mal den Debugkernel.
.. der SysOp hat immer recht :evil:

PGP Schlüssel verfügbar
Benutzeravatar
TearsOfMe
Beiträge: 1202
Registriert: 29. Dezember 2013 19:27
Wohnort: Bad Marienberg
Hat sich bedankt: 28 Mal
Danksagung erhalten: 2 Mal

Re: Extmem

Beitrag von TearsOfMe »

Hab zwar nen X1000 aber auch damit gerade mal den debug kernel genommen, leider ohne Erfolg.

P.S.: Dann mal ins Hyperion Forum geschrieben, auch wenn man ja jetzt nicht mehr weiß ob das dort die richtigen überhaupt erreicht.
Still speaks the silence, it speaks in riddles to my mind
And time keeps passing by as I walk tearful through this life.
Tarja i miss you so much. Farewell my baby.
Benutzeravatar
TearsOfMe
Beiträge: 1202
Registriert: 29. Dezember 2013 19:27
Wohnort: Bad Marienberg
Hat sich bedankt: 28 Mal
Danksagung erhalten: 2 Mal

Re: Extmem

Beitrag von TearsOfMe »

Hier mal Antworten aus dem Hyperion Forum.

https://forum.hyperion-entertainment.co ... =14&t=4635

Post by TSK » Tue Apr 06, 2021 4:37 pm

If I can remember ExtMem feature is partially broken on X1000 so you can use max of 2GB of memory with it. On other hardware platforms it works without such issue. I guess nobody have bothered to fix it.


Post by nbache » Tue Apr 06, 2021 7:27 pm

AFAIK, it is not that nobody bothered, but more that nobody has (so far) succeeded in fixing it.

Best regards,

Niels


Post by colinw » Wed Apr 07, 2021 4:22 am

Extmem works just fine.

For the ram-handler, some hardware requires it to be manually enabled,
like the SAM440 and classics because they only have limited ram and
won't normally be able to run out of virtual memory addresses.

SAM460, A1222, X1000, X5000_20 & X5000_40 have it enabled by default,
as you CAN have more than 2 GB of ram, and also because it will give you
a chunk more of usable virtual address space even if you only have the
low 2 GB mapped by the kernel.

Now, here's the basic issue as I understand it...
Just because you might have 16GB of physical ram on your machine,
DOES NOT mean it is available for use in AmigaOS.

I am not sure of the exact problem at this stage, I do not work in that area.
I think the kernel only gets told about the first 4 GB of physical ram,
and only maps the first 2 GB to virtual addresses, as it would blow up some
apps that do signed pointer math, if they encountered unsigned memory
addresses between the 2 GB and 4 GB boundaries.
One of the Kernel devs can give you the more (accurate and detailed) info.

But, as the virtual address space size maps 1-1 to physical memory address size
in the low 2 GB address space, ExtMem (in the ram-handler) allows you to use
SOME of the 2 GB - 4 GB virtual addresses to memory that would be otherwise
inaccessible.

The ram-handler has been carefully written (by me) to not use signed pointers,
so that it can internally use storage in virtual addresses between 2 GB-4 GB.

As I understand it, the periferal hardware is also mapped in high 2 GB address
range too, you don't have much of that upper 2 GB address space available either.

When the kernel get the full physical memory available information, and when
it is rewritten to use 64 bit internal addressing in the Kernels memory system,
only then will the real benefit of ExtMem become really obvious.

Until then we must wait, at least the ram-handler is ready to go with virtually
unlimited capacity, as ExtMem will allow the ram-handler to store data in
otherwise inaccessible memory.
ExtMem enables the total amount of virtual address space used by RAM
to access any sized file, with only one "block" size per concurrent caller.

Full article and my example source code is available here;
https://wiki.amigaos.net/wiki/Exec_Extended_Memory
Still speaks the silence, it speaks in riddles to my mind
And time keeps passing by as I walk tearful through this life.
Tarja i miss you so much. Farewell my baby.
Benutzeravatar
TearsOfMe
Beiträge: 1202
Registriert: 29. Dezember 2013 19:27
Wohnort: Bad Marienberg
Hat sich bedankt: 28 Mal
Danksagung erhalten: 2 Mal

Re: Extmem

Beitrag von TearsOfMe »

Schöne Antwort von colinw nur leider verstehe ich sie nicht.
Still speaks the silence, it speaks in riddles to my mind
And time keeps passing by as I walk tearful through this life.
Tarja i miss you so much. Farewell my baby.
Benutzeravatar
Cyborg
AmigaOS Entwickler
Beiträge: 3514
Registriert: 28. September 2009 11:10
Hat sich bedankt: 12 Mal
Danksagung erhalten: 34 Mal

Re: Extmem

Beitrag von Cyborg »

Colin sagt im Grunde, daß ExtMem kaputt ist. Nur sehr viel ausführlicher. Und er sagt, daß alles gut wird, sobald Exec (und alles andere) anfängt, mit 64 Bit Zeigern zu rechnen. Und natürlich die Bugs behoben sind, die in meinem Mailarchiv dokumentiert sind. Colins Ausführungen im Detail:

a) Man kann nicht mehr als 4GiB überhaupt in irgendeiner Weise in AmigaOS nutzen, egal, wieviel man physisch reinstopft. Klar, denn Exec (und alles andere) benutzt 32 Bit breite Zeiger, womit eben nicht mehr adressierbar ist.

b) Alle lebenswichtigen Dinge, um für Kompatibilität zu alter/kaputter Software zu sorgen, befindet sich in den ersten 2GiB. Denn man kann Speicheradressen entweder ohne Vorzeichen oder mit Vorzeichen interpretieren. Das Vorzeichenbit 31 ist das oberste Bit bei einer 32 Bit Zahl. Verwendet man dieses Bit als Vorzeichen, halbiert man effektiv den "positiven Zahlenraum". Aus 0...4 GiB werden -2...+2 GiB (minus 1 für die Haarspalter ;) ). Alte/kaputte Software rechnet oft mit Vorzeichen und kann so nicht mal mehr von den theoretisch zur Verfügung stehenden, vollen 32 Bit an Adreßraum profitieren.

c) Das obige limitiert den zur Verfügung stehenden Adreßraum erheblich. Daher werden von ExecSG, sofern mehr als 2GiB RAM zur Verfügung stehen, verschiedene Strukturen und Speicherbereiche oberhalb von 2GiB untergebracht, was wiederum etwas Platz in den unteren 2GiB für alte/kaputte Software schafft. Insbesondere PCIe-Hardware z.B... (was übrigens auch den Bug in meinem Archiv betrifft, da ExtMem fälschlicherweise Speicher benutzen will, der z.B. von PCIe-Hardware schon belegt wird -> Crash).
.. der SysOp hat immer recht :evil:

PGP Schlüssel verfügbar
Benutzeravatar
amifrog
Beiträge: 733
Registriert: 16. Juni 2017 22:58

Re: Extmem

Beitrag von amifrog »

Also benutzt das OS schon den "oberen" Speicher, ja?
Könnte man ja einfach testen, einmal mit 2GB und dann nochmal mit 4GB. Und schauen, wieviel Speicher frei ist. Ich nehme an, Speicher über 2GB wird garnicht angezeigt, richtig?
Antworten