Я понимаю, что есть еще несколько вопросов о том, почему Cygwin, по-видимому, работает медленно, но этот случай кажется уникальным.
У меня были некоторые проблемы, когда сообщалось о множестве ошибок, а затем после перезагрузки любой процесс, запущенный из bash, работал очень медленно. Я, честно говоря, понятия не имею, что может быть причиной этого (я проверил приоритет процесса в taskmgr; все еще нормально).
Детали:
Я выполнял тест на пропитание кода сокета в одночасье и вернулся утром, чтобы обнаружить, что мой экран наводнен ошибками (DialogBoxes - в основном пытались получить доступ к указателям NULL), а также довольно много вещей, отправленных в командную строку. Было довольно много текста, который я не смог записать (компьютер был в основном не отвечает; мне пришлось перезагрузить его вручную). Я помню некоторые тексты, на которые ссылается «Ошибка Win32 6» (что, как я предполагаю, означает INVALID HANDLE ).
После перезагрузки большинство вещей в порядке, но Cygwin / bash все еще довольно не отвечает. Я запустил следующее, как предложено в другом вопросе:
$ time for i in {1..10} ; do bash -c "echo Hello" ; done
...
real 1m12.244s
user 0m3.522s
sys 0m34.460s
Вызывать другой экземпляр bash не обязательно для ужасной скорости:
$ time for i in {1..10}; do ls ; done
# nb there are about 6 entries in pwd
....
real 0m47.718s
user 0m2.568s
sys 0m23.411s
Хотя встроенные функции, похоже, работают достаточно быстро:
$ time for i in {1..10} ; do echo Hello ; done
....
real 0m0.001s
user 0m0.000s
sys 0m0.000s
Обновление:
Я только что понял, что Windows Update установлен между тем и сейчас. Я рад, что это не становится слишком сложным или что-то еще. (Хотя я считаю, что другие коллеги установили обновление и не видят проблем).
Обновление 2:
Чтобы ответить на комментарий ниже, файлы в / bin выполняются без проблем из CMD. Кроме того, я полностью удалил и повторно загрузил каталог установки cygwin, и проблема все еще возникает.
Я [до сих пор] не совсем уверен, как использовать косы Cygwin, но я думаю, что первая колонка может быть дельта времени. Имея это в виду, вот несколько строк, которые выглядят проблематично (0xDEADBEEF
, безусловно, не внушает оптимизма):
4100175 4101564 [main] bash 5664 _cygtls::remove: wait 0xFFFFFFFF
4278898 4279724 [main] bash 5612 child_copy: dll bss - hp 0x628 low 0x611DC000, high 0x612108D0, res 1
2210923 25635973 [proc_waiter] bash 5664 pinfo::maybe_set_exit_code_from_windows: pid 5400, exit value - old 0x8000000, windows 0xDEADBEEF, cygwin 0x8000000
3595425 16085618 [proc_waiter] bash 5612 pinfo::maybe_set_exit_code_from_windows: pid 5376, exit value - old 0x8000000, windows 0xDEADBEEF, cygwin 0x8000000
3057452 19149209 [proc_waiter] bash 5664 pinfo::maybe_set_exit_code_from_windows: pid 5612, exit value - old 0x8000000, windows 0xDEADBEEF, cygwin 0x8000000
2631997 38835042 [proc_waiter] bash 5716 pinfo::maybe_set_exit_code_from_windows: pid 5720, exit value - old 0x8000000, windows 0xDEADBEEF, cygwin 0x8000000
2610852 38836658 [main] bash 4624 _cygtls::remove: wait 0xFFFFFFFF
3708283 42556365 [proc_waiter] bash 5716 pinfo::maybe_set_exit_code_from_windows: pid 4624, exit value - old 0x8000000, windows 0xDEADBEEF, cygwin 0x8000000
3666884 42562053 [main] bash 5664 fhandler_base_overlapped::wait_overlapped: GetOverLappedResult failed, bytes 0
2742397 45305871 [proc_waiter] bash 5664 pinfo::maybe_set_exit_code_from_windows: pid 5716, exit value - old 0x8000000, windows 0xDEADBEEF, cygwin 0x8000000
45322195 45322997 [main] bash 3996 child_copy: dll bss - hp 0x62C low 0x611DC000, high 0x612108D0, res 1
4247577 49581019 [main] bash 3996 _cygtls::remove: wait 0xFFFFFFFF
4266690 49581325 [main] bash 5664 child_info::sync: pid 3996, WFMO returned 0, res 1
49622099 49623318 [main] bash 4840 child_copy: dll bss - hp 0x690 low 0x611DC000, high 0x612108D0, res 1
4225718 53860809 [main] bash 4840 _cygtls::remove: wait 0xFFFFFFFF
4248491 53861119 [main] bash 3996 child_info::sync: pid 4840, WFMO returned 0, res 1
2167422 2169463 [main] bash 1412 _cygtls::remove: wait 0xFFFFFFFF
10369 2205831 [main] bash 1412 pwdgrp::load: \etc\passwd curr_lines 4082
10313 2237148 [main] bash 1412 cygwin_gethostname: name A119894
14720 2251868 [main] bash 1412 stat64: entering