Komandan tengah malam terkadang sangat lambat

0

Saya menggunakan komandan tengah malam dengan Cygwin 64 bit pada Windows 10 64 bit.

Setelah pindah ke mesin baru dan menginstal ulang bersih windows dan cygwin, komandan tengah malam saya mulai sangat lamban dari waktu ke waktu. Restart membantu, tetapi ini terjadi terlalu sering sehingga menjadi solusi yang layak (memulai ulang tidak membantu) .

Saya tidak tahu apa yang bisa menjadi alasan untuk cegukan ini. MC biasanya berfungsi dengan baik: tanda panah berfungsi dengan baik, melihat dan mengedit adalah instan, tetapi satu hal memerlukan waktu hingga 10 detik - mengubah direktori. Pencarian dalam file memiliki lag serupa, tetapi hanya sekali (yaitu tidak dalam setiap chdirhal bisa dilakukan). Dalam penggunaan cygwin non-mc masalah ini tidak terjadi.

Pengelola tugas tidak menunjukkan penggunaan CPU atau memori tinggi yang tidak normal pada proses apa pun. Saya telah cygserverberjalan, menggunakan bashshell saya dan tidak memiliki PS1pengaturan mewah , saya $CYGWINhanya winsymlinks:native.

Berikut adalah stracelog, mungkin seseorang memiliki ide apa yang salah? http://pastebin.pl/view/9b839815
(direkam dengan LOCALE=C strace -q -o /tmp/mc-log mc /tmp)

Dalam sesi rekaman saya memiliki:

  • mulai mc di /tmpdirektori
  • /tmp/NVIDIA Corporationdirektori yang dimasukkan
  • naik kembali ( ..)
  • /tmp/mc-chanibaldirektori yang dimasukkan
  • naik kembali ( ..)
  • keluar dengan F10

Informasi waktu tambahan:

Menemukan semua direktori di saya $HOMEmembutuhkan 4,6 detik:

$ time find ~ -type d | wc -l
(snipped two directories without permissions)
19919

real    0m4.626s
user    0m0.796s
sys     0m3.765s

A ls -alpada semua direktori ini membutuhkan banyak waktu, tetapi rata-rata cukup rendah:

time (find ~ -type d | while read f; do { time ls -al $f; } \
   |& awk '$1 == "real" { printf $2 }'                      \
   | awk -Fm '{printf( "%2.4f", $1 * 60 + $2 )}';           \
   echo -e "\t$f"; done                                     \
) >/tmp/ls-time-log ;
(snipped two dirs without permissions)

real    12m21.870s
user    7m4.576s
sys     16m34.446s

Waktu rata-rata untuk melakukan suatu ls -aladalah 0,020, min adalah 0,017, maks adalah 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

Dengan overhead pengukuran waktu rata-rata 16m34s / 19919 = 0,499s per panggilan ke ls -al, dua awkdetik dan iterasi dari find. Tidak terlalu bagus, tapi tidak empat detik.


Normalisasi dengan cygpathtidak butuh waktu lama:

$ 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

EDIT: Menambahkan masalah ini ke trac MC

Krzysztof Bociurko
sumber
Apakah ini mesin domain atau berdiri sendiri?
matzeri
$ grep normalize_posix_path 9b839815.strace | awk '{ if ($1 > 10000) print $0}'menunjukkan batas waktu 4 detik memasuki beberapa direktori. Adakah SID yang tidak biasa pada file ACL? Bisakah Anda membandingkan dengan waktu untuk berjalan ls -ldi direktori yang sama?
matzeri
@matzeri: ini adalah instalasi windows yang berdiri sendiri, tidak ada drive jaringan yang terpasang atau pengontrol domain
Krzysztof Bociurko
@matzeri: waktu ls -alpada direktori atau isinya diabaikan (sekitar 0,021 nyata)
Krzysztof Bociurko
@matzeri: menambahkan banyak waktu rinci dalam pertanyaan
Krzysztof Bociurko

Jawaban:

0

Saya telah menemukan masalah dan memutuskan itu Windows 10 atau kesalahan perangkat keras, bukan MC. Komandan Midnight memang memicu masalah ini, tetapi ia melakukannya dengan menggunakan OS dengan cara yang diharapkan, jadi itu bukan kesalahannya.

Tepatnya, masalahnya adalah bahwa penghitungan perangkat memerlukan waktu (tepatnya 4 atau 5 detik di Windows PowerShell atau 4 detik di Cygwin). Perbaikan dalam kasus saya adalah untuk menonaktifkan drive DVD yang membutuhkan waktu. Detail tentang utas milis Cygwin .

Krzysztof Bociurko
sumber