Очень разные характеристики между двумя установками Cygwin на одной машине - PullRequest
0 голосов
/ 16 апреля 2019

Я потратил слишком много времени, пытаясь разгадать эту загадку.Я уже исключил обычных подозреваемых, когда речь заходит о медлительности Cygwin.У меня есть две разные установки Cygwin с совершенно разными характеристиками.Ниже это количественно определяется как «производительность разветвления», а также время выполнения операции git difftool.

Может кто-нибудь предложить, что я должен посмотреть дальше?Быстрая установка cygwin очень удобна, но мне сейчас нужны некоторые современные пакеты, и любые попытки установить, например, python 3.x, приводят к обновлению всей установки (и, следовательно, к замедлению :().

Сводка различий в производительности

+---------------------------+----------------+-----------------+----------------------+
|           Desc            | Version1(Fast) | Version2(Slow)  | Git Bash for Windows |
+---------------------------+----------------+-----------------+----------------------+
| git difftool (System CPU) | 15%            | 69%             |                      |
| git difftool (Total Time) | 3.284s         | 10.549s         | 0.46s                |
| fork performance          | ~15            | ~10             | ~22 (!!)             |
+---------------------------+----------------+-----------------+----------------------+

Описание сравниваемых установок Cygwin

Версия 1 (обозначается 'V1' ниже): Babun Cygwin v 1.2.0 (последняя стабильная версия). Обратите внимание, что сама babun была заброшена, так что эта версия Cygwin (64-разрядная версия) довольно устарела.

Версия 2 (именуемая 'V2' ниже): это был ряд разных вещей:

  1. V1 обновлен до последней версии с использованием настройки cygwin.exe
  2. Свежая установка Babun v 1.2.0 (да, так же, как V1 !!)
  3. Свежая установка cygwin 64-bit
  4. Свежая установкаБабун ночной (от http://40.114.204.90, У меня нет под рукой вилки Бабун, из которой это сделаноed)

Обычные подозреваемые исключены

Проблема в том, что Version1 по меньшей мере в 3 раза быстрее для операции git и имеет почти на 50% более высокую производительность форка, чем Version2 ната же машина .Я посмотрел на посты «Медленный Cygwin» на SO и в других местах, буквально все, что я мог найти.Это включает в себя:

  1. Исключено любое программное обеспечение BLODA (посмотрел список BLODA и также попытался открыть cygwin с помощью CYGWIN=detect_bloda, что не вызывает никаких сюрпризов. Очень рано об этомобнаружил внедрение ConEmuHK как проблему, которую я с тех пор отключил, но безрезультатно. Кроме того, чтобы исключить что-либо подобное, все следующие тесты выполнялись с использованием исполняемого файла основной оболочки (zsh.exe) или mintty.exe без каких-либо оболочек сверху, например.Conemu.
  2. Используется strace для сравнения библиотек DLL, загружаемых V1 и V2. Очевидно, что специфичные для cygwin библиотеки DLL отличаются, но список библиотек, не относящихся к Cygwin, идентичен.
  3. У меня также естьпопытался скопировать библиотеки Cygwin DLL в блоках из V1 (быстро) -> V2 (медленно), выполняя rebaseall после каждой операции копирования.
  4. Я также пытался выяснить, есть ли что-то конкретное, что делает Бабунпри создании переносной установки Cygwin
  5. Мой PATH минимален. Ничего в пути, это общий сетевой ресурс

    /usr/local/bin
    /usr/local/sbin
    /usr/bin
    /cygdrive/c/WINDOWS/system32
    /cygdrive/c/WINDOWS
    /cygdrive/c/WINDOWS/System32/Wbem```
    
  6. Исключил проблемы LDAP, создав статические /etc/passwd и /etc/group и настроив /etc/nsswitch.conf следующим образом:
    enter image description here


Подробная статистика производительности

Ниже приведена подробная информация о разнице в производительности.

Версия 1 - Производительность

? babun --version
babun version 1.2.0
Created and maintained by Tom Bujok (@tombujok)
Copyright (c) 2014-2015.

~
? while (true); do date --utc; done | uniq -c
 11 Tue, Apr 16, 2019  8:16:43 AM
 13 Tue, Apr 16, 2019  8:16:44 AM
 13 Tue, Apr 16, 2019  8:16:45 AM
 14 Tue, Apr 16, 2019  8:16:46 AM
 14 Tue, Apr 16, 2019  8:16:47 AM
 15 Tue, Apr 16, 2019  8:16:48 AM
 14 Tue, Apr 16, 2019  8:16:49 AM
 13 Tue, Apr 16, 2019  8:16:50 AM
 14 Tue, Apr 16, 2019  8:16:51 AM
 13 Tue, Apr 16, 2019  8:16:52 AM
 13 Tue, Apr 16, 2019  8:16:53 AM
 12 Tue, Apr 16, 2019  8:16:54 AM
 14 Tue, Apr 16, 2019  8:16:55 AM
 13 Tue, Apr 16, 2019  8:16:56 AM
 14 Tue, Apr 16, 2019  8:16:57 AM

❯ time git -C ~/some-git-repo difftool "HEAD~^\!"
0.10s user 0.40s system 15% cpu 3.284 total

Версия 2 - Производительность

Последний 64-битный Cygwin на этот пост

❯ time git -C ~/some-git-repo difftool "HEAD~^\!"
0.14s user 7.17s system 69% cpu 10.549 total

? while (true); do date --utc; done | uniq -c
      4 Tue, Apr 16, 2019  8:21:25 AM
     10 Tue, Apr 16, 2019  8:21:26 AM
      9 Tue, Apr 16, 2019  8:21:27 AM
     10 Tue, Apr 16, 2019  8:21:28 AM
     10 Tue, Apr 16, 2019  8:21:29 AM
     10 Tue, Apr 16, 2019  8:21:30 AM
     10 Tue, Apr 16, 2019  8:21:31 AM
     10 Tue, Apr 16, 2019  8:21:32 AM
     10 Tue, Apr 16, 2019  8:21:33 AM
     10 Tue, Apr 16, 2019  8:21:34 AM
      9 Tue, Apr 16, 2019  8:21:35 AM
     10 Tue, Apr 16, 2019  8:21:36 AM

...