Иногда мой Macbook Pro тормозит, когда жесткий диск бесконечно щелкает. Загрузка процессора низкая, но приложения и элементы меню реагируют медленно. Есть ли утилита, которая может помочь мне определить, что происходит, например, количество прочитанных / записанных байтов или файлов, открытых / закрытых для процесса, с течением времени?
4 ответа
От man iotop
:
iotop отслеживает дисковый ввод-вывод по процессу и печатает сводный отчет, который обновляется каждый интервал.
Это измерение дисковых событий, которые прошли через системные кэши.
Поскольку для этого используется DTrace, эту команду может выполнить только пользователь root или пользователи с привилегией dtrace_kernel.
Это может быть не совсем то, что вам нужно, но это скрипт ksh, который оборачивается вокруг dtrace, поэтому вы должны быть в состоянии выяснить, как заставить dtrace делать то, что вам нужно, если iotop не обрабатывает его по умолчанию.
Однако что-то вроде iotop -C 5 12
должно дать вам кое-что для начала: он выдаст 12 сэмплов, каждый по 5 секунд.
Вы также можете использовать fs_usage
чтобы получить подробный отчет о том, какие приложения попадают на диск.
Я всегда замечал это по утрам в субботу, и оказалось, что это locate
, которое обновляет свою базу данных в 3:15 ночи пятницы.
Я попытался отключить его конфигурацию launchd
(в /System/Library/LaunchDaemons/com.apple.locate.plist
), но она все равно работала, поэтому я просто /usr/libexec/locate.updatedb
. Проблема ... смягчены.
Это может быть подкачка ОС к виртуальной памяти, а не что-то конкретное для приложения. Вы можете попытаться выйти из менее часто используемых приложений или хотя бы перезапустить некоторые приложения, которым нравится со временем создавать кэш-память в памяти (например, Safari). Просмотрите статистику памяти для каждого процесса с помощью Activity Monitor, чтобы найти вероятных виновников. Если выход из некоторых приложений, интенсивно использующих память, временно устраняет проблему, попробуйте добавить ОЗУ.
Если активность диска не связана с подкачкой страниц, вы можете использовать fs_usage
чтобы отследить его до одного или нескольких конкретных процессов.