К сожалению, если эти документы не так ясно, как вам хотелось бы.
Во-первых, мы построили сторожа специально для ускорения инструментов, которые должны работать на очень больших деревьев, особенно этот, который только продолжал получили все больше и больше, так как это было написано:
https://code.facebook.com/posts/218678814984400/scaling-mercurial-at-facebook/
основной исходный репозиторий
Facebook огромен - во много раз больше, чем даже ядро Linux, которое проверено на 17 миллионов строк кода и 44000 файлов в 2013
У меня нет каких-либо более недавних публичных номеров по размеру репо, что я могу поделиться с рукой в данный момент, но главное здесь в том, что это должно работать нормально для очень подавляющего большинства приложений.
Теперь к поведению системы при превышении предельных значений. Ответ зависит от того, какую операционную систему вы используете.
Существует 2 основных системных ограничения, влияющих на это поведение; один из них является прямым пределом количества наблюдаемых предметов; когда он превышен, вы не можете смотреть что-нибудь еще. При работе в Linux Watchman будет рассматривать этот случай как неустранимый и сам флаг, как отравленный; когда в этом состоянии невозможно точно сообщать о изменениях файла в пределах количества каталогов, которые просматриваются до тех пор, пока вы не поднимете системный предел, или не сдадите попытку просмотра этой части файловой системы.
При работе на OS X, сторож не может сказать, если этот предел превышен из-за плохой диагностики в fsevents API; самое лучшее, что мы можем сказать, что мы не смогли инициировать часы. Поскольку fsevents не говорит нам о том, что происходит, и поскольку этот предел не настраивается пользователем, мы не можем перевести этот процесс в отравленное состояние.
Другой предел системы на количество элементов, что ядро буферизацией для процесса сторожа потребить. Если этот буфер переполнен, ядро начнет отменять уведомления об изменениях. Он будет информировать сторожа о том, что он сделал это, и это заставит сторожа выполнить (вероятно, учитывая, что дерево, по-видимому, велико), дорогостоящее повторение дерева, чтобы убедиться, что оно может (повторно) обнаружить любые изменения, которые он мог упустить из-за переполнение.
OS X имеет аналогичные ограничения и аналогичное поведение восстановления, но не позволяет пользователю повысить лимит. Я еще не заметил это на OS X в дикой природе, поэтому я предполагаю, что все эти ограничения по умолчанию для системы по умолчанию являются довольно разумным дефолтом.
Что касается практических ограничений для разных размеров файлов, это действительно зависит от вашей системы; файловая система, устройство хранения, мощность процессора и другие приложения, которые вы можете запускать в этой системе, влияют на скорость, с которой изменения могут быть применены к файловой системе и сообщены ядром, и скорость, с которой ваша система сможет потреблять события из ядра.
Ставка, с которой вы изменяете эти файлы, является большим фактором; если у вас очень большое и занятое дерево, которое часто меняется (> 100 инженеров, совершающих множественные коммиты в день и часто перезаряжающиеся), тогда у вас есть повышенный риск попадания в регистр.
Нет ответа на один размер для настройки системных ограничений; вам нужно будет попробовать и поднять лимиты, если/когда вы ударите их.
Удивительный ответ, спасибо – callum