Private Storage above 512MB

(DE) System, Installation, Konfiguration, Hardware, Treiber, Netzwerk, Virtualisierung, etc.
(EN) System, Installation, Configuration, Hardware, Drivers, Network, Virtualisation, etc.
Antworten
Benutzeravatar
wilfried
Beiträge: 667
Registriert: Mo 23. Dez 2013, 18:26
Wohnort: Barsinghausen
Kontaktdaten:

Private Storage above 512MB

Beitrag von wilfried »

Hier noch ein Nachtrag zum Usertreffen in Köln.
Ich hatte dort die Frage gestellt ob die Aufteilung zwischen Private- und Shared-Storage über 512MB beeinflußt werden kann. Bei der Antwort auf die Frage hatte ich den Eindruck das meine Frage nicht richtig verstanden wurde, deshalb stelle ich sie hier erneut.

Hier ein Beispiel für den Hintergrund meiner Frage:
STORAGE.jpg
Man sieht hier sehr schön, dass alle Speicherarten genutzt werden, ausser dem Private-Storage über 512MB.
Dieser Speicher hat bei mir seit dem Hochfahren 917504K und es sind keine Zuordnungen aus diesem Bereich erkennbar.
Mein System hat 3GB RAM und fast 1GB RAM davon schlummern ungenutzt vor sich hin.

Gibt es Anwendungen oder Systemfunktionen die auf diesen Bereich zugreifen können?

Gibt es einen Trick um die Aufteilung zwischen Private- und Shared-Storage zu verschieben?
Zuletzt geändert von wilfried am Mi 21. Dez 2016, 16:45, insgesamt 1-mal geändert.
Benutzeravatar
ak120
Beiträge: 1044
Registriert: Do 8. Mai 2014, 12:50
Wohnort: Demmin
Kontaktdaten:

Beitrag von ak120 »

Kann es sein, daß die Meßmethode in diesem Punkt nicht ganz richtig ist? Zum Vergleich eventuell THESEUS4 heranziehen: ftp://ftp.boulder.ibm.com/ps/products/o ... es4001.exe
Benutzeravatar
wilfried
Beiträge: 667
Registriert: Mo 23. Dez 2013, 18:26
Wohnort: Barsinghausen
Kontaktdaten:

Beitrag von wilfried »

Danke für den Hinweis!
Hatte Theseus bereits während der Entwicklung zur Überprüfung genutzt.
Benutzeravatar
HerwigB
Beiträge: 57
Registriert: Mo 23. Dez 2013, 06:39
Wohnort: Sankt Veit an der Glan
Kontaktdaten:

Beitrag von HerwigB »

Es gibt das utility highmem.exe mit dem man DLLs markieren kann, damit sie hochgeladen werden können.
Voraussetzung: Zumindest Kernel 14.105 oder besser (und die dazugehörige DOSCALL1.DLL!!!).

Wir verteilen highmem.exe mit AOO und Firefox, es kann aber benutzt werden um beliebige DLLs als hochladbar zu markieren.
Auch VirtualBox kann hochgeladen werden.
Die Verwendung kann die parallele Verwendung von großen Programmen massiv verbessern.
Der kommende ArcaOS Kernel bringt in diesem Bereich einige Verbesserungen.

Der Pferdefuss dabei:
1.) Es gibt (derzeit) keine generelle Regel, welche DLL damit funktioniert und welche nicht.
2.) Eine bestimmte DLL kann auf einem System hochgeladen gut funktionieren, auf einem anderen nicht. Es spielen da mehrere Parameter eine Rolle und das Zusammenspiel ist nicht ganz geklärt (u.a VIRTUALADDRESSLIMIT!).

Wie heisst es so schön: "Your mileage my vary".

Wir von bitwise works versuchen seit einiger Zeit sicherzustellen, dass alles was wir an Bibliotheken als rpms zur Verfügung stellen, auch hochladbar ist. Unsere DLLs sind aber noch nicht als hochladbar markiert.

Und leider: Die Qt4 DLLs sind derzeit instabil, wenn hochgeladen (sie stammen noch aus der Zeit bevor wir versucht haben das sicherzustellen). Die nächste Qt Version wird da Abhilfe schaffen.
Benutzeravatar
wilfried
Beiträge: 667
Registriert: Mo 23. Dez 2013, 18:26
Wohnort: Barsinghausen
Kontaktdaten:

Beitrag von wilfried »

Hallo Herwig,

Danke für die Antwort!
Soweit ich das beurteilen kann sprechen wir bei hochladbaren DLLs von SHARED Memory > 512MB. Der PRIVATE Memory > 512MB bleibt davon unberührt.
Bleibt die Frage: Wie kann man den Schatz heben der im PRIVATE Memory > 512MB liegt?

Ich hoffe auf einen Trick der die Aufteilung zwischen PRIVATE und SHARED beeinflußen kann.
Andi B.
Beiträge: 742
Registriert: Di 24. Dez 2013, 16:40
Kontaktdaten:

Beitrag von Andi B. »

Ich hab in dem Bereich zu wenig Ahnung, aber ich frage mich, warum du da so interessiert bist. Hattest du jemals den Fall, dass 'high shared mem' aufgebraucht war und eine Anwendung deshalb nicht mehr lief, obwohl reichlich 'high private mem' frei war?

Ich würde in so einem Fall nämlich erwarten, dass der Kernel ohnehin den 'high private mem' der Applikation zur Verfügung stellt bevor er anfängt zu swappen. Ehrlich gesagt kann ich mir nicht vorstellen, dass der Kernel so blöd ist und auf die Festplatte swapped, wenn ohnehin noch irgendwo Speicher verfügbar ist.

Also geht es dir hier um ein praktisches Problem welches nachgestellt werden kann, oder um eine Erklärung wie der Kernel Speicher verwaltet?
Benutzeravatar
wilfried
Beiträge: 667
Registriert: Mo 23. Dez 2013, 18:26
Wohnort: Barsinghausen
Kontaktdaten:

Beitrag von wilfried »

Hallo Andi,

Es geht nicht ums Swappen oder den eingebauten Speicher.
Das Problem steckt im Adressraum. Wir können mit unserem System maximal 3GB für Anwendungen adressieren.
Wie auf dem Screenshot zu erkennen ist, werden davon 0,9 GB nicht genutzt.
Ich Frage mich wie man an diesen Speicher herankommt.
In meinem System war schon mehrfach zu beobachten wie freier SHARED-Storage > 512MB unter 100MB fällt.
Sobald ein Speicherpool aufgebraucht ist, friert uns das System ja ein und es hilft nur noch ein Neustart.
Es geht also um ein Konfigurationsproblem, wie kann man das System konfigurieren damit alle Speicherarten möglichst gleichmäßig ausgelastet werden.
Zur Zeit ist das noch ein Luxusproblem, aber wir beobachten das die Programme immer mehr Speicher verlangen und so wird es nicht mehr lange dauern bis daraus ein echtes Problem wird.

Mir geht es um die Frage nach welchen Regeln der Kernel den Speicher aufteilt und wie man das beeinflußt.
Ich gehe davon aus das die 512MB-Grenze eine technische Ursache hat.
Aber die Aufteilung in SHARED- und PRIVATE-Storage ist in Frage zu stellen.
PRIVATE-Storage ist Speicher in dem ausführbare Programme laufen und Anwendungsspeicher allokiert werden kann.
SHARED-Storage ist Speicher der von verschiedenen Programmen gemeinsam genutzt werden kann, z.B. gemeinsame Nutzung dort geladener DLLs.

Habe ich mich verständlich ausgedrückt?
Verstehe ich etwas falsch?
Benutzeravatar
ak120
Beiträge: 1044
Registriert: Do 8. Mai 2014, 12:50
Wohnort: Demmin
Kontaktdaten:

Beitrag von ak120 »

wilfried hat geschrieben: Man sieht hier sehr schön, dass alle Speicherarten genutzt werden, ausser dem Private-Storage über 512MB.
Dieser Speicher hat bei mir seit dem Hochfahren 917504K und es sind keine Zuordnungen aus diesem Bereich erkennbar.
Man sollte vielleicht erwähnen, daß es sich um virtuellen Speicher handelt.
Mein System hat 3GB RAM und fast 1GB RAM davon schlummern ungenutzt vor sich hin.
Diese Aussage ist nicht belegbar und nachvollziehbar. Es ist Sache der Speicherverwaltung wie physischer Speicher genutzt wird. Über die CONFIG.SYS mit MEMMAN und VIRTUALADDRESSLIMIT anpaßbar.
Gibt es Anwendungen oder Systemfunktionen die auf diesen Bereich zugreifen können?
Wenn virtueller Speicher gemeint ist, braucht es nur eine Anwendung welche entsprechend viel Speicher anfordert, welcher stets virtuell ist.
Gibt es einen Trick um die Aufteilung zwischen Private- und Shared-Storage zu verschieben?
Es gibt sowohl konventionell als auch in Private einen Shared-Bereich.
erdmann
Beiträge: 594
Registriert: Mo 4. Jan 2016, 14:36

Beitrag von erdmann »

wilfried hat geschrieben:Hallo Andi,

Es geht nicht ums Swappen oder den eingebauten Speicher.
Das Problem steckt im Adressraum. Wir können mit unserem System maximal 3GB für Anwendungen adressieren.
Wie auf dem Screenshot zu erkennen ist, werden davon 0,9 GB nicht genutzt.
Ich Frage mich wie man an diesen Speicher herankommt.
In meinem System war schon mehrfach zu beobachten wie freier SHARED-Storage > 512MB unter 100MB fällt.
Sobald ein Speicherpool aufgebraucht ist, friert uns das System ja ein und es hilft nur noch ein Neustart.
Es geht also um ein Konfigurationsproblem, wie kann man das System konfigurieren damit alle Speicherarten möglichst gleichmäßig ausgelastet werden.
Zur Zeit ist das noch ein Luxusproblem, aber wir beobachten das die Programme immer mehr Speicher verlangen und so wird es nicht mehr lange dauern bis daraus ein echtes Problem wird.

Mir geht es um die Frage nach welchen Regeln der Kernel den Speicher aufteilt und wie man das beeinflußt.
Ich gehe davon aus das die 512MB-Grenze eine technische Ursache hat.
Aber die Aufteilung in SHARED- und PRIVATE-Storage ist in Frage zu stellen.
PRIVATE-Storage ist Speicher in dem ausführbare Programme laufen und Anwendungsspeicher allokiert werden kann.
SHARED-Storage ist Speicher der von verschiedenen Programmen gemeinsam genutzt werden kann, z.B. gemeinsame Nutzung dort geladener DLLs.

Habe ich mich verständlich ausgedrückt?
Verstehe ich etwas falsch?
Man kann das nicht so direkt einstellen wie du dir das vorstellst und es gibt da 2 Aspekte:
1) Im "high memory" (sowohl private als auch shared) gelten besondere Regeln. Insbesondere gilt der herkömmliche "Tiling" Algorithmus nicht mehr mit dem man einfach eine 16-bit far Addresse in eine lineare Addresse (und umgekehrt) umrechnen konnte. Warum ist das noch wichtig ? Weil es genügend SW gibt die beim Thunking von 16-bit nach 32-bit oder umgekehrt noch diese einfache Addressumrechnung vorraussetzt. Der OS/2 kernel ist auch heute noch nicht durchgehend 32-bit. Es gibt deshalb auch kernel Funktionen die heute noch nicht mit Speicheradressen aus dem High Memory Bereich umgehen können. Hierzu gibt es punktuell Workarounds (Extrakopie im Low Memory Addressbereich), BWW hat dies bei der einen oder anderen Funktion angewendet.
Ansonsten kann bei dynamischer Speicherallokation (also zur Laufzeit) eine Applikation auch gleich dediziert Speicher im High Memory anfordern (und der Programmierer per trial and error herausfinden ob er nicht in einen Problemfall wie oben beschrieben hineinläuft). Meine HW Manager Ersetzungsklasse alloziiert für ihre USB Datenbank den ganzen Speicher als private high memory, das ist ja eine WPS Klasse und die liegt im Speicherraum von PMSHELL.EXE (!), damit für andere WPS Klassen der untere Speicherraum freibleibt weil die meiste SW sich eben nicht die Mühe macht den dynamisch alloziierten Speicher im High Memory anzufordern.

2) Die Grenze zwischen private und shared kann man gar nicht dediziert einstellen, das gilt sowohl im low memory als auch im high memory Bereich.
"private" wächst einfach von unten nach oben, "shared" von oben nach unten und irgendwo stoßen sie dann zusammen. Das wird dann zum Problem wenn man eigentlich via VIRTUALADDRESSLIMIT genug virtuellen zusätzlichen Speicherraum geschaffen hat, viele Applikationen brav den high memory benutzen aber dann das shared memory im high memory Bereich trotzdem ausgeht weil zu viel "private" memory im high memory Bereich alloziiert wurde ...
Sinngemäß gilt das Gesagte natürlich auch im low memory Bereich.


Lars
Antworten