watchmanのインストール手順では、次のように設定するkern.maxfiles
ように指示されています。
$ sudo sysctl -w kern.maxfiles=10485760
$ sudo sysctl -w kern.maxfilesperproc=1048576
これらの値 (両方) のデフォルト設定は、macOS High Sierra では 131072 です。Watchman の提案は、カーネルのパフォーマンス クリティカルな設定を 80 倍変更することです。これらの値を調整すると、特にコンパイルなどのファイル負荷の高い操作の場合、パフォーマンス特性が異なる場合があります。
Watchman は制限を変更して、同時により多くのファイルを監視できるようにします。
ただし、Xcode はプロジェクトのインデックス作成を開始し、( 経由で) 許可されている数のファイルを開きますkern.maxfiles
。コンパイル フェーズ中に、Xcode が起動xcexec
し、インデックス作成のために開いているファイル記述子をすべて閉じてから、ビルド ステップのサブプロセスを起動します。その操作にはほとんど時間がかかりません。しかし、変更後kern.maxfiles
、突然そうなります。
2015 年半ばの MBP、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