Löschen = Katastrophe

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
Andreas
Power Member
Power Member
Posts: 861
Joined: 2003-08-30, 08:45 UTC
Location: Hannover

Löschen = Katastrophe

Post by *Andreas »

Hallo,

bin gerade dabei, aus großen Dateisammlungen (> 20.000) per Suche eine größere Anzahl von Dateien zu entfernen. Ist mit dem TC unmöglich. RAM-Verbrauch jagt auf 1,3 GB hoch, CPU Last steigt und kurz darauf friert das Programm ein. Mit dem Explorer sind solch große Löschaufträge problemlos möglich.

Verwende momentan TC 8.0 ß9
Gruß Andreas

Win10 x64 +++ Total Commander 10 +++ Directory Opus 12 +++
CoolWater
Power Member
Power Member
Posts: 744
Joined: 2003-03-27, 16:33 UTC

Post by *CoolWater »

2Andreas

Such mal nach VistaDelete=1 ...

Gruß
CoolWater
Andreas
Power Member
Power Member
Posts: 861
Joined: 2003-08-30, 08:45 UTC
Location: Hannover

Post by *Andreas »

ist in der .ini drin.
Gruß Andreas

Win10 x64 +++ Total Commander 10 +++ Directory Opus 12 +++
User avatar
karlchen
Power Member
Power Member
Posts: 4605
Joined: 2003-02-06, 22:23 UTC
Location: Germany

Post by *karlchen »

Hallo, Andreas.

Steht VistaDelete=1 auch genau einmal in der aktiven wincmd.ini? Und dort auch im richtigen Abschnitt [Configuration]?

Desweiteren wäre zu prüfen, ob beim systemweiten Windows Papierkorb die Bestätigungsabfrage deaktiviert worden ist. Wenn diese deaktiviert sein sollte, also Windows Explorer verschiebt ohne Bestätigung in den Papierkorb, dann verwendet Total Commander 8.0 beta 9 nicht die mit Vista eingeführte Löschmethode, weil der Benutzer sonst nicht mehr gefragt werden könnte, ob er wirklich löschen will.

Wenn also Total Commander 8 aus dem oben beschriebenen Grund auf seine eigene Löschmethode zurückfallen sollte, dann könnte das unter Windows 7 (32-bit/64-bit) genau die Symptome hervorrufen, die du berichtet hast.

Grüße
Karl
Andreas
Power Member
Power Member
Posts: 861
Joined: 2003-08-30, 08:45 UTC
Location: Hannover

Post by *Andreas »

Hallo Karlchen,

ja, VistaDelete=1 steht unter [Configuration].
Und ja, die Bestätigungsabfrage für den Papierkorb habe ich deaktiviert. Also scheint die Ursache hier zu liegen.
Gruß Andreas

Win10 x64 +++ Total Commander 10 +++ Directory Opus 12 +++
User avatar
karlchen
Power Member
Power Member
Posts: 4605
Joined: 2003-02-06, 22:23 UTC
Location: Germany

Post by *karlchen »

Hallo, Andreas.

Sieht fast so aus.

Als Christian mit T.C. 8.0ß7 auf Rechnern mit Vista und neuer den Vorgabewert für VistaDelete von 0 auf 1 geändert hat (zieht, wenn VistaDelete gar nicht angegeben wird), führte das prompt dazu, dass Benutzer sich beschwerten, der Total Commander lösche ohne jede Nachfrage.
Mit VistaDelete=1 zeigt nämlich nicht mehr Total Commander die Abfrage an, ob man wirklich in den Papierkorb löschen will, sondern Windows selbst. Ist diese Abfrage abgeschaltet, dann löscht also auch T.C. ohne Nachfrage in den Papierkorb.

Daher hat Christian in den nachfolgenden Betas ein paar Prüfungen eingebaut, die VistaDelete=0 annehmen, sobald z.B. die Sicherheitsabfrage des Windows Papierkorbs abgeschaltet ist.

Persönlich hatte ich das allerdings so verstanden, dass der Benutzer trotzdem T.C. zwingen kann, trotz abgeschalteter Papierkorb-Bestätigungsabfrage, die VistaDelete Methode zu verwenden, indem er selbst explizit VistaDelete=1 in die wincmd.ini einträgt. Sieht fast so aus, als wäre diese Interpretation falsch. Werde ich einfach mal ausprobieren und das Ergebnis nachtragen.

Grüße,
Karl
User avatar
karlchen
Power Member
Power Member
Posts: 4605
Joined: 2003-02-06, 22:23 UTC
Location: Germany

Post by *karlchen »

Hallo, Andreas.

Sieht so aus, als zwinge VistaDelete=1 T.C. tatsächlich, unter Windows Vista, Windows 7, Server 2008 die VistaDelete Methode zu benutzen, obwohl die Papierkorb-Bestätigung abgeschaltet ist.

Umgebung:

Windows 7 SP1, 32-bit
Total Commander 8.0ß9 32-bit

Test 1 ohne VistaDelete in der wincmd.ini

In der wincmd.ini VistaDelete=1 entfernt, also gilt nach dem Neustart des T.C. die Vorgabe, unter Windows 7 eben wieder VistaDelete=1, falls der Windows Papierkorb eine Bestätigung einholt.
UseTrash=1 (T.C. soll Papierkorb benutzen unverändert auf "eingeschaltet")
Bestätigungsdialog des Windows Papierkorbs abgeschaltet.
T.C. gestoppt und gestartet.

Ergebnis:
Beim Betätigen von DEL bringt der Total Commander seinen eigenen Bestätigungsdialog.
D.h. T.C. benutzt VistaDelete=0, weil der Windows Papierkorb keine Bestätigungsabfrage bringt.



Test 2 mit VistaDelete=1 in der wincmd.ini

In der wincmd.ini VistaDelete=1 wieder hinzugefügt.
UseTrash=1 (T.C. soll Papierkorb benutzen unverändert auf "eingeschaltet")
Bestätigungsdialog des Windows Papierkorbs bleibt abgeschaltet.
T.C. gestoppt und gestartet.

Ergebnis:
DEL löscht ohne Nachfrage die markierten Objekte in den Papierkorb.
D.h. explizit gesetztes VistaDelete=1 zwingt T.C., mittels VistaDelete in den Papierkorb zu löschen, obwohl der Papierkorb keine Sicherheitsabfrage zeigt.


Da ich das hier nun unter 32-bit Windows getestet habe, müßte ich das nun auch noch auf Windows 64-bit durchspielen, um deine Umgebung zu treffen ...

Grüße,
Karl
Andreas
Power Member
Power Member
Posts: 861
Joined: 2003-08-30, 08:45 UTC
Location: Hannover

Post by *Andreas »

Danke für's Testen! :)
Gruß Andreas

Win10 x64 +++ Total Commander 10 +++ Directory Opus 12 +++
User avatar
karlchen
Power Member
Power Member
Posts: 4605
Joined: 2003-02-06, 22:23 UTC
Location: Germany

Post by *karlchen »

Hallo, Andreas.

Deine Konfiguration müßte meinem Test #2 entsprechen. Dabei sollte T.C. 8 wegen des ausdrücklich gesetzten VistaDelete=1 und trotz fehlender Bestätigungsabfrage des Windows Papierkorbs die VistaDelete Methode verwenden. (1)
Das wiederum soll genau die Symptome verhindern, die du berichtet hast.

Also sind wir nach der kleinen Ehrenrunde wieder bei der Ausgangsfrage angelangt: Warum verhält sich T.C. 8 trotzdem so, wie er es bei dir tut?

Möglichkeit 1:

Dazu fällt mir ein, dass es eine Situation gibt, in der VistaDelete=1 stets ignoriert wird, weil das Löschen sonst gar nicht funktioniert: [TC8.0ß8]: VistaDelete=1 Prevents Elevated Delete Operation. Problem behoben in T.C. 8.0ß9, indem in der besonderen Situation nie die VistaDelete Methode verwenden wird. (Dabei könnte es also wieder zu extremer Systemauslastung kommen, wenn sehr viele Objekte, z.B. 20.000 - gelöscht werden.)

Möglichkeit 2:

T.C. 8 benutzt auch bei dir VistaDelete (1). Trotzdem kommt aus zu einer sehr viel höheren Systemauslastung als beim Löschen mittels Explorer.
Ob das passieren kann, weiß ich momentan nicht, weil ich fast nie soviele Objekte auf einen Rutsch löschen muß, jedenfalls nicht auf meinem lokalen Windows Rechner. (Und Löschen per FTP oder SFTP auf einem entfernten Unix Rechner ist, im Hinblick auf die lokale Systemlast, ein völlig anderer Vorgang.)

(1)
Ob T.C. 8 auf deinem Windows Rechner jeweils wirklich die VistaDelete Methode benutzt, kannst du einfach herausfinden: Markiere irgendeine unwichtige Datei im %TEMP% Ordner und drücke DEL.
Erscheint jetzt eine Total Commander Bestätigungsabfrage, dann verwendet T.C. 8 in dem Moment seine eigene Löschmethode.
Verschwindet die Datei ohne Rückfrage im Papierkorb, dann verwendet T.C. 8 in dem Moment die VistaDelete Methode.

Grüße,
Karl
User avatar
karlchen
Power Member
Power Member
Posts: 4605
Joined: 2003-02-06, 22:23 UTC
Location: Germany

Post by *karlchen »

Testumgebung:
  • 2 CPU-Kerne, 2 GB RAM
  • Server 2008 R2, also 64-bit
  • Total Commander 8.0ß 32-bit / 64-bit (32-bit oder 64-bit spielt für die Geschwindigkeit keine Rolle!)
  • Variiert:
    + Windows Papierkorb Bestätigungsdialog
    + Total Commander Parameter: VistaDelete, UseTrash
  • 2 Ordner auf 2 unterschiedlichen lokalen Laufwerken mit vor jedem Probelauf neu angelegten 20.000 Dateien
Test #1
  • Papierkorbbestätigung=ein
  • VistaDelete=1, UseTrash=1
  • Explorer:
    20000 Dateien markiert und DEL gedrückt.
    Verschieben in den Papierkorb bestätigt.
    Zeit zum Löschen in den Papierkorb: 2,5 Min.
    Private Bytes: max. 220 MB.
    CPU Last: 75% (über beide Kerne)
  • Total Commander 8.0 beta:
    20000 Dateien markiert und DEL gedrückt.
    Verschieben in den Papierkorb bestätigt.
    Zeit zum Löschen in den Papierkorb: 3,25 Min.
    Private Bytes: max. 264 MB.
    CPU Last: 50% (über beide Kerne)
    wobei man beachten muß, dass VistaDelete bewirkt, dass der Explorer ebenfalls RAM beim Löschen verbraucht und CPU-Zeit, ungefähr so viel wie der T.C.
Test #2
  • Papierkorbbestätigung=aus
  • VistaDelete=1, UseTrash=1
  • Explorer:
    20000 Dateien markiert und DEL gedrückt.
    Verschieben in den Papierkorb bestätigt.
    Zeit zum Löschen in den Papierkorb: 3,0 Min.
  • Total Commander 8.0 beta:
    20000 Dateien markiert und DEL gedrückt.
    Verschieben in den Papierkorb bestätigt.
    Zeit zum Löschen in den Papierkorb: 2,5 Min.
  • Die Fast-Umkehr der Löschzeiten ist bedingt dadurch, dass Explorer auf dem Laufwerk des T.C. aus Test #1 und T.C. auf dem Laufwerk des Explorers aus Test #1 löschen mußte.
Test #3
  • Papierkorbbestätigung=aus
  • VistaDelete entfernt, UseTrash=0
  • Total Commander 8.0 beta:
    20000 Dateien markiert und DEL gedrückt.
    Direktes Löschen bestätigt.
    Zeit zum endgültigen Löschen: 0,5 Min. (37 Sek.)
  • Private Bytes: (unauffällig)
  • CPU-Last: (gering)
Test #4
  • Papierkorbbestätigung=aus
  • VistaDelete entfernt, UseTrash=1
  • Total Commander 8.0 beta:
    20000 Dateien markiert und DEL gedrückt.
    Verschieben in den Papierkorb bestätigt.
    Zeit zum Verschieben in den Papierkorb: 1 Std 45 bis 2 Std (geschätzt)
    Zeit zum Verschieben in den Papierkorb: 2 Std 46 Min. (gemessen)
  • Private Bytes: 64 MB (langsam steigend?) - 76 MB (am Ende)
  • CPU-Last: um 90% (über 2 Kerne), Gesamtlast des Systems: 2x100% permanent
  • Der Verschiebevorgang startet langsam und wird anscheinend immer langsamer. Darum mußte die geschätzte Dauer im Laufe der letzten Stunde von 30 Min. auf 60 Min auf 90 Min und mittlerweile auf eher 120 Min. korrigiert werden.
    Der Status z.Z.: 67% fertig
    Ob jemals 100% erreicht werden?
    Oder sinkt das Tempo irgendwann auf 0?
Fazit der Tests bis hierher:
Netter Zeitvertreib mit der praktisch untermauerten Erkenntnis, dass man VistaDelete=0 auf Server 2008 R2 wirklich nicht empfehlen kann, wenn man viele Objekte in den Papierkorb befördern muß.
Mit Blick auf das eingangs berichtete Verhalten
Andreas wrote:Ist mit dem TC unmöglich. RAM-Verbrauch jagt auf 1,3 GB hoch, CPU Last steigt und kurz darauf friert das Programm ein
so konnte dieses jedoch bisher nicht reproduziert werden.
Also tragen die berichteten Testergebnisse alle eher nichts zur Analyse und Lösung des Problems bei.
Schade. :cry:
--
Nachgetragen: gemessene Zeit für Test #4
Last edited by karlchen on 2011-11-19, 19:44 UTC, edited 1 time in total.
Andreas
Power Member
Power Member
Posts: 861
Joined: 2003-08-30, 08:45 UTC
Location: Hannover

Post by *Andreas »

Habe gestern ein Beweisfoto gemacht als der RAM und CPU so langsam aber sicher merklich zunahmen ;)
http://imageshack.us/photo/my-images/43/2011111900.gif/
Gruß Andreas

Win10 x64 +++ Total Commander 10 +++ Directory Opus 12 +++
User avatar
karlchen
Power Member
Power Member
Posts: 4605
Joined: 2003-02-06, 22:23 UTC
Location: Germany

Post by *karlchen »

Ich glaub's ja. :) Konnte es eben nur noch nicht reproduzieren.

Den höchsten RAM-Verbrauch mit knapp 1 GB Private Bytes habe ich bisher gesehen, als der Explorer 2 x 20000 gelöschte Dateien aus dem Papierkorb endgültig ins Datennirwana befördern mußte. Hat so ca. 6 Min. gebraucht. Aber auch dabei kein Systemstillstand.

Karl
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 50639
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

VistaDelete geht leider nicht bei Suchergebnissen, Strg+B oder Synchronisieren. Die Funktion von Windows hat einen Bug - übergibt man ihr Dateien aus verschiedenen Verzeichnissen, dann löscht sie diese Verzeichnisse komplett, und nicht nur die angegebenen Dateien. TC muss deshalb alle Dateien einzeln in den Papierkorb löschen. Leider erzeugt Windows dann für jede Datei einen eigenen Löschthread, was enorm viel Speicher kostet.

Die einzige Lösung ist, die Dateien halt direkt zu löschen (Umschalttaste gedrückt halten), oder in ein gemeinsames Verzeichnis zu verschieben und danach zu löschen.
Author of Total Commander
https://www.ghisler.com
Post Reply