В инструкциях по установке watchman содержится указание вам установить kern.maxfiles
следующим образом:
$ sudo sysctl -w kern.maxfiles=10485760
$ sudo sysctl -w kern.maxfilesperproc=1048576
Значение по умолчанию для (обоих) этих значений — 131072 в macOS High Sierra. Предложение Watchman — это 80-кратное изменение критической для производительности настройки вашего ядра. Изменение этих значений может привести к различным характеристикам производительности, особенно для тяжелых операций с файлами, таких как компиляция.
Watchman изменяет ограничение, чтобы одновременно можно было просматривать больше файлов.
Однако Xcode начнет индексировать ваш проект и откроет столько файлов, сколько разрешено (через kern.maxfiles
). На этапе компиляции Xcode запускает xcexec
, который закроет все дескрипторы открытых файлов для индексации и только затем запустит подпроцесс этапа сборки. Эта операция почти не займет времени. Но после изменения kern.maxfiles
это внезапно происходит.
Я тестировал MBP в середине 2015 года, macOS 10.13.3, Xcode 9.2.0.
Согласно моему бенчмаркингу, kern.maxfilesperproc
не влияет на производительность сборки Xcode.
Производительность сборок Xcode сильно снижается, как только kern.maxfiles
превышает 327680.
Я рекомендую установить kern.maxfiles
на (не больше) 327680, если вам нужно поддерживать сторож с большими проектами.
Обратите внимание, что настройка kern.maxfiles
с sysctl
не сохраняется при перезагрузке. Настройте значения в /Library/LaunchDaemons/limit.maxfiles.plist
.
person
Berik
schedule
02.02.2018