Обнаружение "spindump" (высокая и длительная загрузка ЦП ядром) в моем приложении из-за перегрузки сети - PullRequest
0 голосов
/ 11 марта 2020

Мое приложение macOS выполняет некоторые ресурсоемкие файловые операции в фоновом режиме. На сетевых томах, особенно на медленных сетевых соединениях, это может привести к эффекту «spindump», когда «пляжный мяч» продолжает появляться, останавливая не только мое приложение, но и всю систему из-за перегрузки сети, вызванной моими вызовами.

В идеале, ОС должна предотвращать такие сбои, но macOS этого не делает. Поэтому мне нравится обнаруживать эти перегрузки и соответствующим образом регулировать вызовы файловых операций, динамически по мере необходимости.

Как я могу это обнаружить?

Я знаю, что могу определить, находится ли файл на объем сети. Но быстрые сети с моим приложением не вызовут надувательства, только медленные. Итак, знание того, что я работаю на томе сети, само по себе не является хорошим критерием.

И мне нравится обнаруживать ситуацию до того, как инструмент spindump запускается ОС , как это уже указывало, что система плохо остановилась. Мне нравится реагировать раньше . В идеале, я бы использовал те же критерии, которые также решают при вызове spindump, чуть раньше.

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

...