Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Arbeitsspeicher läuft über

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX
Autor Thema:  Arbeitsspeicher läuft über (1591 mal gelesen)
BilboBeutel
Mitglied
Student


Sehen Sie sich das Profil von BilboBeutel an!   Senden Sie eine Private Message an BilboBeutel  Schreiben Sie einen Gästebucheintrag für BilboBeutel

Beiträge: 28
Registriert: 03.09.2013

WIN7 x64
-------------------
NX 9.0.3.4
Nativ

erstellt am: 01. Sep. 2014 15:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo liebe Programmiergemeinde,


ich habe ein Programm in .Net geschrieben, das unsere Teilefamilien automatisch ausrollt (alle Kinderdateien erzeugt), damit sie vorbereitet zur Verfügung stehen.

Anfangs erzeugt NX 30 Kinderteile pro Minute. Eine Geschwindigkeit, mit der ich absolut leben könnte. Jetzt habe ich das Programm übers Wochenende laufen lassen und als ich heute Morgen ins Büro kam wurden viel weniger Dateien erstellt als erwartet und die Geschwindigkeit liegt bei einem einzigen Teil pro Minute.

Ich kann mit dem Task-Manager beobachten, dass der benötigte Arbeitsspeicher von NX kontinuierlich ansteigt und zwar um ca. 100K pro erstellten Kindteil. Der Prozess, der übers Wochenende lief und so unglaublich träge ist, ist auf 1.200.000K angestiegen und konnte mittlerweile wieder auf 1.060.000K abgefallen. Wohl gemerkt, wenn ich mein Programm in NX starte liege ich bei 250.000K.

Ich dachte eigentlich, dass ich ein solches Verhalten verhindern kann indem ich dafür sorge, dass immer schön alle Parts innerhalb NX geschlossen werden, die ich nicht mehr benötige, aber anscheinend liegt der Hund woanders begraben.

Hattet Ihr schon ähnliche Probleme?
Woran könnte dieses Verhalten liegen?

Ich bin für jeden Tipp dankbar, auch wenn es euch trivial erscheinen mag!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Rainer Schulze
Ehrenmitglied V.I.P. h.c.
Dipl.-Ing. im Ruhestand


Sehen Sie sich das Profil von Rainer Schulze an!   Senden Sie eine Private Message an Rainer Schulze  Schreiben Sie einen Gästebucheintrag für Rainer Schulze

Beiträge: 4419
Registriert: 24.09.2012

erstellt am: 01. Sep. 2014 16:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für BilboBeutel 10 Unities + Antwort hilfreich

>>das unsere Teilefamilien automatisch ausrollt (alle Kinderdateien erzeugt),

Warum schreibst Du solch ein Programm?
Das Erzeugen der Teile einer Teilefamilie kann NX auch ohne ein zusätzliches Programm...

>>dass der benötigte Arbeitsspeicher von NX kontinuierlich ansteigt

Speicher wird erst dann wieder frei gegeben, wenn er nicht mehr benötigt wird.
Und das ist oftmals erst dann, wenn man das Programm schliesst...
Ich bin kein erfahrener Programmierer.
Aber selbst ich weiß, daß das Speichern ein Kopieren auf ein anderes Medium ist.
Selbst wenn dadurch ein paar Bit frei würden - wie erreichst Du denn, dass dieser "freie" Speicher wieder verwendbar wird und nicht einfach ein toter Raum in Deinem Datenmodell wird?

>>100K pro erstellten Kindteil.
>>ist auf 1.200.000K angestiegen

Eine Teilefamilie mit 120.000 Teilen?
Das halte ich für ungewöhnlich.

------------------
Rainer Schulze

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

BilboBeutel
Mitglied
Student


Sehen Sie sich das Profil von BilboBeutel an!   Senden Sie eine Private Message an BilboBeutel  Schreiben Sie einen Gästebucheintrag für BilboBeutel

Beiträge: 28
Registriert: 03.09.2013

WIN7 x64
-------------------
NX 9.0.3.4
Nativ

erstellt am: 01. Sep. 2014 18:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Rainer,

das Programm dient dazu ALLE unsere Teilefamilien automatisch zu erstellen. NX kann über Excel immer nur die aktuell geöffnete Teilefamilie erstellen. Möchte ich danach eine Weitere erstellen, muss ich warten bis die erste fertig ist und den Erstellungsprozess für die nächste starten. Diese iterativen Arbeiten übernimmt mein Programm und überwacht den gesamten Prozess.

Wie erreiche ich das der Datenraum wiederverwendet wird?:

Den Speicher erzeuge ich, mittels 'Dim KindTeil As Part'.
Die Kinder-Dateien werden innerhalb einer Schleife erzeugt, also verwende ich
für jedes Kind, das aus der Teilefamilie erzeugt wird,'KindTeil'.

Ich ging davon aus, dass dieser Speicher immer wieder überschrieben wird. Ist diese Annahme falsch?

[Diese Nachricht wurde von BilboBeutel am 01. Sep. 2014 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Rainer Schulze
Ehrenmitglied V.I.P. h.c.
Dipl.-Ing. im Ruhestand


Sehen Sie sich das Profil von Rainer Schulze an!   Senden Sie eine Private Message an Rainer Schulze  Schreiben Sie einen Gästebucheintrag für Rainer Schulze

Beiträge: 4419
Registriert: 24.09.2012

erstellt am: 02. Sep. 2014 08:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für BilboBeutel 10 Unities + Antwort hilfreich

>>das Programm dient dazu ALLE unsere Teilefamilien automatisch zu erstellen

Üblicherweise erstellt man Programme, um wiederholte Vorgänge zu vereinfachen. Das Erstellen einer Teilefamilie ist aber eine einmalige Angelegenheit.
Ergänzungen betreffen nur die neuen Mitglieder und Änderungen am "Mutterteil" machen es nicht erforderlich, ALLE Teilefamilien neu zu erzeugen.
Daher verschließt sich mir der Sinn Deines Programms noch immer.
Aber das ist ja wohl nicht Deine Fragestellung...

>>Ich ging davon aus, dass dieser Speicher immer wieder überschrieben wird. Ist diese Annahme falsch?

Eine einzige Programmzeile sagt kaum etwas über die Struktur und Arbeitsweise des Programms aus. Du lässt das Forum ja nicht einmal wissen, ob Dein Programm die Teilefamilien ohne Hilfe von NX erzeugen will, oder ob Du mit Deiner Programmierung nur Abläufe in NX über dessen Programmierschnittstelle steuern willst.
Wie soll man bei solchen Wissenslücken bestimmen, wo die Schwachstelle liegt?

Aber mal ganz pauschal:
Ich nehme mal den nahe liegenden Fall an, daß Du Dich der Hilfe von NX bedienst.
Ich habe zwar bei meinen Tests mit dem aktuellen NX9 dessen Speicherkonsum noch nicht gezielt beobachtet, aber aus NX6 ist bekannt, dass das Schließen von Teilen keineswegs den Arbeitsspeicher wieder frei gibt.
Also zwei Ratschläge:
Teile die Liste von Teilen auf in vier oder sechs Pakete je nach Anzahl der verfügbaren Rechenkerne und starte das Programm entsprechend mehrfach, um Rechenzeit durch Parallelverarbeitung zu sparen.
Teile jedes der Pakete wieder in Päckchen von vielleicht 500 bis höchstens 1000 Teilen auf und starte die Erzeugung der Teile durch ein Windows-Kommandoscript, so dass NX nach Abarbeitung jedes Päckchens geschlossen und neu gestartet wird. Nur so kannst Du sicher stellen, dass der Speicher wieder freigegeben wird.

Vielleicht findet sich aber auch noch ein erfahrener Programmierer, der weiß, wie man NX dazu bringen kann, den Arbeitsspeicher zu "packen"?

------------------
Rainer Schulze

[Diese Nachricht wurde von Rainer Schulze am 02. Sep. 2014 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Manager Post Merger Integration / Digitalisierung m/w/d

SPIE Deutschland & Zentraleuropa ist der führende unabhängige Multitechnik-Dienstleister für Gebäude, Anlagen und Infrastrukturen. Als starke Säule der SPIE Gruppe sind wir an über 200 Standorten in Deutschland und Österreich präsent. Mit einer breiten Technik-Expertise und als zuverlässiger Partner begleiten wir unsere Kunden in eine erfolgreiche Zukunft. Denn rund 20 000 technikbegeisterte Talente geben das Beste für unsere Kunden ? jeden Tag, in jedem Projekt....

Anzeige ansehenProzessmanagement
BilboBeutel
Mitglied
Student


Sehen Sie sich das Profil von BilboBeutel an!   Senden Sie eine Private Message an BilboBeutel  Schreiben Sie einen Gästebucheintrag für BilboBeutel

Beiträge: 28
Registriert: 03.09.2013

WIN7 x64
-------------------
NX 9.0.3.4
Nativ

erstellt am: 10. Sep. 2014 09:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

ich habe leider nicht so häufig die Gelegenheit an meinem Programm arbeiten, deshalb schreibe ich erst so spät eine Antwort.

Das ursprüngliche Programm wurde innerhalb NX gestartet und funktionierte als Journal.
Ich fand deinen Vorschlag - NX nach einer bestimmten Anzahl von erzeugten Teilen neu starten - sehr gut. Daher habe ich mein Programm so umgebaut, dass es über eine Remoteverbindung mit der run_managed.exe kommuniziert. Nur wenn mein Programm außerhalb von NX laufen würde, kann ich NX neu starten habe ich mir gedacht..

Es waren schon ein paar Tests und entsprechende Anpassungen nötig bis das ganze stabil lief, aber jetzt funktioniert es zufriedenstellend!

Danke Rainer!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz