Подтвердить что ты не робот

Git клон в окнах намного медленнее, чем в Linux

Я преследовал проблему с чрезвычайно медленными скоростями клонирования от github на окнах. Linux (kali) не имеет этой проблемы.

Я подключаюсь к 100/40 мегабит/с. Я могу получить около 8 Мб/с без проблем.

Я подключил свой компьютер прямо в нашу интернет-розетку без каких-либо маршрутизаторов или коммутаторов.

Windows git clone (окна 10, git 2.14.1) последовательно загружается при приблизительно 150-210 кб/с

Я попробовал еще один Windows 7 и Windows 10 с той же проблемой. Я пробовал Windows XP VM с той же проблемой. Я изменил свое соединение на 4G сотовый, и скорость такая же.

Я пробовал тест github mirror (https://bitbucket.org/mirror/git.git) с теми же результатами.

Я пробовал SSH и HTTPS с изменением скорости, но все же медленно.

Я пробовал другие зеркала github также с медленными скоростями.

Я попытался использовать VPN (PIA) через кремниевую долину, которая была еще медленнее.

Если я использую kali linux в виртуальной машине на одном компьютере с мостовым сетевым соединением, я получаю ~ 8 мб/с от битбакета с использованием SSH и HTTPS.

Если я использую Visual Studio Team Services, созданный агент сборки (windows), я получаю примерно 60 мб/с (возможно, кешировано?)

Я попытался запустить git из git bash, ubuntu bash (windows 10), windows cmd, powershell с одинаковой скоростью.

Я пытаюсь использовать "OpenSSL Library", а также "собственную библиотеку защищенных каналов Windows" при установке git.

Я попробовал понизить до 2,00 с 2,14 без разницы.

Я нахожусь в Австралии.

Я говорил с поддержкой bitbucket, и они предположили, что MSS/MTU должен быть 1436 или ниже. Мой маршрутизатор и ПК по умолчанию используют 1500, но используя wirehark в окнах, я вижу, что все пакеты имеют MTU 1436.

Используя tcpdump в kali linux, я также вижу MTU 1436.

Подводя итог, я изменил следующие вещи: Различные ПК/виртуальные машины Различные версии окон Различные физические сетевые подключения.

Я либо получаю ~ 200kb/s max в окнах, либо получаю максимум 8 Мб/с в linux.

Что конкретно отличается между версиями linux и windows git, которые могут вызвать тезисы о скорости?

edit: В случае, если git использовал медленный сетевой ресурс (см. другие вопросы по этому вопросу), я попытался сделать cp -r с помощью моего локального клона, и я получаю грубую скорость передачи 1 Гбит/с (RAID 0 SSD), используя те же пути, что и в моей конфигурации git.

edit: Если я смогу подключить сеть в своей виртуальной машине Kali к окнам, я получаю 8 МБ/с, если я использую NAT, тогда я получаю 200 кбит/с, указывая, что это что-то связано с https через окна, а не с git клиент, вызывающий проблему. Помогает ли это?

edit 2: Кажется, что весь трафик HTTPS через окна ограничен 200kb/s, это проблема Windows, а не проблема git. Я начну новый вопрос.

https://superuser.com/info/1244551/https-traffic-40x-slower-than-http-in-windows-10-x64

4b9b3361

Ответ 1

Проблема решена:

netsh interface tcp show global
netsh interface tcp set global autotuninglevel=normal

netsh interface tcp show heuristics
netsh interface tcp set heuristics disabled

Автонастройка была отключена по какой-либо причине на всех моих ПК с Windows 10. Скорость мгновенно перешла на 8 мб/с

Ответ 2

Попробуйте и не сжимайте PortableGit-2.14.1-64-bit.7z.exe в (например) C:\git2.14.1

Затем в CMD (не bash) введите:

set PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\
set GH=C:\git2.14.1
set PATH=%GH%\bin;%GH%\usr\bin;%GH%\mingw64\bin;%PATH%

В этом сеансе ваша PATH будет ссылаться только на Windows и Git.

Попробуйте снова клон Git, чтобы убедиться, что скорость все еще ограничена.

Если это так, как комментарий OP, тогда сеть Windows не работает.
Это то, что OP обнаружил в своем другом вопросе.
И что я объяснил в " автонастройка окна в Windows 10"

Функция автоматической настройки окна приема позволяет операционной системе постоянно отслеживать условия маршрутизации, такие как пропускная способность, сетевая задержка и задержка приложения. Таким образом, операционная система может настраивать соединения, масштабируя окно приема TCP, чтобы максимизировать производительность сети.

Чтобы определить оптимальный размер окна приема, функция автоматической настройки окна приема измеряет продукты, которые задерживают пропускную способность и скорость загрузки приложения. Затем функция автоматической настройки окна "Получать" адаптирует размер окна приема текущей передачи для использования любой неиспользуемой полосы пропускания.

Разрешить настройку по умолчанию для функции автоматической настройки окна. Если ваша сеть использует старый маршрутизатор или ваше программное обеспечение брандмауэра не поддерживает эту функцию, и вы испытываете проблемы с отсутствием или отсутствием связи, только тогда вы можете отключить эту функцию и посмотреть, работает ли она в вашу пользу.

Как объяснено в Сообщение в блоге Microsoft:

Некоторая путаница может возникнуть из-за неправильной интерпретации сообщения в блоге, в котором предлагается отключить эвристику с помощью следующей команды:

netsh interface tcp set heuristics disabled

Эвристика - это функция, которая может помешать автоматической настройке и отключению, что может улучшить скорость Интернета, и на самом деле эвристика уже отключена в Windows 8.1 и выше.
Автонастройка, с другой стороны, НИКОГДА не будет отключена.

Ответ 3

Вероятно, вы просто испытываете не очень высокую производительность при создании большого количества небольших файлов в файловой системе NTFS; это не имеет никакого отношения к вашему интернет-соединению.

Не углубляясь в технические детали, NTFS чрезвычайно неэффективна при работе с тысячами небольших файлов (как правило, то, что вы видите в репозитории GIT), вы возможно, увеличит производительность, настроив некоторые параметры NTFS, в любом случае YMMV.

Возможно, для подтверждения проблемы производительности файловой системы вы можете создать RAM-диск, к которому клонировать репо.