Speicherfragmentierung und Abstürze?

(DE) System, Installation, Konfiguration, Hardware, Treiber, Netzwerk, Virtualisierung, etc.
(EN) System, Installation, Configuration, Hardware, Drivers, Network, Virtualisation, etc.
Martin Vieregg
Posts: 441
Joined: Tue 19. Aug 2014, 09:30

Speicherfragmentierung und Abstürze?

Post by Martin Vieregg »

Seit ich die Systemupdates für Dooble durchgeführt habe, ist mein System instabiler geworden. Nach einer gewissen Nutzung mit Starten und Beenden größerer Programme lassen sich manche Programme nicht mehr starten. ("Dieses Programm ist kein OS/2- oder DOS-Programm"). Ich habe ArcaOS 5.0.6.
Ich habe zur Diagnose, wie es ganz schlimm war und gar nichts mehr ging, das Speicher-Anzeigeprogramm SystemLoad gestartet und dann hing sich der ganze Rechner so schlimm auf, dass aktuell bearbeitete JFS-Dateien auf Null Bytes gesetzt wurden. 7 Stunden Tipparbeit ging mir über den Jordan.

Hat jemand Tipps, wie man etwa durch Einstellungen in der Config.sys oder durch erneute Updates irgendwie wieder mehr Stabilität bekommt?

Andi B.
Posts: 651
Joined: Tue 24. Dec 2013, 16:40

Post by Andi B. »

Ich starte auf allen meinen Rechnern automatisch beim Systemstart above512.cmd welches mir den aktuellen Speicherverbrauch ständig in einem CLI Fenster anzeigt. Dadurch hab ich mittlerweile ein gutes Gefühl dafür, was wieviel Speicher verbrät.

Einstellungen welche die Speicherproblematik beeinflussen, gibt es viele. Die müssen aber zum Nutzungsprofil passen. Von JFS Cache an dem ich rumgedreht habe, bis zum LAN Server denn ich mittlerweile nur mehr bei Bedarf starte. Ich könnte dazu bei Usertreffen erzählen, wie ich Seamonkey, AOO und VirtualBOX neben diversen Tools wie Editoren und Compiler, gleichzeitig nutze. Auch Dooble geht da parallel manchmal noch für spezielle Seiten welche mit SM nicht mehr wollen. Aber gerade Dooble, oder besser gesagt die Scripte auf diversen Seiten, fressen oft soviel Speicher, dass sich dann irgendwas beendet. Sciptblocker bzw. die Einträge in der hosts Datei, mögen helfen, dass das noch irgendwie erträglich ist. Aber langsam (oder eher schneller) ist Ende der Fahnenstange bei modernen (oder besser gesagt unendlich verscripteten Müllseiten) mit unserem OS. Vieles im www geht einfach nicht mehr unter OS/2. Jeder muss für sich entscheiden ob er das braucht, oder sich immer weiter kasteien kann.

User avatar
DonLucio
Posts: 789
Joined: Sun 29. Dec 2013, 01:14
Location: Hamburg

Post by DonLucio »

Martin Vieregg wrote:
Tue 4. Oct 2022, 10:09
Seit ich die Systemupdates für Dooble durchgeführt habe, ist mein System instabiler geworden.
Geht mir genauso. Obwohl Dooble an sich läuft (nach etliche Verbiegungen), habe ich in meinem übrigen System teilweise schlimme Abstürze gehabt, u.a. mit Datenverlust. Seitdem habe ich mich wieder auf den Vor-Dooble-Zustand gebracht (war mühsam). Taurig, aber für mich ist das Thema Dooble erledigt.

User avatar
MikeK
Posts: 325
Joined: Mon 23. Dec 2013, 13:51
Location: Potsdam

Post by MikeK »

Ich kann nicht bestätigen, dass mit Dooble und den benötigten Komponenten meine OS/2-Systeme instabiler geworden sind.
Bin froh, dass mit Dooble wieder mehr Webseiten zugänglich sind. Standardbrowser ist weiterhin der Feuerfuchs und wenn's da nicht geht, dann kommt Dooble zum Einsatz.

Grüße aus Potsdam,
Mike

Andi B.
Posts: 651
Joined: Tue 24. Dec 2013, 16:40

Post by Andi B. »

Ebenso wie Mike. Wenn SM eine Seite nicht mehr anzeigt, starte ich parallel Dooble. Systemabstürze mit Datenverlust, hatte ich noch keine. Mein Backup bzw. die regelmäßigen Autosave Dateien, muss ich nur sehr selten bemühen.

Das sich Dooble oder SM automatisch verabschieden wenn ich parallel dazu noch VirtualBOX und AOO laufen habe, passiert allerdings häufig. Ich sehe mir aber auch keine Filmchen über'n Browser an und hab üblicherweise auch kein Audio aktiviert. Ob das den Unterschied macht?

ThomasFrey
Posts: 147
Joined: Fri 2. Apr 2021, 17:29

Post by ThomasFrey »

Habt Ihr "mark_high.cmd" wieder durchgeführt, damit die DLLs ins hohe Memory geladen werden ?

User avatar
MikeK
Posts: 325
Joined: Mon 23. Dec 2013, 13:51
Location: Potsdam

Post by MikeK »

ThomasFrey wrote:
Wed 5. Oct 2022, 11:41
Habt Ihr "mark_high.cmd" wieder durchgeführt, damit die DLLs ins hohe Memory geladen werden ?
Bei mir ist "mark_high.cmd" defintiv gelaufen.
Mike

Martin Vieregg
Posts: 441
Joined: Tue 19. Aug 2014, 09:30

Post by Martin Vieregg »

Die Probleme sind bei mir definitiv nicht so groß wie bei Don Lucio. Es ging jetzt auch ein paar Wochen gut mit Dooble. Wobei ich standardmäßig auch weiterhin Firefox nutze, weil er die Passwörter sich merkt, beim Laden von Online-Karten (Google Maps und Co) Dooble extrem langsam ist und die Tastaturbelegung anders ist. Trotzdem bin ich natürlich auch froh, dass es jetzt Dooble gibt.

Above512.cmd, wo gibt es das? mark_high.cmd habe ich laufen lassen.
Muss ich mark_high.cmd eigentlich einmal oder nach jedem Booten laufen lassen?

ThomasFrey
Posts: 147
Joined: Fri 2. Apr 2021, 17:29

Post by ThomasFrey »

Martin Vieregg wrote:
Wed 5. Oct 2022, 23:52
Muss ich mark_high.cmd eigentlich einmal oder nach jedem Booten laufen lassen?
Nein, nur nach einem Update der betreffenden DLLs. Dann wird in diesen 1 Byte gepatcht und sie werden ins High-Memory geladen.

User avatar
aschn
Posts: 1363
Joined: Wed 25. Dec 2013, 22:47

Post by aschn »

Genau. So, wie von Thomas beschrieben, wird nur 1 Bit geändert, dass bestehen bleibt.

Würde mich wundern, wenn Doodle ohne das "Hochladen" von DLLs funktionieren würde.

Zu Above512: Das ist ein Befehlszeilenprogramm, das diese Eigenschaften hat:

o Aktuelle Speicherausnutzung der vier Bereiche anzeigen.

o DLLs zum "Hochladen" markieren, Code oder Data oder beides. (Häufig klaapt nur Code.)

o DLLs zum "Niedrigladen", also Bereich unter 512 MB markieren. Das macht die Aktion vom Punkt daüber rückgängig.

Code: Select all

epm: {0}[F:\Apps\sysutil\above512] above512

ABOVE512.exe  LX format 32bit DLL module 'loading above 512MB' marking utility,
  version 0.01b (internal/experimental use only)
Copyright 2004 Takayuki 'January June' Suwa.

usage: ABOVE512 {DLL module file} [-options]
  without options, ABOVE512 shows current DLL object information.
options: -q  quiets (no message)
         -c  marks pure 32bit code objects as 'loading above 512MB'
         -d  marks pure 32bit data objects as so
         -b  marks both of pure 32bit code and data objects
         -p  marks pure 32bit preloaded code/data objects and removes preload
         -u  unmarks 'loading above 512MB' pure 32bit code/data objects
         -!  unlocks the DLL module before open
current free virtual address space in kB (private / shared):
  335488 / 239424 below 512MB line, 1835008 / 1751900 above 512MB line

epm: {-1}[F:\Apps\sysutil\above512] 
Das übliche Programm zum Bearbeiten der DLLs ist highmem.exe:

Code: Select all

{0}[C:\] which highmem
G:/USR/BIN/highmem.exe

{0}[C:\] highmem -?

HighMem, a LX format 32bit DLL module 'loading above 512MB' marking utility,
Version 1.0.2
(C) 2012-20 Yuri Dario <yd@os2power.com>.
    Partially based on ABOVE512 (C) 2004 Takayuki 'January June' Suwa.

usage: HIGHMEM [-options] {DLL module file} ...
Without options, current DLL object information are dumped.
Options:
 --quiet   -q  quiets (no message)
 --verbose -v  verbose output (-v -v even more verbose)
 --code    -c  marks pure 32bit code objects as 'loading above 512MB'
 --data    -d  marks pure 32bit data objects as so
 --both    -b  marks both of pure 32bit code and data objects
 --unmark  -u  unmarks 'loading above 512MB' pure 32bit code/data objects
 --exclude -x file  list of files to be excluded (max 1024 entries
 --help    -?  show this help

{0}[C:\]
Übrigens ist das einmalige Anzeigen von above512 natürlich nicht mit dem kontinuierlichen von SystemLoad vergleichbar.

Hier noch der Versuch mit above512 und highmem den aktuellen Zustand einer DLL anzuzeigen:

Code: Select all

epm: {0}[C:\] above512 os2\dll\pmmerge.dll
module : os2\dll\pmmerge.dll
 object 0 : base 0x1e800000, size 0x0000886c, flags 0x0000d045
  readable, !writeable, executable, !resource, !discardable, !shared,
  preload, !invalid, swappable, 16:16 alias, conforming,
  !32bit, IOPL, !himem
 object 1 : base 0x1e810000, size 0x0000d270, flags 0x00001045
  readable, !writeable, executable, !resource, !discardable, !shared,
  preload, !invalid, swappable, 16:16 alias, !conforming,
  !32bit, !IOPL, !himem
 object 2 : base 0x1e820000, size 0x000002dc, flags 0x00009045
  readable, !writeable, executable, !resource, !discardable, !shared,
  preload, !invalid, swappable, 16:16 alias, !conforming,
  !32bit, IOPL, !himem
 object 3 : base 0x1e830000, size 0x00163f84, flags 0x00002045
  readable, !writeable, executable, !resource, !discardable, !shared,
  preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, !himem
 object 4 : base 0x1e9a0000, size 0x00000020, flags 0x00001045
  readable, !writeable, executable, !resource, !discardable, !shared,
  preload, !invalid, swappable, 16:16 alias, !conforming,
  !32bit, !IOPL, !himem
 object 5 : base 0x1e9b0000, size 0x000022b0, flags 0x00002045
  readable, !writeable, executable, !resource, !discardable, !shared,
  preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, !himem
 object 6 : base 0x1e9c0000, size 0x00001924, flags 0x00001021
  readable, !writeable, !executable, !resource, !discardable, shared,
  !preload, !invalid, swappable, 16:16 alias, !conforming,
  !32bit, !IOPL, !himem
 object 7 : base 0x13e30000, size 0x000009d0, flags 0x00001043
  readable, writeable, !executable, !resource, !discardable, !shared,
  preload, !invalid, swappable, 16:16 alias, !conforming,
  !32bit, !IOPL, !himem
 object 8 : base 0x13e40000, size 0x0001a5c0, flags 0x00002063
  readable, writeable, !executable, !resource, !discardable, shared,
  preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, !himem
 object 9 : base 0x13e60000, size 0x000008b0, flags 0x00002023
  readable, writeable, !executable, !resource, !discardable, shared,
  !preload, !invalid, swappable, !16:16 alias, !conforming,
  32bit, !IOPL, !himem
 object 10 : base 0x13e70000, size 0x00000200, flags 0x00001023
  readable, writeable, !executable, !resource, !discardable, shared,
  !preload, !invalid, swappable, 16:16 alias, !conforming,
  !32bit, !IOPL, !himem
 object 11 : base 0x13e80000, size 0x0000ffdc, flags 0x00001063
  readable, writeable, !executable, !resource, !discardable, shared,
  preload, !invalid, swappable, 16:16 alias, !conforming,
    !32bit, !IOPL, !himem

Code: Select all

epm: {0}[C:\] highmem os2\dll\pmmerge.dll -v
Processing module : os2\dll\pmmerge.dll
 object 0 : base 0x1e800000, size 0x0000886c, flags 0x0000d045, executable, !himem
 object 1 : base 0x1e810000, size 0x0000d270, flags 0x00001045, executable, !himem
 object 2 : base 0x1e820000, size 0x000002dc, flags 0x00009045, executable, !himem
 object 3 : base 0x1e830000, size 0x00163f84, flags 0x00002045, executable, !himem
 object 4 : base 0x1e9a0000, size 0x00000020, flags 0x00001045, executable, !himem
 object 5 : base 0x1e9b0000, size 0x000022b0, flags 0x00002045, executable, !himem
 object 6 : base 0x1e9c0000, size 0x00001924, flags 0x00001021, data, !himem
 object 7 : base 0x13e30000, size 0x000009d0, flags 0x00001043, data, !himem
 object 8 : base 0x13e40000, size 0x0001a5c0, flags 0x00002063, data, !himem
 object 9 : base 0x13e60000, size 0x000008b0, flags 0x00002023, data, !himem
 object 10 : base 0x13e70000, size 0x00000200, flags 0x00001023, data, !himem
 object 11 : base 0x13e80000, size 0x0000ffdc, flags 0x00001063, data, !himem

epm: {0}[C:\] 
Andreas Schnellbacher

Andi B.
Posts: 651
Joined: Tue 24. Dec 2013, 16:40

Post by Andi B. »

Hier mein above512watch.cmd

Code: Select all

/* memmon.cmd - memory monitor */
/* a wrapper for above512 to monitor memory usage */
/* use control+c to stop monitoring */
/* pm = private memory */
/* sm = shared memory */
/* left entries display memory below 512 */
/* right entries display memory above 512 */

out = 0
curline = ""
first_string = ""

call rxFuncAdd "SysLoadFuncs", "REXXUTIL", "SysLoadFuncs"
call SysLoadFuncs


SIGNAL ON HALT /* termine program with CONTROL+C */

"mode 65,100"
/* "pgmcntrl /po:3360,15,620,1450" */

do forever

'@ABOVE512 2>nul | rxqueue 2>NUL 1>&2'
call SysSleep 1

do while queued() <> 0
curLine = lineIN( "QUEUE:" )

if out = 0 then do
parse var curLine first_string .
if first_string = "current" then out = 1
else out = 0
end
else do
parse var curline val.1 . val.2 . . . val.3 . val.4 .
say "pm:" val.1 "sm:" val.2 " <---512---> pm:" val.3 "sm:" val.4

out = 0
end

end
end

exit

HALT:
exit
Achtung, die Windowgrößre "pgmcntrl /po:3360,15,620,1450" passt für meinen Monitor. Keine Ahnung wer da ursprünglich geschrieben hat.

Martin Vieregg
Posts: 441
Joined: Tue 19. Aug 2014, 09:30

Post by Martin Vieregg »

Ich habe erstaunlicherweise nun auch noch ein sporadisch, aber wiederholbar auftretendes Problem bei einem selbst geschriebenen WDsibyl-Programm. Beim Sprung in eine Funktion - die Sprungroutine ist in Assembler geschrieben, was ich nicht gut lesen kann und die Funktion selbst wird gar nicht mehr ausgeführt - stürzt das Programm mit einem Access Violation Fehler (Speicherzugriffsfehler) ab. Im Debugger verhält sich das Programm nicht anders. Bei einer weiterhin lauffähigen ArcaOS 5.0.2 Installation läuft es, bei ArcaOS 5.0.6 mit installiertem Dooble läuft es nicht.

Martin Vieregg
Posts: 441
Joined: Tue 19. Aug 2014, 09:30

Post by Martin Vieregg »

Das Problem war einen Tag lang reproduzierbar. Am nächsten Tag war es auf einmal wieder verschwunden. Auf einem funktionsidentischen Rechner (auch ArcaOS 5.0.6 plus Dooble) ließ sich der Fehler nicht reproduzieren. Merkwürdig.