Hi zusammen,
versuche, die neueste Odyssey Version auf meinem A4000 4.1FE zu starten (128MB RAM + 1GB SWAP). Leider endet das immer mit der Fehlermeldung: Not enough memory.
Ich habe hier den Verdacht, dass der SWAP-Bereich nicht genutzt wird. Kann ich das irgendwie prüfen bzw. den "einschalten"?
Dank euch schon mal für eure Tipps/Hilfe!
Ciao
SWAP RAM nicht aktiv? (Odyssey meldet "not enough memory"))
Moderator: OS4Welt-Team
- Cyborg
- AmigaOS Entwickler
- Beiträge: 3642
- Registriert: 28. September 2009 11:10
- Hat sich bedankt: 23 Mal
- Danksagung erhalten: 57 Mal
Re: SWAP RAM nicht aktiv? (Odyssey meldet "not enough memory"))
Vermutlich fordert Odyssey keinen auslagerungsfähigen Speicher an. Das ist leider einer der großen Nachteile vom implementierten Auslagerungssystem und macht es tatsächlich in vielen Fällen nutzlos.
Re: SWAP RAM nicht aktiv? (Odyssey meldet "not enough memory"))
Danke, das könnte sein. Wobei in früheren Fällen, bei denen ich virtuellen Speicher nutzen musste hatte dies immer relativ gut funktioniert (ob das nun mit Odyssey war kann ich gar nicht mehr sagen).
Allerdings schein ich eh gerade ein Problem mit dem virtuellen Speicher zu haben (Größe ist zu gering im Vgl. zur vorhandenen SWAP-Partition) - aber das wäre ein anderer Thread.
Allerdings schein ich eh gerade ein Problem mit dem virtuellen Speicher zu haben (Größe ist zu gering im Vgl. zur vorhandenen SWAP-Partition) - aber das wäre ein anderer Thread.
Re: SWAP RAM nicht aktiv? (Odyssey meldet "not enough memory"))
-Klugscheißer Modus an-
Virtuell ist der Speicher unter OS4 immer, schon seit der ersten Vorabversion damals für die alten A1.
Virtuell meint nämlich nur das die logische Speicheraddresse die ein Programm sieht nicht unbedingt mit der physikalische Speicheradresse übereinander passt.
-Klugscheißer Modus aus-
Jedenfalls fällt mir nicht ein Programm ein das tatsächlich Swap-Speicher verwenden würde.
Ich kann mich allerdings sehr, sehr duster daran erinnern das es unter OS4.1 Classic einen Schalter gab um Zorrospeicherkarten nicht als Swap-Speicher sondern als echten Speicher einzubinden.
Virtuell ist der Speicher unter OS4 immer, schon seit der ersten Vorabversion damals für die alten A1.
Virtuell meint nämlich nur das die logische Speicheraddresse die ein Programm sieht nicht unbedingt mit der physikalische Speicheradresse übereinander passt.
-Klugscheißer Modus aus-
Jedenfalls fällt mir nicht ein Programm ein das tatsächlich Swap-Speicher verwenden würde.
Ich kann mich allerdings sehr, sehr duster daran erinnern das es unter OS4.1 Classic einen Schalter gab um Zorrospeicherkarten nicht als Swap-Speicher sondern als echten Speicher einzubinden.
- IconDesigner
- Beiträge: 423
- Registriert: 29. Dezember 2016 17:00
- Hat sich bedankt: 28 Mal
- Danksagung erhalten: 36 Mal
Re: SWAP RAM nicht aktiv? (Odyssey meldet "not enough memory"))
Sorry, jetzt mal ehrlich!
Odyssey auf einen "echten Amiga 4000 bzw. 1200" mit PPC-Erweiterung zu nutzen, ist sozu sagen unmöglich!
Ich benutze selbst unter "WinUAE" nur NetSurf, da dieser nicht so viele Resourcen verbraucht wie Odyssey!
Anders auf meinen Peg2, da ist Odyssey mein standart Browser oder auf basis von "QT" der "InternetSurfBoard", da diese CCS Richtig Darstellen können.
Odyssey auf einen "echten Amiga 4000 bzw. 1200" mit PPC-Erweiterung zu nutzen, ist sozu sagen unmöglich!
Ich benutze selbst unter "WinUAE" nur NetSurf, da dieser nicht so viele Resourcen verbraucht wie Odyssey!
Anders auf meinen Peg2, da ist Odyssey mein standart Browser oder auf basis von "QT" der "InternetSurfBoard", da diese CCS Richtig Darstellen können.
Peg2/G4 1GB Ram, Radeon 9250, 1 TB SSD plus 4 GB HDD und AmigaOS 4.1 FE
A4000D/60-PPC 128 MB Ram, CV-PPC, 4 GB HDD und AmigaOS 3.9 >>>RIP<<<
A4000D/60 64 MB Ram, CV-64, 4 GB HDD und AmigaOS 3.5
WinUAE und AmigaOS 4.1 FE Classic
Qemu auf Linux; 2GB Ram und AmigaOS 4.1 FE für Peg2
A4000D/60-PPC 128 MB Ram, CV-PPC, 4 GB HDD und AmigaOS 3.9 >>>RIP<<<
A4000D/60 64 MB Ram, CV-64, 4 GB HDD und AmigaOS 3.5
WinUAE und AmigaOS 4.1 FE Classic
Qemu auf Linux; 2GB Ram und AmigaOS 4.1 FE für Peg2
- Cyborg
- AmigaOS Entwickler
- Beiträge: 3642
- Registriert: 28. September 2009 11:10
- Hat sich bedankt: 23 Mal
- Danksagung erhalten: 57 Mal
Re: SWAP RAM nicht aktiv? (Odyssey meldet "not enough memory"))
@ ZeroG
tl;dr
Kein Programm muß explizit "Swap verwenden", solange es AllocVecTags() verwendet.
-Dozentenmodus an-
Es kommt dabei darauf an, welche Art von Speicher man alloziert, insbesondere, ob dieser gelockt ist. Standardmäßig gibt AllocVecTags() MEMF_PRIVATE zurück, was AVT_Lock == FALSE impliziert. Solcher Speicher kann ausgelagert werden. MEMF_SHARED und MEMF_EXECUTABLE Speicher implizieren dagegen AVT_Lock == TRUE, diese sind also garantiert immer am gleichen Platz verfügbar und werden niemals ausgelagert oder anderweitig verschoben.
Das Problem bei vieler Software ist nun, daß sie entweder zu alt für AllocVecTags() ist - dann wird in der Regel AllocVec()/AllocMem() mit MEMF_ANY oder MEMF_PUBLIC benutzt, was ebenfalls nicht auslagerungsfähiger Speicher sein kann bzw. ist - oder das Speichermanagement über POSIX-Aufrufe der C-Bibliotheken gemacht wird.
Bei Odyssey trifft mit 99,99% Wahrscheinlichkeit Letzteres zu, denn praktisch alles, bis auf die Oberfläche, stammt ja von Linux, BSD, etc. und benutzt daher POSIX, sprich malloc(), free(), etc.
Diese POSIX-Funktionen haben keine Ahnung von den unterschiedlichen Speichertypen in AmigaOS, also benutzen die Implementierungen immer MEMF_SHARED oder MEMF_PUBLIC, je nachdem, ob sie schon AllocVecTags() kennen oder nicht. Sie müssen ja garantieren, daß der angeforderte Speicher in jeder Situation auch verfügbar bleibt, da sie nicht wissen können, wofür er benutzt wird.
Und so wird verfügbarer Auslagerungsspeicher, egal ob auf Platte oder als Zorrokarte, nur dann benutzt, wenn Speicher als MEMF_PRIVATE mit AllocVecTags() alloziert wird. Und auch nur dafür. Alle anderen Speichersorten werden und können nicht ausgelagert werden.
Das ist ein echtes Problem, das Auslagerungsspeicher unter AmigaOS kaum von Nutzen sein läßt. Ohne einen harten API-Schnitt oder konsequentes Sandboxing jedes einzelnen Programms wird man das aber nicht in den Griff bekommen können.
Es gibt noch weitere Probleme mit dem Paging, auf die ich jetzt nicht extra noch eingehen werde, aber meine Empfehlung ist in dieser Frage tatsächlich: Finger weg von Swap und Paging, wenn es irgendwie geht.
Steckt Euch, wenn möglich, mehr richtigen Speicher rein. Bei NG sollte das bis auf Sam440 und MicroA1 kein unüberwindbares Hindernis sein und bei den Classics empfehle ich tatsächlich sowas, wie die BigRAM+ mit der NORAMPAGER Kerneloption als Z3-Speicher zu benutzen. Ist zwar wegen Zorro relativ lahm, aber immerhin laufen dann auch speicherhungrige Programme und als Swap wäre es eh auch nicht schneller.
P.S: Nein, mehr als 2GB ergeben auch bei NG-Kisten für AmigaOS absolut keinen Sinn. Mehr sollte man nur dann reinstopfen, wenn man so oft andere Systeme (z.B. Linux) auf der Kiste benutzt, daß es sich auch wirklich lohnt. Oft handelt man sich mit mehr Speicher sogar auch Probleme ein, wenn die Firmware damit nicht gut genug umgeht.
-Dozentenmodus aus-
tl;dr
Kein Programm muß explizit "Swap verwenden", solange es AllocVecTags() verwendet.
-Dozentenmodus an-
Es kommt dabei darauf an, welche Art von Speicher man alloziert, insbesondere, ob dieser gelockt ist. Standardmäßig gibt AllocVecTags() MEMF_PRIVATE zurück, was AVT_Lock == FALSE impliziert. Solcher Speicher kann ausgelagert werden. MEMF_SHARED und MEMF_EXECUTABLE Speicher implizieren dagegen AVT_Lock == TRUE, diese sind also garantiert immer am gleichen Platz verfügbar und werden niemals ausgelagert oder anderweitig verschoben.
Das Problem bei vieler Software ist nun, daß sie entweder zu alt für AllocVecTags() ist - dann wird in der Regel AllocVec()/AllocMem() mit MEMF_ANY oder MEMF_PUBLIC benutzt, was ebenfalls nicht auslagerungsfähiger Speicher sein kann bzw. ist - oder das Speichermanagement über POSIX-Aufrufe der C-Bibliotheken gemacht wird.
Bei Odyssey trifft mit 99,99% Wahrscheinlichkeit Letzteres zu, denn praktisch alles, bis auf die Oberfläche, stammt ja von Linux, BSD, etc. und benutzt daher POSIX, sprich malloc(), free(), etc.
Diese POSIX-Funktionen haben keine Ahnung von den unterschiedlichen Speichertypen in AmigaOS, also benutzen die Implementierungen immer MEMF_SHARED oder MEMF_PUBLIC, je nachdem, ob sie schon AllocVecTags() kennen oder nicht. Sie müssen ja garantieren, daß der angeforderte Speicher in jeder Situation auch verfügbar bleibt, da sie nicht wissen können, wofür er benutzt wird.
Und so wird verfügbarer Auslagerungsspeicher, egal ob auf Platte oder als Zorrokarte, nur dann benutzt, wenn Speicher als MEMF_PRIVATE mit AllocVecTags() alloziert wird. Und auch nur dafür. Alle anderen Speichersorten werden und können nicht ausgelagert werden.
Das ist ein echtes Problem, das Auslagerungsspeicher unter AmigaOS kaum von Nutzen sein läßt. Ohne einen harten API-Schnitt oder konsequentes Sandboxing jedes einzelnen Programms wird man das aber nicht in den Griff bekommen können.
Es gibt noch weitere Probleme mit dem Paging, auf die ich jetzt nicht extra noch eingehen werde, aber meine Empfehlung ist in dieser Frage tatsächlich: Finger weg von Swap und Paging, wenn es irgendwie geht.
Steckt Euch, wenn möglich, mehr richtigen Speicher rein. Bei NG sollte das bis auf Sam440 und MicroA1 kein unüberwindbares Hindernis sein und bei den Classics empfehle ich tatsächlich sowas, wie die BigRAM+ mit der NORAMPAGER Kerneloption als Z3-Speicher zu benutzen. Ist zwar wegen Zorro relativ lahm, aber immerhin laufen dann auch speicherhungrige Programme und als Swap wäre es eh auch nicht schneller.
P.S: Nein, mehr als 2GB ergeben auch bei NG-Kisten für AmigaOS absolut keinen Sinn. Mehr sollte man nur dann reinstopfen, wenn man so oft andere Systeme (z.B. Linux) auf der Kiste benutzt, daß es sich auch wirklich lohnt. Oft handelt man sich mit mehr Speicher sogar auch Probleme ein, wenn die Firmware damit nicht gut genug umgeht.
-Dozentenmodus aus-