Jump to content
Feldlaus

Performante Schnittstellenverarbeitung

Recommended Posts

Hallo zusammen,

 

bin neu in diesem Forum und bräuchte bitte etwas Hilfe mit folgendem Script, welches sich Dateien von einer Messmaschine krallt und diese dann auf einer WindowsServer 2016 Schnittstelle verarbeitet (das Script läuft direkt auf der Schnittstelle, inkl. Messdatenverarbeitung) und die Dateien danach wieder zurückschreibt zur Messmaschine in einen Sicherungsordner. Da auf der Schnittstelle ca. 10 dieser Scripte im 5-Minutenrhytmus laufen müssen, ist die Schnittstelle ohne die weitere Verarbeitungslogik schon so ganz ordentlich belastet hinsichtlich CPU und Arbeitsspeicher.

 

:LOOP

@echo off

REM |======================|
REM | Get files from KMG11 |
REM |======================|
echo .
echo . Test auf kmg11.txt
echo .
if not exist c:\tcerf\kmg11.txt goto DIR11
goto LOG11
:LOG11
echo .
echo . kmg11 fehlerlog schreiben
echo .
type c:\tcerf\kmg11.txt >> c:\tcerf\fehler11.log
goto COPY11
:DIR11
echo .
echo . kmg11.txt erstellen
echo .
dir /b \\KMG11_PC\SPC-FA$\*.txt > c:\tcerf\kmg11.txt
goto COPY11
:COPY11
echo .
echo . Messdaten von KMG11 kopieren
echo .
for /F %%g in (C:\tcerf\kmg11.txt) DO copy /V /Y \\KMG11_PC\SPC-FA$\%%g C:\tcerf\spc\data\%%g
echo .
echo . Messdaten von KMG11 verschieben
echo .
for /F %%g in (C:\tcerf\kmg11.txt) DO move /Y \\KMG11_PC\SPC-FA$\%%g \\KMG11_PC\SPC-FA$\Sicherung\%%g
echo .
echo . kmg11.txt loeschen
echo .
DEL c:\tcerf\kmg11.txt

timeout  /T 10 /nobreak 

goto LOOP

 

Hardwareaufrüstung will ich erstmal vermeiden. Stattdessen suche ich nach einer Möglichkeit die bestehenden Scripte performanter zu gestalten (wenn möglich ohne PowerShell). 

Bin über jeden Vorschlag dankbar.

 

Viele Grüße

Benny  

Edited by Feldlaus

Share this post


Link to post
Share on other sites

Hast Du schon kontrolliert, ob an dem PC versehentlich die Turbo-Taste gedrückt wurde und der PC deshalb nur mit halben Taktrate läuft?  ;-) :lol3::aetsch2:  

 

Aber mal Spaß beiseite: Wenn in den Scripten nur Copy-Jobs enthalten sind und sonst keine "Logik" oder andere Schritte, die viel Rechenzeit kosten, wobei sollen denn die Scripte dann Zeit einsparen? Der Flaschenhals scheint mir eher nicht im Script selbst zu liegen. Je nach Anzahl und Größe der zu kopierenden Dateien, ist vermutlich das Hin- und Herkopieren der Bremsklotz. Eventuell könntest Du versuchen, ob robocopy da noch etwas rausholen kann.

 

Übrigens: Bilder von Code sind absolut nicht hilfreich. Niemand hat Lust irgendwelchen Code abzutippen. Bitte Code in Zukunft als Text posten und als Code formatieren, danke.

Edited by BOfH_666
  • Thanks 1
  • Haha 1

Share this post


Link to post
Share on other sites
vor 6 Minuten schrieb BOfH_666:

Hast Du schon kontrolliert, ob an dem PC versehentlich die Turbo-Taste gedrückt wurde und der PC deshalb nur mit halben Taktrate läuft?  ;-) :lol3::aetsch2:  

 

Aber mal Spaß beiseite: Wenn in den Scripten nur Copy-Jobs enthalten sind und sonst keine "Logik" oder andere Schritte, die viel Rechenzeit kosten, wobei sollen denn die Scripte dann Zeit einsparen? Der Flaschenhals scheint mir eher nicht im Script selbst zu liegen. Je nach Anzahl und Größe der zu kopierenden Dateien, ist vermutlich das Hin- und Herkopieren der Bremsklotz. Eventuell könntest Du versuchen, ob robocopy da noch etwas rausholen kann.

 

Übrigens: Bilder von Code sind absolut nicht hilfreich. Niemand hat Lust irgendwelchen Code abzutippen. Bitte Code in Zukunft als Text posten und als Code formatieren, danke.

Sorry, hast natürlich Recht mit dem Textfile ….

KMG11.txt

Share this post


Link to post
Share on other sites
vor 3 Minuten schrieb Feldlaus:

Sorry, hast natürlich Recht mit dem Textfile ….

Bearbeite doch einfach Deinen originalen ersten Beitrag, entferne das Bild und ersetze es durch den Text, den Du dann als Code formatieren kannst.  Ohne weitere Informationen bleibt meine Antwort aber die Gleiche. ;-) 

Share this post


Link to post
Share on other sites

Wenn ich es richtig sehe, enthält das Script eine Endlosschleife und das ohne Pause dazwischen. Das kann die CPU ganz schön auslasten. Ich würde eine Pause (notfalls mittels "ping localhost") einfügen vor dem "GOTO loop".

  • Thanks 1

Share this post


Link to post
Share on other sites
vor 9 Minuten schrieb mwiederkehr:

Wenn ich es richtig sehe, enthält das Script eine Endlosschleife und das ohne Pause dazwischen.

Wow ... gut gesehen.  :thumb1: Jetzt weiß ich wieder, warum ich die Finger von Batch-Scripten lasse. ;-)

  • Like 1

Share this post


Link to post
Share on other sites
vor 23 Minuten schrieb mwiederkehr:

Wenn ich es richtig sehe, enthält das Script eine Endlosschleife und das ohne Pause dazwischen. Das kann die CPU ganz schön auslasten. Ich würde eine Pause (notfalls mittels "ping localhost") einfügen vor dem "GOTO loop".

Guter Tipp ...ist mir komplett entgangen. Hab´s im Text ergänzt. Danke!

vor 38 Minuten schrieb BOfH_666:

Bearbeite doch einfach Deinen originalen ersten Beitrag, entferne das Bild und ersetze es durch den Text, den Du dann als Code formatieren kannst.  Ohne weitere Informationen bleibt meine Antwort aber die Gleiche. ;-) 

Text ist eingefügt. Das Script kopiert hauptsächlich viele kleinere Textdateien. Robocopy schaue ich mir mal an, ob es da noch ne Möglichkeit gibt. Teste gerade bei mir lokal. Danke für Deine Hilfe.

Share this post


Link to post
Share on other sites
Gerade eben schrieb Feldlaus:

Guter Tipp ...ist mir komplett entgangen. Hab´s im Text ergänzt. Danke!

Ist der Loop im Script denn überhaupt nötig? In Deinem ersten Beitrag hattest Du geschrieben, dass die Scripte im im 5-Minuten-Rhythmus laufen - ich nehme mal an per Scheduled Job, oder?

Share this post


Link to post
Share on other sites
vor 2 Minuten schrieb BOfH_666:

Ist der Loop im Script denn überhaupt nötig? In Deinem ersten Beitrag hattest Du geschrieben, dass die Scripte im im 5-Minuten-Rhythmus laufen - ich nehme mal an per Scheduled Job, oder?

Direkt nötig wäre der loop nicht. Es kommt halt auf die Produktivität an. Der Task läuft alle 5-10 Minuten ...alternative ist, den Job häufiger zu timen.

Share this post


Link to post
Share on other sites
vor 1 Minute schrieb Feldlaus:

Direkt nötig wäre der loop nicht. Es kommt halt auf die Produktivität an. Der Task läuft alle 5-10 Minuten ...alternative ist, den Job häufiger zu timen.

Mit Powershell könnte man einen Ordner "überwachen" und bei neuen Dateien entsprechende Aktionen ausführen  ... falls das bei Dir passt. Wenn Du's probieren willst, such mal nach "Powershell" und "FileSystemWatcher".

Share this post


Link to post
Share on other sites
vor 18 Minuten schrieb BOfH_666:

Mit Powershell könnte man einen Ordner "überwachen" und bei neuen Dateien entsprechende Aktionen ausführen  ... falls das bei Dir passt. Wenn Du's probieren willst, such mal nach "Powershell" und "FileSystemWatcher".

Wäre auf jeden Fall ne Möglichkeit. Nur muss ich mich halt bei PowerShell erstmal reinfuxen ...und die Zeit hab ich eigentlich nicht. Aber ggf. führt da kein Weg dran vorbei. Nochmal Danke.

Share this post


Link to post
Share on other sites

Soll "ping -n 10 localhost> nul" eine Pause bewirken? Dazu gibt es schon länger den "Timeout"-Befehl. Ganz ohne zusätzlich Last zu verursachen.

 

  • Thanks 1

Share this post


Link to post
Share on other sites

Und wieso willst du etwas per echo ausgeben, wenn das ganze im Job läuft?

Du schreibst also in 18 Zeilen etwas in die Ausgabe, was kein Mensch lesen kann, weil er nicht davor sitzt....

Wenn du Dokumentieren möchtest, was das Script macht, nutze doch REM (auch wenn das tatsächlich auch Performance braucht

 

  • Thanks 1

Share this post


Link to post
Share on other sites
Am ‎13‎.‎01‎.‎2020 um 21:24 schrieb daabm:

Für einen File System Watcher braucht's noch nicht mal Powershell, das geht schon seit Windows 2000 über WMI Event Consumer :-)

Das ist mal richtig interessant. Gegebenenfalls könnte ich mir dann den Umweg über die KMG11.TXT-Datei sparen. Diese dient eigentlich dazu sicherzustellen, daß wirklich nur die Dateien verarbeitet werden, die neu dazugekommen sind, bzw. damit bspw. keine doppelten Daten verarbeitet werden.

Überwacht werden soll aber ja eigentlich nur die Freigabe \\KMG-PC\SPC-FA$ auf neue TXT-Dateien

 

Allerdings bin ich mit dem WMI Event Consumer, bzw. Managed Object Format überfordert und check da nicht durch. Kann mir jemand behiflich sein? Wie würde die Syntax dann aussehen? Loop ist dann vermutlich auch überflüssig ...

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


Werbepartner:



×
×
  • Create New...