Mitternachtskommandant manchmal sehr langsam

787
Krzysztof Bociurko

Ich benutze Midnight Commander mit Cygwin 64 Bit unter Windows 10 64 Bit.

Nach dem Umzug auf eine neue Maschine und einer sauberen Neuinstallation von Fenstern und Cygwin wurde mein Mitternachtskommandant von Zeit zu Zeit sehr langsam. Ein Neustart hilft, aber dies geschieht zu oft, um eine praktikable Lösung zu sein (Neustart hilft nicht) .

Ich habe keine Ahnung, was der Grund für diese Schwierigkeiten sein könnte. MC funktioniert normalerweise einwandfrei: Pfeilpressen funktionieren gut, das Anzeigen und Bearbeiten ist sofort möglich, aber eine Sache dauert bis zu 10 Sekunden - das Wechseln des Verzeichnisses. Das Suchen in Dateien hat eine ähnliche Verzögerung, jedoch nur einmal (dh nicht in allen, die chdires hätte tun können). Bei Verwendung von Nicht-Mc Cygwin tritt dieses Problem nicht auf.

Der Task-Manager zeigt bei keinem Prozess eine ungewöhnlich hohe CPU- oder Arbeitsspeicherverwendung an. Ich habe cygserverlaufen, verwende bashals meine Shell und habe keine ausgefallenen PS1Einstellungen, meine $CYGWINsind nur winsymlinks:native.

Hier ist ein straceProtokoll, vielleicht hat jemand eine Idee, was falsch gelaufen ist? http://pastebin.pl/view/9b839815
(aufgenommen mit LOCALE=C strace -q -o /tmp/mc-log mc /tmp)

In der aufgezeichneten Sitzung habe ich:

  • mc im /tmpVerzeichnis gestartet
  • eingegebenes /tmp/NVIDIA CorporationVerzeichnis
  • ging wieder hoch ( ..)
  • eingegebenes /tmp/mc-chanibalVerzeichnis
  • ging wieder hoch ( ..)
  • wurde mit F10 beendet

Zusätzliche Timing-Informationen:

Das Finden aller Verzeichnisse in meinem $HOMEdauert 4,6 Sekunden:

$ time find ~ -type d | wc -l (snipped two directories without permissions) 19919  real 0m4.626s user 0m0.796s sys 0m3.765s 

A ls -alfür alle diese Verzeichnisse hat viel Zeit in Anspruch genommen, aber der Durchschnitt war ziemlich niedrig:

time (find ~ -type d | while read f; do { time ls -al $f; } \ |& awk '$1 == "real" { printf $2 }' \ | awk -Fm ''; \ echo -e "\t$f"; done \ ) >/tmp/ls-time-log ; (snipped two dirs without permissions)  real 12m21.870s user 7m4.576s sys 16m34.446s 

Die durchschnittliche Zeit zum ls -alAusführen ist 0,020 s, die min ist 0,017, die maximale Zeit ist 0,154:

$ awk 'BEGIN { sum=0; min=9999; max=0; minf=""; maxf=""; } \ $1 { sum += $1; \ if(min > $1) { min = $1; minf = $2; }; \ if(max < $1) { max = $1; maxf = $2; } } \ END { print "avg: " sum/NR; print "min: " min " " \ minf; print "max: " max " " maxf }' </tmp/ls-time-log avg: 0.0204292 min: 0.0170 /cygdrive/c/Users/chanibal/AppData/Roaming/OculusClient/Local max: 0.1540 /cygdrive/c/Users/chanibal/AppData/Local/Android/sdk/platforms/android-23/data/res/drawable-hdpi 

Mit dem Overhead der Messzeit beträgt es durchschnittlich 16m34s / 19919 = 0,499s pro Anruf ls -al, zwei awks und eine Iteration von find. Nicht sehr gut, aber keine vier Sekunden.


Normalisieren mit cygpathdauert nicht lange:

$ time strace cygpath -aw /tmp/NVIDIA\ Corporation/ | grep normalize_posix_path 116 11175 [main] cygpath 3524 normalize_posix_path: src /tmp/NVIDIA Corporation/ 20 11195 [main] cygpath 3524 normalize_posix_path: /tmp/NVIDIA Corporation/ = normalize_posix_path (/tmp/NVIDIA Corporation/)  real 0m0.034s user 0m0.015s sys 0m0.000s 

BEARBEITEN: Dieses Problem wurde dem MC von MC hinzugefügt

0
Handelt es sich um eine Domain-Maschine oder um eine eigenständige Domäne? matzeri vor 8 Jahren 0
`$ grep normalize_posix_path 9b839815.strace | awk '' `zeigt ein Timeout von 4 Sekunden bei der Eingabe einiger Verzeichnisse an. Eine ungewöhnliche SID für Datei-ACLs? Können Sie die Zeit zum Ausführen von `ls -l` in denselben Verzeichnissen vergleichen? matzeri vor 8 Jahren 0
@ matzeri: Dies ist eine eigenständige Windows-Installation, keine angeschlossenen Netzlaufwerke oder Domänencontroller Krzysztof Bociurko vor 8 Jahren 0
@matzeri: zeit von `ls -al` im verzeichnis oder dessen inhalt ist vernachlässigbar (um echte 0.021s) Krzysztof Bociurko vor 8 Jahren 0
@matzeri: viel detailliertes Timing in Frage gestellt Krzysztof Bociurko vor 8 Jahren 0
Nichts klares zum Zeitpunkt. Können Sie überprüfen, ob "mc -u" immer noch das Problem hat? Wenn nicht, dann liegt das Problem bei der Interaktion mit der Subshell. matzeri vor 8 Jahren 0
Lassen Sie uns [diese Diskussion im Chat fortsetzen] (http://chat.stackexchange.com/rooms/42165/discussion-between-matzeri-and-chanibal). matzeri vor 8 Jahren 0

1 Antwort auf die Frage

0
Krzysztof Bociurko

Ich habe das Problem gefunden und entschieden, dass es sich um Windows 10 oder einen fehlerhaften Hardwarefehler handelt, nicht um MC. Der Mitternachtsbefehlshaber löst dieses Problem aus, aber er verwendet das Betriebssystem auf die erwartete Weise, daher ist es nicht seine Schuld.

Um genau zu sein, besteht das Problem darin, dass das Aufzählen von Geräten Zeit benötigt (genau 4 oder 5 Sekunden in Windows-Powershell oder 4 Sekunden in Cygwin). Die Lösung in meinem Fall bestand darin, das DVD-Laufwerk zu deaktivieren, das Zeit brauchte. Details zum Cygwin-Mailinglistenthread .