Мое приложение macOS выполняет некоторые ресурсоемкие файловые операции в фоновом режиме. На сетевых томах, особенно на медленных сетевых соединениях, это может привести к эффекту «spindump», когда «пляжный мяч» продолжает появляться, останавливая не только мое приложение, но и всю систему из-за перегрузки сети, вызванной моими вызовами.
В идеале, ОС должна предотвращать такие сбои, но macOS этого не делает. Поэтому мне нравится обнаруживать эти перегрузки и соответствующим образом регулировать вызовы файловых операций, динамически по мере необходимости.
Как я могу это обнаружить?
Я знаю, что могу определить, находится ли файл на объем сети. Но быстрые сети с моим приложением не вызовут надувательства, только медленные. Итак, знание того, что я работаю на томе сети, само по себе не является хорошим критерием.
И мне нравится обнаруживать ситуацию до того, как инструмент spindump
запускается ОС , как это уже указывало, что система плохо остановилась. Мне нравится реагировать раньше . В идеале, я бы использовал те же критерии, которые также решают при вызове spindump
, чуть раньше.
И, конечно, если файловая система работает, я хотел бы, чтобы мои операции выполнялись как можно быстрее, поэтому я не хочу ограничивать свои звонки, когда в этом нет необходимости.