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 chdir
hal 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 cygserver
berjalan, menggunakan bash
shell saya dan tidak memiliki PS1
pengaturan mewah , saya $CYGWIN
hanya winsymlinks:native
.
Berikut adalah strace
log, 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
/tmp
direktori /tmp/NVIDIA Corporation
direktori yang dimasukkan- naik kembali (
..
) /tmp/mc-chanibal
direktori yang dimasukkan- naik kembali (
..
) - keluar dengan F10
Informasi waktu tambahan:
Menemukan semua direktori di saya $HOME
membutuhkan 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 -al
pada 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 -al
adalah 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 awk
detik dan iterasi dari find
. Tidak terlalu bagus, tapi tidak empat detik.
Normalisasi dengan cygpath
tidak 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
$ 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 -l
di direktori yang sama?
ls -al
pada direktori atau isinya diabaikan (sekitar 0,021 nyata)