hashdeep mit Multi-Threading

hashdeep mit Multi-Threading

Postby Gerby » 09.01.2012, 09:51

Hallo und ein frohes neues Jahr in die Runde! (Jepp, auch noch am 9. Januar. 8-) )

Vom hashdeep-Tool gibt es eine neue Version 4.0.0, die nun auch Multi-Threading beherrscht (Changelog im Download-Bereich des Tools). Das wirkt sich dann aus, wenn dem Tool eine Liste von Dateien übergeben wird, in unserem Fall also beim Überprüfen und Erstellen von Hashes für die Download-Verzeichnisse. Und natürlich sollte der Computer mehrere Prozessor-Cores haben, was ja heutzutage gängig ist.

Ein Kurztest mit dem aktuellen Verzeichnis \w60-x64\glb (hat ziemlich viele Dateien):
V3.9.2: 35 Sek.
V4.0.0: 15 Sek.
(Intel Core2 Quad Q8300 @ 2.5 GHz)
Der Geschwindigkeitsvorteil ist zwar nicht die Welt, aber immerhin.

Das Multi-Threading wirkt sich leider nicht positiv bei den großen ISO-Dateien aus, da nicht mehrere Threads an einer Datei arbeiten können (1 Verwaltungsthread + 4 Arbeitsthreads für jeweils eine Datei). Bei den ISO-Dateien ergibt sich sogar ein kleiner CPU-Last-Nachteil im Vergleich zur Vorgängerversion, da für die eine Datei sowohl der Verwaltungs-Thread als auch ein Arbeitsthread jeweils einen CPU-Core voll auslasten (vorher nur ein Core). Aber das sind Feinheiten.

Aus meiner Sicht also das Fazit, dass man die neue Version ruhig in WSUS Offline integrieren könnte.

Eventuell denkbar für die Zukunft wäre die Erstellung der ISO-Hashes in einem Rutsch, um auch dort gegebenenfalls (mehrere ISO-Dateien, mehrere Cores) einen Geschwindigkeitsvorteil zu erwirken. Aber das würde wohl eine größeren Umbau im Skript bedeuten, oder?

Schöne Grüße
Gerby
Mach mit - der Übersichtlichkeit wegen! Füge Log-Auszüge als [Code] ein.
Make it clear! Insert log excerpts as [Code].
Gerby
 
Posts: 504
Joined: 11.09.2009, 15:57
Location: DE > SH > SE

Re: hashdeep mit Multi-Threading

Postby Gerby » 09.01.2012, 11:53

Gerade flatterte ein neuer Trunk r336 mit dem 4-er hashdeep rein und ich dachte, "Hui, prompte Umsetzung meiner Anregung". Aber da zog Torsten wohl schneller... (Vergleich der Uhrzeiten). :lol:
Mach mit - der Übersichtlichkeit wegen! Füge Log-Auszüge als [Code] ein.
Make it clear! Insert log excerpts as [Code].
Gerby
 
Posts: 504
Joined: 11.09.2009, 15:57
Location: DE > SH > SE

Re: hashdeep mit Multi-Threading

Postby WSUSUpdateAdmin » 09.01.2012, 12:18

"Trotzdem" danke, Gerby! :)

Gruß
Torsten
WSUSUpdateAdmin
Administrator
 
Posts: 2245
Joined: 07.07.2009, 14:38

Re: hashdeep mit Multi-Threading

Postby boco » 09.01.2012, 14:10

Das sollte man erwarten; wenn eine Community wächst, wächst die Anzahl der Augen normalerweise doppelt so schnell (einäugige Mitglieder werden selbstverständlich nicht ausgeschlossen! :mrgreen:)

Bei MD5deep hätte ich wahrscheinlich nicht mehr so schnell nachgesehn. Dafür seh ich andere Sachen - der Vorteil von ''community-supported'' Projekten.


Hey, aber was verbietet uns denn, für die ISO-Dateien die vorherige Version zu benutzen (zumindest bis die Nachteile der Multithreading-Implementation ausgeglichen sind)?
Microsoft update catalog: http://catalog.update.microsoft.com/v7/site/
Windows Install media download: https://support.microsoft.com/en-us/help/15088/windows-create-installation-media
boco
 
Posts: 2391
Joined: 24.11.2009, 17:00
Location: Germany

Re: hashdeep mit Multi-Threading

Postby WSUSUpdateAdmin » 10.01.2012, 10:14

Moin!

Gerby wrote:Das Multi-Threading wirkt sich leider nicht positiv bei den großen ISO-Dateien aus, da nicht mehrere Threads an einer Datei arbeiten können (1 Verwaltungsthread + 4 Arbeitsthreads für jeweils eine Datei). Bei den ISO-Dateien ergibt sich sogar ein kleiner CPU-Last-Nachteil im Vergleich zur Vorgängerversion, da für die eine Datei sowohl der Verwaltungs-Thread als auch ein Arbeitsthread jeweils einen CPU-Core voll auslasten (vorher nur ein Core). Aber das sind Feinheiten.


boco wrote:Hey, aber was verbietet uns denn, für die ISO-Dateien die vorherige Version zu benutzen (zumindest bis die Nachteile der Multithreading-Implementation ausgeglichen sind)?


Das wird nicht nötig sein (vgl. http://md5deep.sourceforge.net/hashdeep.html):
Code: Select all
-jnn
Controls multi-threading. By default the program will create one producer thread to scna the file system and one hashing thread per CPU core. Multi-threading causes output filenames to be in non-deterministic order, as files that take longer to hash will be delayed while they are hashed. If a deterministic order is required, specify -j0 to disable multi-threading

Dann baue ich mal "-j0" in CreateISOImage.cmd ein.

Danke & Gruß
Torsten
WSUSUpdateAdmin
Administrator
 
Posts: 2245
Joined: 07.07.2009, 14:38

Re: hashdeep mit Multi-Threading

Postby Gerby » 10.01.2012, 11:59

WSUSUpdateAdmin wrote:Dann baue ich mal "-j0" in CreateISOImage.cmd ein.

Ein kurzer Test des hashdeep-Tools mit diesem Parameter hat gezeigt, dass tatsächlich nur ein Core ausgelastet wird. Die Dauer des Hash-Vorgangs bleibt gleich.

Dank und Gruß zurück
Gerby
Mach mit - der Übersichtlichkeit wegen! Füge Log-Auszüge als [Code] ein.
Make it clear! Insert log excerpts as [Code].
Gerby
 
Posts: 504
Joined: 11.09.2009, 15:57
Location: DE > SH > SE

Re: hashdeep mit Multi-Threading

Postby Matjes » 10.01.2012, 18:40

Hallo zusammen,

die geänderte Version von hashdeep.exe will auf meinem Notebook nicht so richtig.

Angehakt ist : "pro Produkt und Sprache Iso-Image erstellen.

Bei mir sind es 5.

Das erste ISo-Image wird erstellt. Alles ok :)
Beim Erstellen des Hashes kommt jeweils eine FehlerMeldung. :x
System Win 7 32-Bit
wsusoffline: v. 7.2+ (r337)

Gruß Matjes :)
Code: Select all
10.01.2012 18:15:38,79 - Info: createing iso for: Windows XP (deu)
10.01.2012 18:15:38,83 - Info: command-line: "D:\ct_wsusoffline\\cmd\CreateISOImage.cmd" wxp deu  /includedotnet /includemsse /includewddefs
Starting ISO image creation for wxp deu /includedotnet /includemsse /includewddefs    ...
Creating ISO filter for wxp deu...
Creating ISO image ..\iso\wsusoffline-wxp-deu.iso...
Warning: Creating ISO-9660:1999 (version 2) filesystem.
Warning: ISO-9660 filenames longer than 31 may cause buffer overflows in the OS.
  0.75% done, estimate finish Tue Jan 10 18:26:43 2012
...

 99.06% done, estimate finish Tue Jan 10 18:17:14 2012
 99.81% done, estimate finish Tue Jan 10 18:17:14 2012
Total translation table size: 0
Total rockridge attributes bytes: 42383
Total directory bytes: 100690
Path table size(bytes): 350
666278 extents written (1301 MB)
Creating message digest file ..\iso\wsusoffline-wxp-deu-hashes.txt...




hashdeep.exe funktoniert nicht mehr

Problemsignatur:
  Problemereignisname:   APPCRASH
  Anwendungsname:   hashdeep.exe
  Anwendungsversion:   0.0.0.0
  Anwendungszeitstempel:   4f06eb2b
  Fehlermodulname:   hashdeep.exe
  Fehlermodulversion:   0.0.0.0
  Fehlermodulzeitstempel:   4f06eb2b
  Ausnahmecode:   c0000005
  Ausnahmeoffset:   000293b1
  Betriebsystemversion:   6.1.7601.2.1.0.256.48
  Gebietsschema-ID:   1031
  Zusatzinformation 1:   0a9e
  Zusatzinformation 2:   0a9e372d3b4ad19135b953a78882e789
  Zusatzinformation 3:   0a9e
  Zusatzinformation 4:   0a9e372d3b4ad19135b953a78882e789
Matjes
 
Posts: 76
Joined: 16.06.2010, 17:56

Re: hashdeep mit Multi-Threading

Postby Gerby » 11.01.2012, 12:40

Hi Matjes!

Ich kann's hier leider nicht nachvollziehen, auch nicht in einer virtuellen Maschine (hier mit Vista 32-Bit). Hättest Du die Muße einfach mal nur das Tool auf diverse Dateien (groß, klein, dick, dünn - wie auch immer) loszulassen?
Code: Select all
hashdeep.exe -j0 <dateiname>

Auf welcher Hardware läuft denn bei Dir der Update Generator?

Im md5deep-Forum ist wenig los, und auch woanders habe ich noch nichts zu diesem Fehler gefunden. Wenn Du das reproduzieren kannst, könnte man eventuell mal beim Tool-Autor nachfragen.

Gruß
Gerby
Mach mit - der Übersichtlichkeit wegen! Füge Log-Auszüge als [Code] ein.
Make it clear! Insert log excerpts as [Code].
Gerby
 
Posts: 504
Joined: 11.09.2009, 15:57
Location: DE > SH > SE

Re: hashdeep mit Multi-Threading

Postby Matjes » 11.01.2012, 13:45

Hallo Gerby,

also die Hardware ist ein MSI CX700.

Der handische Aufruf klappt:
Code: Select all
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten.

D:\ct_wsusoffline>D:\ct_wsusoffline\client\bin\hashdeep.exe -j0 D:\ct_wsusoffline\iso\wsusoffline-ofc-deu.iso
%%%% HASHDEEP-1.0
%%%% size,md5,sha256,filename
## Invoked from: D:\ct_wsusoffline
## D:\ct_wsusoffline> D:\ct_wsusoffline\client\bin\hashdeep.exe -j0 D:\ct_wsusoffline\iso\wsusoffline-ofc-deu.iso
##
1228105728,3cd53866cb7672d135a88b8f7b72abae,30701b72213a309428492b3819a910b1a167626f5f41f568b3f7e0ca1446c624,D:\ct_wsusoffline\iso\wsusoffline-ofc-deu.is

D:\ct_wsusoffline>


Dann hab ich den Aufruf in CreateISOImage.cmd, Zeile 164 um den Parameter -j0 reduziert, also den alten Aufruf.
Code: Select all
..\client\bin\%HASHDEEP_EXE% -c md5,sha1,sha256 -b -j0  %OUTPUT_PATH%\%ISO_NAME%.iso >%OUTPUT_PATH%\%ISO_NAME%.mds

in
Code: Select all
..\client\bin\%HASHDEEP_EXE% -c md5,sha1,sha256 -b %OUTPUT_PATH%\%ISO_NAME%.iso >%OUTPUT_PATH%\%ISO_NAME%.mds

Und siehe da, es läuft wieder wie gewohnt.

Zur Kontrolle wieder den Parameter -j0 eingefügt: Fehler ist wieder da

Gruß Matjes :)
Matjes
 
Posts: 76
Joined: 16.06.2010, 17:56

Re: hashdeep mit Multi-Threading

Postby WSUSUpdateAdmin » 11.01.2012, 13:58

Dann baue ich "-j0" lieber wieder aus.

Danke & Gruß
Torsten
WSUSUpdateAdmin
Administrator
 
Posts: 2245
Joined: 07.07.2009, 14:38

Next

Return to Anregungen / Suggestions

Who is online

Users browsing this forum: No registered users and 30 guests