amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Amiga, AmigaOS 4 > Memtracer für AOS4/AOS3.9? [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

03.07.2007, 22:05 Uhr

Reth
Posts: 1858
Nutzer
Hallo zusammen,

gibt es sowas wie nen Memtracer für das jew. System, der einem zeigt, welcher Task wieviel Speicher belegt?

Danke schon mal!

Ciao

[ - Antworten - Zitieren - Direktlink - ]

04.07.2007, 10:47 Uhr

Holger
Posts: 8116
Nutzer
Das bezweifle ich. Dann hätte man ja im Prinzip Ressource-Tracking. Das AmigaOS merkt sich nicht, welcher Task welchen Speicher belegt hat, und selbst wenn, wäre immer noch nicht klar, ob der jeweilige Speicherbereich wirklich zu diesem Programm gehört oder z.B. von einer Library in dessen Kontext belegt wurde, weil sie ihn da zum ersten Mal benötigte, aber in unterschiedlichen Kontext wieder verwendet.

Aus dem zweitgenannten Grund würde auch ein Patchen von AllocMem und AllocVec zum Aufzeichnen nicht helfen, weil man diese Zuständigkeitszuordnung nicht durchführen kann.

mfg

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

04.07.2007, 11:33 Uhr

whose
Posts: 2156
Nutzer
Zitat:
Original von Holger:
Das bezweifle ich. Dann hätte man ja im Prinzip Ressource-Tracking. Das AmigaOS merkt sich nicht, welcher Task welchen Speicher belegt hat, und selbst wenn, wäre immer noch nicht klar, ob der jeweilige Speicherbereich wirklich zu diesem Programm gehört oder z.B. von einer Library in dessen Kontext belegt wurde, weil sie ihn da zum ersten Mal benötigte, aber in unterschiedlichen Kontext wieder verwendet.

Aus dem zweitgenannten Grund würde auch ein Patchen von AllocMem und AllocVec zum Aufzeichnen nicht helfen, weil man diese Zuständigkeitszuordnung nicht durchführen kann.


Jain. Bei OS3.x ist das so, OS4 kann zumindest feststellen, welche Bereiche von einem Executable/einer Library belegt werden. Diese Bereiche werden geschützt, daher öfter mal DSIs bei gewissen 68k-Programmen im Zusammenhang mit Speicheroperationen oder Zeigern, die "übers Ziel hinausschießen".

Wie das genau funktioniert und ob man eine Möglichkeit hat, an diese Informationen legal heranzukommen, habe ich mir allerdings noch nicht genau angesehen.

Ein entsprechendes Tool ist mir bisher auch nicht bekannt.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233

[ - Antworten - Zitieren - Direktlink - ]

04.07.2007, 12:09 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von whose:
Jain. Bei OS3.x ist das so, OS4 kann zumindest feststellen, welche Bereiche von einem Executable/einer Library belegt werden.

Äh ja, diese Bereiche kann man auch unter AOS3.x zuordnen. Zumindest für Programme gibt's ja Debugging-Tools, die bei bei Prozessor-Exceptions auch das zugehörige Programm finden. Man könnte es wahrscheinlich auch für Libraries implementieren, aber von einem entsprechenden Tool weiß ich jetzt nichts. Und 100% verlassen kann man sich auch nicht auf die Information.

Und es sagt halt nur sehr begrenzt etwas über den belegten Speicherplatz von tasks aus.

mfg

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

05.07.2007, 02:59 Uhr

whose
Posts: 2156
Nutzer
@Holger:

Tatsache ist aber, daß es unter OS4 MEMF_EXECUTABLE als Speicherattribut gibt. Das wäre dann schon mal der Speicher für den Task/Prozess selbst.

Wie das für vom Task selbst allozierten Speicher aussieht, kann ich mangels aktuellem SDK halt derzeit nicht sagen. Irgendwo war mal die Rede von eingeschränktem Resourcetracking, aber ob das im vorigen SDK war oder irgendwo auf utilitybase erwähnt wurde, weiß ich nicht mehr und ich habe gerade auch nicht die Möglichkeit ins alte OS4-SDK zu schauen.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233

[ - Antworten - Zitieren - Direktlink - ]

05.07.2007, 10:39 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von whose:
@Holger:
Tatsache ist aber, daß es unter OS4 MEMF_EXECUTABLE als Speicherattribut gibt. Das wäre dann schon mal der Speicher für den Task/Prozess selbst.

Ich glaube, Du hast mich missverstanden. Natürlich gehört der Speicher des ausführbaren Programms dem Programm selber. Aber natürlich ist die Menge des gesamten vom Programm belegten Speichers größer. Und unter AOS3.x lässt sich der vom Programmcode belegte Speicher manipulieren. Das wird z.B. von asynchron laufenden Programmen benutzt, um die Freigabe nach dem Beenden des ursprünglichen Tasks zu verhindern.

Ich denke, wenn man diverse Indizien sammelt, kann man für typische Programme eine Menge Ressourcen dem zugehörigen Task zuordnen. Es würden aber trotzdem ne Menge Lücken bleiben. Und es gibt, soweit ich weiß, derzeit kein solchen Programm.

mfg

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

05.07.2007, 18:17 Uhr

hansfaust
Posts: 56
Nutzer
@Reth:
[qoute]
gibt es sowas wie nen Memtracer für das jew. System, der einem zeigt, welcher Task wieviel Speicher belegt?
[/quote]


Schau dir das mal an:

http://aminet.net/dev/moni/mTrack.lha

Das ist für das 68k-AMIGA-OS.


[ - Antworten - Zitieren - Direktlink - ]

05.07.2007, 19:06 Uhr

ZeroG
Posts: 1487
Nutzer
Zitat:
Original von whose:
@Holger:

Tatsache ist aber, daß es unter OS4 MEMF_EXECUTABLE als Speicherattribut gibt. Das wäre dann schon mal der Speicher für den Task/Prozess selbst.

Wie das für vom Task selbst allozierten Speicher aussieht, kann ich mangels aktuellem SDK halt derzeit nicht sagen. Irgendwo war mal die Rede von eingeschränktem Resourcetracking, aber ob das im vorigen SDK war oder irgendwo auf utilitybase erwähnt wurde, weiß ich nicht mehr und ich habe gerade auch nicht die Möglichkeit ins alte OS4-SDK zu schauen.


Es gibt seit V50:
IExec->AddTrackable()
IExec->DeleteTrackable()
IExec->FindTrackable()
IExec->RemTrackable()
die wohl hauptsächlich für Systeminteren gebrauch gedacht sind.

Für normale Programme gibts:
IExec->AllocSysObject()
IExec->FreeSysObject()
allerdings wird der Speicher als default ohne Resourcetracking angefordert.

Man kann mit IExec->OwnerOfMem() versuchen rauszubekommen zu welchem Task eine Speicheradresse gehört. Hab aber keine Ahnung wie gut das funktioniert.

[ - Antworten - Zitieren - Direktlink - ]

06.07.2007, 18:14 Uhr

whose
Posts: 2156
Nutzer
@ZeroG:

Danke, dann ist zumindest diese Frage teilweise geklärt. Bei OS4 ist dann also ein eingeschränktes Resourcetracking zumindest schon mal begonnen worden.

@Holger:

Das das nicht haarklein geht, habe ich doch gar nicht bestritten. Ich habe nur gesagt, daß das unter OS4 weiter geht als noch unter OS3. Und halt, daß mir für OS4 derzeit kein derartiges Programm bekannt ist geschweige denn, daß ich da näheres zu sagen kann, weil das aktuelle SDK noch nicht erhältlich ist.

Ich wollte keine Streitereien über Resourcetracking, dessen Implementation unter OS3.x/4 oder was weiß ich vom Zaun brechen. Es ist mir schon bewußt, daß da noch einiges zu tun ist.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233

[ - Antworten - Zitieren - Direktlink - ]

09.07.2007, 13:49 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von whose:
Ich wollte keine Streitereien über Resourcetracking, dessen Implementation unter OS3.x/4 oder was weiß ich vom Zaun brechen.

Ich habe es auch nicht so aufgefasst. Es ging nur um eine Bestandsaufnahme, da die Ausgangsfrage kein Ziel-OS nennt. Fazit ist, dass auch die begrenzten Möglichkeiten von AOS3.x derzeit in keinem Tool dieser Art ausgeschöpft werden, die von AOS4 offenbar auch noch nicht.

mfg

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Amiga, AmigaOS 4 > Memtracer für AOS4/AOS3.9? [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.