Performance beim Arbeiten über Netzwerk schlecht

statix

Level-2
Beiträge
117
Reaktionspunkte
7
Zuviel Werbung?
-> Hier kostenlos registrieren
Tach zusammen!

Ich habe für den Job ein kleines NAS besorgt, damit mein Kollege und ich eine gemeinsame Datenbasis haben, auf der wir beide arbeiten können.
Insgesamt ist die Platte recht fix, man merkt kaum einen Unterschied zur einer lokalen Platte.

Da gilt aber nicht für die Siemens Software, zumindest Teilen davon.
Beispiel:
"Konsistenz prüfen", dauert geschätzt 10 mal länger, als wenn man das Projekt auf der lokalen Platte liegen hat.
Ähnliches gilt für WinCC felxible beim Generieren und Synchronisieren.
Manchmal dauer ein normaler Speichervorganag nach einer Änderung ewig lange (weiß nicht gnau wie lange, habe dann immer Mittag gemacht...).

Das geht gar nicht und lässt sich auch mMn nicht mit dem Flaschenhals "Gbit-Netzwerk" erklären.

Kann das einer erklären?
Gibt es andere die die gleiche oder andere Erfahrungen gemacht haben?
Wie löst ihr das Problem mit dem Speicherort bei mehreren Programmiereren?
 
Wie ist Dein S7 Arbeitplatz eingerichtet ?
Einzelplatz oder Mehrplatz ?

In der Mehrplatz Einrichtung versucht der S7 Manager sich mit möglichen anderen Knoten, die auf das Share zugreifen könnten abzustimmen und wartet entsprechend ...

Versuch mal "Einzelplatz" ...

Allerdings ist das S7 Manger Zeug ziemlich mies programmiert, gerade im Netzwerk Umfeld. Das hängt da öfter mal ...
Ausserdem öffnet des S7 Projekt Management jede Menge kleine Dateien und lockt und unLockt diese reichlich willkürlich.

Wenn man sich das mal im Audit anguckt, kann einem schlecht werden. Irgendwie haben die Entwickler da keine Ahnung von Netzwerkdateisystemen gehabt ...

Ich hab hier spasses halber mal den Status eines geöffneteten Projektes auf einem Samba/Linux Filserver reingeschrieben. Dieselbe Fileserver Technik kommt mit an Sicherheit grenzender Wahrscheinlichkeit bei deinem NAS Miniserver zum Einsatz.
Es sind sage und schreibe 92 Dateien geöffnet und zum Teil falsch "gelockt. Mit einer so merkwürdigen Methodik braucht man wohl nicht hoffen das S7-Manager ordentlich mit Dateiservern läuft.

Nebenbei, mit einem akt. Windows-Original Fileserver ist das auch nicht schneller, eher langsamer. Einen Win Server muss man sogar neach einem Client Crash (S7-Managers oder Win Station des S7-Nutzers) neu starten, da ansonsten die Dateisystem Locks sich nicht mehr lösen lassen. Beim samba auf einem Linux Server reicht einen Moment warten oder ein Restart des Samba Dienstes.

[...] ca. 120 Zeilen gelöscht um das Posten zu können

Code:
root@server:~ # smbstatus


Samba version 3.4.7
PID     Username      Group         Machine                        
-------------------------------------------------------------------
9096      shadow          firma         note10w      (192.168.11.217)


Service      pid     machine       Connected at
-------------------------------------------------------
Daten        9096   note10w       Thu May 10 17:15:13 2012
shadow       9096   note10w       Thu May 10 17:15:13 2012


Locked files:
Pid          Uid        DenyMode   Access      R/W        Oplock           SharePath   Name   Time
--------------------------------------------------------------------------------------------------
9096         904        DENY_NONE  0x2019f     RDWR       EXCLUSIVE+BATCH  /home/fileserver/Projekte/S7-Projekt/hOmSave7/s7hstatx/HOBJECT1.DBF   Thu May 10 17:15:32 2012
9096         904        DENY_NONE  0x2019f     RDWR       EXCLUSIVE+BATCH  /home/fileserver/Projekte/S7-Projekt/hOmSave7/s7wb53ax/HATTRME1.MDX   Thu May 10 17:15:37 2012

[...] ca. 120 Zeilen gelöscht um das Posten zu können 

9096         904        DENY_NONE  0x2019f     RDWR       EXCLUSIVE+BATCH  /home/fileserver/Projekte/S7-Projekt/hOmSave7/s7hstatx/HATTARY1.DBF   Thu May 10 17:15:32 2012
9096         904        DENY_NONE  0x2019f     RDWR       EXCLUSIVE+BATCH  /home/fileserver/Projekte/S7-Projekt/hOmSave7/s7hstatx/HRELATI1.DBF   Thu May 10 17:15:32 2012


root@server:~ #

[...] ca. 120 Zeilen gelöscht um das Posten zu können

Euer Schatten
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Tach zusammen!
Gibt es andere die die gleiche oder andere Erfahrungen gemacht haben?
Wie löst ihr das Problem mit dem Speicherort bei mehreren Programmiereren?

Auch Tach!
Wir haben das Problem mit mehreren Programmierern mittels einem Revisionsystem gelöst. Wir verwenden GIT.

z.B. von hier zu beziehen:
http://git-scm.com/
http://code.google.com/p/msysgit/

Eine Diskussion hierüber (Revisionsverwaltung) haben wir hier schon mal gehabt:

http://www.sps-forum.de/showthread.php/48555-Source-Revisionsystem-Best-practice-gesucht


Euer Schatten
 
Die Arbeitsplatzeinrichtung habe ich niegeändert. Wie ist sie default-mäßig eingestellt?

Ich habe mir schon gedacht, das es am NAS nicht liegen kann. Das ist, gerade was kleine Blockgrößen angeht, sogar schneller als meine Laptop-platte, sagt crystaldiskmark.

Meine aktuelle Lösung sie wohl so aus, dass ich das NAS in Rente schicke und gegen ein NDAS ersetze, welches ich mit einer schnellen 64GB SSD ausrüste.
Das NDAS benutzt nicht das TCP/IP Protokoll sondern ein proprietätes, welches mit einem Treiber mitgeliefert wird. Installiert man den Treiber, erscheint die Platte als eine lokale Festplatte. Damit müsste ich die mangelhafte NW-Technik von Siemens doch ausgetrickst haben, oder?
Die SSD wird wohl durch das GBit-NW begrenzt, aber bei den vielen Klein(st)-Zugriffen sollte ein deutlicher Vorteil da sein.
Und platzmäßig sie die "nur" 64GB auch kein Problem. Projekte haben so 200-300MB... das reicht ne zeitlang!
 
Hi,

also das Problem hatten wir hier auch ... es kann Probleme machen weil der Simatic-Arbeitsplatz nciht auf dem Server läuft und dementsprechend auch die Datenbank nicht lokal verwaltet wird (sofern euer NAS kein abgespeckter PC ist!) ...
Würd da vielleicht eher überlegen einen Rechner zum SPS-Server zu machen und mit dem andern über Netzwerk auf die Projekte da zugreifen ... sorgt bei uns für annähernd gleiche Arbeitsgeschwindigkeiten (haben allerdings auch nen Gigabit-Uplink dazwischen!)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aha! Und wie läuft das dann?
Der Speicherort ist ein Server, auf dem Step7 installiert ist.
Die Client-PCs greifen auf die Dateifreigabe zu und fertig? Das macht den Unterschied?
Oder müssen die Clients per remote-desktop auf den Server zugreifen?
Gigat-Bit LAN haben wir im übrigen auch.

Wenn man ein NADS nutzt und die Platte somit lokal auftaucht, sollte Step7 das gar nicht erkennen, das es eine Netzwerkplatte ist. Wäre das nicht im Endeffekt das gleiche?
Aber was ist mit dem Zugriffsrechten? Der Siematic Arbeitsplatz des Client A bemerkt ja gar nicht, das der Arbeitsplatz von Client B gerade auf die Daten zugreift.
Könnte das nicht Probleme erzeugen?
 
Zuletzt bearbeitet:
Hallo shadowdb
Ich habe versucht Git für ein S7-Mehrplatz Projekt wie folgt einzurichten.
Ich habe einen Server einen Client 1 und einen Client 2.
Dann ändere ich auf dem Client 1 etwas am FC1.
Nun kann ich auf dem Server problemlos einen Mege mit Client 1 machen.
Dann ändere ich auf dem Client 2 den FC2 und versuche auf dem Server einen merge mit dem Client 2 zu machen.
Jedoch erhalte jetzt Konflikte.
Kannst Du mir da weiterhelfen?
Danke
Gruss fosi1
 
Zuletzt bearbeitet:
Hmmm ...

git arbeitet in sich per se multi-user-mehrplatz

Dieser Server-gemampel von den Siemenschaoten ist nicht so mein Ding. Schon mal gesehen, wie ein S7-Projekt geöffnet einen Server belastet ?
Der geht mit einem Projekt offen schon echt an die Resourcen. 167 Dateilocks und sequentielle Zugriffsperren. Wer das mal gecodet hat, muss echt nen Schaden haben.


Ich hab das mit den Kollegen immer wie folgt organisiert:

1. Unser Git - Server steht auf einem Root-Server Dependence im I-Net und ist via ssh erreichbar.
JEdoch sollte das auch via einem Winblöd server in der Abteilung gehen via Dateizugriff

2. im designiertem Server Verzeichnis haben wir ein "git init --bare" gemacht, damit wurde ein "leeres" Git Repository erzeugt
3. das leere Git Repository haben wir uns zur lokalen Sandbox (lokales Arbeitsverzeichnis) geclont.
z.B.: git clone server\\share\git-master\projekt lokales-projekt
4. ins Verzeichnis lokales-projekt (Am besten auf c:\ oder andere lokale Festplatte damit Step7 auch performant läuft, siehe Lock-File Wahnsinn) habe ich dann meine (Multi)-Projekte mit dem S7 Manager reingeschrieben.
Die sind in dem Ordner dann als Unterverzeichniss erschienen.
5. Das neue unterverzeichniss habe ich dann mit "git add S7-Projekt-Verzeichnis" dem lokalem Repository zugefügt.
6. dannach hab ich meine Arbeit eingestempelt, "git commit -a" Arbeittext Text schön geschrieben ...
7. zum Schluß hab ich mit "git push origin master" meine Arbeit zum Masterserver Knoten gepusht - gebracht.
8. wichtig Milestones haben wir mit einem Tag versehen z.B. "git tag "v1.0" oder git tag "IBN"
9. die Kollegen konnten dann mit "git clone" sich vom Masterserver eine eigene Sandbox gezogen, oder mit "git pull" ihre lokale kopie aktuaisiert
10. nach getaner Tages Arbeit git adde ich mein S7-Verzeichnis neu und mache einen commit und abschliesend einen Push.

Damit konnten wir mit 3-5 Kollegen kooperativ an solchen Projekten arbeiten. Da das Step7 System keine Quelltexte in Standard Form ablegt sondern als Borland Dbase iV Dateien (DBF) werden diese als binäre Daten gehandhabt. Ein echtes diff/patch ist also kaum möglich.
Daher haben wir im Kollegen Kreis definiert, wer mit welchen Bausteinen agiert und wir arbeiten eher mit SCL/AWL Quellen in den Quellverzeichnissen.

Konflikte, wie du beschreibst entsstehen wenn eine einzige Datei in verschiedenen unterschiedlichen Version daliegen.
In dem Fall muss man schauen welcher Stand am besten für das Projekt ist.
Man kann z.B. mit "git checkout "tag oder Code" sich auf ein definiertes Tag oder commit (die commit Zustände und log texte kriegt man mit git log) auschecken.

Git legt im Git-Lokalem Verzeichnis im Ordner .git sich eine komplette Datenbank mit allen Datei zun Projekt zuständen an, die jemals existiert haben. Jede Datei wird mittels einem eigeem md5 hash versehen und ist damit als Datei vom inhalt her eineindeutig identifiziert.

Ich benutze git auch zum tracken meiner eigenen Arbeiten, egal für was und welches Projekt. Damit habe ich immer im .git Verz ein Backup und Verlauf meiner Projekte.

Ich hoffe das hilft ein weinig
Mir ist bislang noch kein besseres Verfahren als das git untergekommen.
Vielleicht sollte man dem Git mal beibringen, wie man dbf Dateien vor dem einspeichern in einen Lesbaren ASCII-Quelltext mutiert. Damit wäre aus solchen Quellen echtes diff/patch möglich. Echt ein Mist, was die sich da in Karlsruhe und in Erlangen ausgedacht haben. Borniert.

Euer Schatten
 
Vielen Dank an Schatten für die rasche Antwort.
Ich habe es jetz mal getestet wenn ich nur mit Quellen arbeite -> somit geht das mergen.
Bei uns wird jedoch mit dem AWL-Editor gearbeitet.
Wird mit Quellen gearbeitet so ändern ich nur die *.AWL Datei welche zu dieser Quelle gehört. Diese sind reines Textformant. Daher entstehen keine Konflikte.
Wenn jedoch beim AWL-Editor Client1 den FC1 ändert und Client2 den FC2 ändert, so ändert sich bei beiden mehrere Dateien welche ein spezielle Format haben (Datenbank).
Aus meiner Sicht kann hier das mergen gar nicht funktionieren. Sehe ich das richtig?
Danke
Gruss fosi1
 
Zuletzt bearbeitet:
Die Symbolikdatei ist leider auch eine Dbase IV Datei, eine Datenbank .dbf nebst .mdx Index.
Dieser binäre Kram lässt sich nicht zusammenführen via diff/patch.

Suche mal im Projekt nach SYMLIST.* da sind die Symbole drin abgelegt.

Was denkbar ist, wenn man sich einen "hook" baut der beim Umgang mit .dbf und zugehörigen .mdx Dateien die für die Ablage in ein diff/patch fähiges Quellformat ablegt, welches beim checkout das Original File wieder erzeugt.

Dann wäre ein Super-Mergen auch für S7-Projekte sehr gut möglich.
Aber im zustand heute geht das wohl nicht. :twisted:

Euer Schatten
 
Zurück
Oben