Apple #Mac #macOS #Терминал #Диагностика #Железо

Диагностика Mac в Терминале: почему тормозит, греется и не спит

Как в Терминале macOS найти причину тормозов, перегрева и проблем со сном: процессы и load average, троттлинг, память и подкачка, задержки диска и SMART, кто мешает сну, системный журнал и отчёты о сбоях.

14 минут 1
Содержание
  1. 1Процессор и процессы
  2. top: кто грузит процессор прямо сейчас
  3. ps: список процессов с сортировкой
  4. uptime и load average
  5. 2Перегрев и троттлинг
  6. 3Память
  7. memory_pressure: хватает ли памяти
  8. vm_stat: из чего состоит память
  9. Подкачка и объём памяти
  10. 4Диск
  11. Свободное место
  12. iostat: нагрузка на диск
  13. fs_usage: сколько ждёт каждая операция
  14. TRIM и SMART
  15. 5Сон и питание
  16. pmset -g: текущие настройки и кто мешает сну
  17. pmset -g assertions: подробности о запретах
  18. pmset -g log: когда засыпал, просыпался и выключался
  19. 6Системный журнал
  20. log show: ошибки за последний час
  21. log stream: журнал в реальном времени
  22. 7Отчёты о сбоях
  23. 8sysdiagnose: полный отчёт для поддержки
  24. 9Симптом → что запустить
  25. 10Шпаргалка команд
  26. 11Частые ошибки
  27. 12Mac тормозит: 7 шагов
  28. 13Частые вопросы
  29. Почему в top у всех процессов 0 % загрузки?
  30. Какой load average нормальный для Mac?
  31. Как проверить, что Mac сбрасывает частоту из-за перегрева?
  32. Почему vm_stat показывает мало свободной памяти, хотя Mac не тормозит?
  33. Как узнать, кто не даёт Mac уснуть?
  34. Почему Mac просыпается сам по себе?
  35. Ошибки в log show — это проблема?
  36. Где найти отчёты о сбоях программ?

Когда Mac начинает тормозить, первым делом открывают «Мониторинг системы». Он показывает, кто ест процессор и память, но молчит о главном: ограничивает ли система частоту из-за температуры, сколько миллисекунд ждёт каждая операция с диском и кто не даёт компьютеру уснуть. Всё это видно только в Терминале.

В этой статье — набор встроенных команд macOS, которые за пару минут отвечают на вопрос «что не так». Все выводы, подписанные «Вывод на моём iMac», сняты на моём iMac 21,5″ 2019 года: Intel Core i7-8700, 32 ГБ памяти, SSD Crucial BX500 на 240 ГБ, macOS Sequoia 15.7.9. Остальное — примеры, они так и подписаны.

Порядок разделов — от простого к сложному: процессор, температура, память, диск, сон, журнал. Обычно причина находится уже на втором-третьем шаге.

Процессор и процессы

top: кто грузит процессор прямо сейчас

top в macOS — это BSD-версия, и ключи у неё не такие, как в Linux. Чтобы получить снимок и не попасть в интерактивный режим, используют -l (сколько замеров сделать):

Терминал
top -l 1 -n 8 -o cpu -stats pid,command,cpu,mem
  • -l 1 — один замер и выход;
  • -n 8 — показать 8 процессов;
  • -o cpu — сортировать по загрузке процессора;
  • -stats pid,command,cpu,mem — оставить только нужные колонки.
Вывод на моём iMac
Disks: 1582238/32G read, 311341/4436M written.

PID   COMMAND          %CPU MEM
4091  sed              0.0  620K
4090  tail             0.0  424K
4089  top              0.0  4124K
3346  mdworker_shared  0.0  1732K
3345  UserNotification 0.0  7360K

Видите ловушку? У всех процессов 0.0. Процент загрузки — это разница между двумя замерами, а при -l 1 замер один, и сравнивать не с чем. Поэтому берите два замера и смотрите на второй:

Терминал
top -l 2 -n 10 -o cpu -stats pid,command,cpu,mem | tail -n 11

Строка Disks: в шапке — сколько система прочитала и записала с момента загрузки. У меня за 5 часов 47 минут — 32 ГБ чтения и около 4,4 ГБ записи.

Для живого наблюдения запустите top -o cpu -s 2: список обновляется раз в 2 секунды, выход — клавиша Q.

ps: список процессов с сортировкой

ps удобен, когда нужно отфильтровать или сохранить список:

Терминал
ps aux | sort -nrk 3,3 | head -n 10

Третья колонка — %CPU, sort -nrk 3,3 сортирует по ней числом и по убыванию. Чтобы найти главных пожирателей памяти, сортируйте по четвёртой колонке %MEM:

Терминал
ps aux | sort -nrk 4,4 | head -n 10

В отличие от top, ps показывает средний процент за всё время жизни процесса. Для поиска «того, кто грузит прямо сейчас» он хуже, зато хорошо находит постоянных обжор.

Что обычно оказывается наверху:

  • 🔎 mds, mds_stores, mdworker — индексация Spotlight. После обновления macOS или копирования большой папки может работать часами. Состояние индекса показывает mdutil -s /.
  • 🌡️ kernel_task на Mac с Intel — часто не нагрузка, а защита от перегрева. По словам Apple, система так «занимает» процессор, чтобы другим процессам досталось меньше и он остыл. Смотрите раздел про температуру ниже.
  • 📸 photoanalysisd, mediaanalysisd — анализ фото в «Фото». Работает, пока Mac простаивает.
  • ☁️ bird, cloudd — синхронизация iCloud Drive.

Завершить зависший процесс можно по его номеру: kill 1234, а если не помогает — kill -9 1234. Для обычных программ проще ⌘ Command + ⌥ Option + Esc — окно «Принудительно завершить». Больше сочетаний — в статье Сочетания клавиш Mac.

uptime и load average

Терминал
uptime
Вывод на моём iMac
22:04  up  5:47, 2 users, load averages: 2,53 1,99 1,77

Три числа — средняя нагрузка за 1, 5 и 15 минут. Грубо говоря, это сколько потоков в среднем хотели работать одновременно. Сравнивать нагрузку нужно с числом логических процессоров:

Терминал
sysctl -n hw.ncpu

У моего i7-8700 6 ядер с Hyper-Threading, то есть 12 потоков, и hw.ncpu возвращает 12. Значит, 2,53 — это примерно пятая часть возможностей процессора. Ничего тревожного. Первое число больше третьего: за последнюю минуту нагрузка немного выросла, скорее всего из-за самих команд диагностики, которые в тот момент работали.

Как читать load average:

  • ✅ меньше числа потоков — процессор справляется;
  • ⚠️ около числа потоков — работает на пределе;
  • 🔥 заметно больше — процессы стоят в очереди, Mac тормозит.

Перегрев и троттлинг

Если Mac разогнался, а потом стал вялым, проверьте, не снижает ли система частоту процессора:

Терминал
pmset -g therm
Вывод на моём iMac
Note: No thermal warning level has been recorded
Note: No performance warning level has been recorded
2026-10-12 22:04:30 +0300 CPU Power notify
    CPU_Scheduler_Limit     = 100
    CPU_Available_CPUs     = 12
    CPU_Speed_Limit     = 100

Как читать:

  • No thermal warning level has been recorded — с момента загрузки система ни разу не фиксировала тепловое предупреждение;
  • CPU_Speed_Limit = 100 — процессору разрешено 100 % частоты. Если число меньше, например 60, процессор замедлен из-за температуры;
  • CPU_Scheduler_Limit — доля времени, которую планировщик отдаёт процессам;
  • CPU_Available_CPUs = 12 — все 12 потоков в работе.

На Mac с Apple Silicon вывод этой команды обычно короче: строк CPU_* может не быть.

Температуру и обороты вентилятора показывает powermetrics. Ему нужны права администратора, а набор датчиков зависит от процессора:

Терминал
# Mac с Intel: температура кристалла и вентилятор
sudo powermetrics --samplers smc -n 1

# Mac с Apple Silicon: уровень теплового давления
sudo powermetrics --samplers thermal -n 1

-n 1 — один замер. На Intel в выводе ищите строки CPU die temperature и Fan. На Apple Silicon — строку Current pressure level: Nominal означает норму.

Пример вывода (Intel)
**** SMC sensors ****

CPU Thermal level: 0
Fan: 1200 rpm
CPU die temperature: 48.31 C

Как и в Linux (подробнее в статье Мониторинг температуры в Linux), 90 °C под нагрузкой — не авария. Повод разбираться — высокая температура в простое и CPU_Speed_Limit меньше 100 при обычной работе. Чаще всего это пыль в радиаторе или высохшая термопаста.

Память

memory_pressure: хватает ли памяти

macOS старается занять всю свободную память под кэш, поэтому цифра «занято 28 из 32 ГБ» сама по себе ничего не значит. Важнее «давление на память»:

Терминал
memory_pressure | tail -n 4
Вывод на моём iMac
Pageins: 1691385
Pageouts: 0

System-wide memory free percentage: 90%
  • System-wide memory free percentage — сколько памяти система считает доступной. 90 % — памяти с запасом;
  • Pageouts: 0 — система ни разу не выгружала страницы памяти на диск. Именно рост Pageouts говорит о нехватке памяти;
  • Pageins — сколько страниц прочитано с диска. Сюда входит и обычная загрузка программ, так что большое число — нормально.

vm_stat: из чего состоит память

Терминал
vm_stat | head -n 7
Вывод на моём iMac
Mach Virtual Memory Statistics: (page size of 4096 bytes)
Pages free:                             1001227.
Pages active:                           3301417.
Pages inactive:                         2611321.
Pages speculative:                       706021.
Pages throttled:                              0.
Pages wired down:                        767942.

vm_stat показывает всё в страницах. Размер страницы написан в первой строке: на моём Intel это 4096 байт, на Apple Silicon — 16384. Пересчитать в гигабайты можно так:

Терминал
vm_stat | awk '/page size/ {ps=$8} /^Pages (free|active|inactive|speculative|wired)/ {split($0,a,":"); printf "%-20s %5.1f ГБ\n", a[1], $NF*ps/1073741824}'

Скрипт берёт размер страницы из заголовка, поэтому работает и на Intel, и на Apple Silicon.

Пересчёт моих цифр
Pages free             3.8 ГБ
Pages active          12.6 ГБ
Pages inactive        10.0 ГБ
Pages speculative      2.7 ГБ
Pages wired down       2.9 ГБ
  • free — совсем свободно;
  • active — используется прямо сейчас;
  • inactive — использовалось недавно, система отдаст эту память по первому требованию;
  • speculative — прочитано с диска «на всякий случай», тоже легко освобождается;
  • wired down — память ядра и драйверов, её нельзя выгрузить.

Вместе это почти ровно 32 ГБ. Свободной памяти «всего» 3,8 ГБ, но ещё почти 13 ГБ (inactive и speculative) система освободит мгновенно. Поэтому memory_pressure и показывает 90 %.

Подкачка и объём памяти

Терминал
sysctl vm.swapusage hw.memsize
Вывод на моём iMac
vm.swapusage: total = 0,00M  used = 0,00M  free = 0,00M  (encrypted)
hw.memsize: 34359738368

hw.memsize — объём памяти в байтах: 34 359 738 368 ÷ 1024³ = 32 ГБ. vm.swapusage — сколько занято в файлах подкачки. У меня ноль: macOS создаёт их только при нехватке памяти. Если used растёт до нескольких гигабайт, а Pageouts не стоит на месте — памяти мало, и тормоза идут отсюда. Ещё хуже, если при этом медленный диск: подкачка упирается прямо в него.

Диск

На Mac с медленным или переполненным диском тормозит вообще всё: программы, набор текста, курсор. Это та самая проблема, с которой я разбирался в статьях про TRIM и про дешёвый SSD.

Свободное место

Терминал
df -h /System/Volumes/Data
Вывод на моём iMac
Filesystem      Size    Used   Avail Capacity iused ifree %iused  Mounted on
/dev/disk1s1   223Gi   160Gi    49Gi    77%    993k  518M    0%   /System/Volumes/Data

Смотрите именно на том /System/Volumes/Data: там лежат ваши файлы и программы. Команда df -h / покажет системный том, а он занимает всего около 10 ГБ и почти не меняется. Держите свободными хотя бы 20–25 % диска, на бюджетных SSD — больше. Как найти и удалить лишнее, рассказываю в статье Как освободить место на Mac через Терминал.

iostat: нагрузка на диск

Терминал
iostat -d -c 3
  • -d — только диски, без процессора;
  • -c 3 — три замера с интервалом в секунду. Интервал задаётся ключом -w, например iostat -d -w 5.
Вывод на моём iMac
              disk0               disk2
    KB/t  tps  MB/s     KB/t  tps  MB/s
   20.22   91  1.79     3.71    0  0.00
    4.48   25  0.11     0.00    0  0.00
    0.00    0  0.00     0.00    0  0.00
  • KB/t — средний размер одной операции;
  • tps — операций в секунду;
  • MB/s — скорость.

Первая строка — среднее с момента загрузки, следующие — текущие замеры. Мой disk0 — это SSD, и в момент замера он почти простаивал.

iostat показывает, сколько диск делает, но не показывает, как долго он отвечает. Во время тормозов из-за BX500 у меня было 5–9 МБ/с при паре десятков операций в секунду. Цифры выглядели скромно и не пугали, хотя Mac почти не отвечал. Настоящую причину показала следующая команда.

fs_usage: сколько ждёт каждая операция

Терминал
sudo fs_usage -w -f diskio
  • -w — широкий вывод, без обрезки колонок;
  • -f diskio — только операции с диском.

Остановить поток строк — ⌃ Control + C. Можно следить за одним процессом, дописав его имя или PID в конец: sudo fs_usage -w -f diskio mds_stores.

Вот что fs_usage показывал на моём iMac утром, когда он еле отвечал:

Вывод на моём iMac во время тормозов
WrMeta[AP]   D=0x0008b6d9  B=0x1000   /dev/disk1   0.327340 W kernel_task
WrMeta[AP]   D=0x0008b767  B=0x1000   /dev/disk1   0.327336 W kernel_task
PgIn[AT3U]   D=0x01ad9cc8  B=0x20000  /dev/disk1s1 0.529323 W mds_stores

И вечером того же дня, когда всё снова работало:

Вывод на моём iMac в норме
WrMeta[AP]   D=0x00007669  B=0x2000   /dev/disk1   0.000100 W kernel_task
WrMeta[AP]   D=0x0000767d  B=0x4000   /dev/disk1   0.000187 W kernel_task
  • первая колонка — тип операции: WrMeta — запись служебных данных файловой системы, PgIn — чтение страницы с диска;
  • B=0x1000 — размер в байтах в шестнадцатеричной записи: 0x1000 = 4 КБ;
  • предпоследнее число — сколько секунд операция ждала диск;
  • в конце — процесс, который обращался к диску.

Запись 4 КБ за 0,33 секунды вместо 0,0001 — разница больше чем в тысячу раз. Для SSD нормальные значения — десятитысячные и тысячные доли секунды. Если вы видите десятые, проблема в диске, а не в программах.

TRIM и SMART

Подключение SATA-диска, поддержку TRIM и общий статус SMART показывает system_profiler:

Терминал
system_profiler SPSerialATADataType | grep -E 'Model|TRIM|S.M.A.R.T|Link Speed'
Вывод на моём iMac
      Link Speed: 6 Gigabit
      Negotiated Link Speed: 6 Gigabit
          Model: CT240BX500SSD1
          TRIM Support: Yes
          S.M.A.R.T. status: Verified
  • Negotiated Link Speed: 6 Gigabit — диск работает на полной скорости SATA III. Значение 1,5 или 3 Gigabit — повод проверить шлейф;
  • TRIM Support: Yes — TRIM включён. На сторонних SSD macOS сама его не включает, нужна команда sudo trimforce enable. Подробности — в статье про TRIM и сброс NVRAM;
  • S.M.A.R.T. status: Verified — диск не сообщает о сбое.

У NVMe-дисков, в том числе встроенных в Mac с Apple Silicon, раздел называется SPNVMeDataType. Короткую сводку о системном томе даёт diskutil:

Терминал
diskutil info / | grep -E 'Device Node|File System|Solid State|SMART'
Вывод на моём iMac
   Device Node:               /dev/disk1s4s1
   File System Personality:   APFS
   SMART Status:              Verified
   Solid State:               Yes

Verified значит только «диск жив». Износ, ошибки и скрытую запись показывает smartctl из пакета smartmontools. Я ставлю его через Homebrew (подробно о нём — в статье Homebrew на Mac):

Терминал
brew install smartmontools
sudo smartctl -a disk0

На Mac с Intel Homebrew живёт в /usr/local, на Apple Silicon — в /opt/homebrew. Если после установки smartctl не находится, на Apple Silicon проверьте, что в ~/.zprofile есть строка eval "$(/opt/homebrew/bin/brew shellenv)". На Intel Homebrew больше не выпускает готовые пакеты, так что smartmontools соберётся из исходников. Это займёт несколько минут.

Что смотреть в выводе smartctl на моём BX500:

ПоказательЗначение у меняЧто значит
Percent_Lifetime_Remain90 %остаток ресурса
Reallocate_NAND_Blk_Cnt0переназначенных блоков нет
Reported_Uncorrect0неисправимых ошибок чтения нет
UDMA_CRC_Error_Count0шлейф и разъём в порядке
Unexpect_Power_Loss_Ct38внезапные отключения питания
Temperature_Celsius51 °Cнорма

Названия строк у разных производителей отличаются. Главное правило: счётчики ошибок и переназначенных блоков должны быть нулевыми или хотя бы не расти.

Сон и питание

pmset -g: текущие настройки и кто мешает сну

Терминал
pmset -g
Вывод на моём iMac
System-wide power settings:
Currently in use:
 standby              1
 womp                 0
 powernap             0
 sleep                1 (sleep prevented by sharingd, Claude)
 hibernatemode        3
 disksleep            0
 ttyskeepawake        1
 displaysleep         180
 tcpkeepalive         1
  • sleep 1 — через сколько минут простоя засыпает система. Ноль — никогда;
  • displaysleep 180 — через сколько минут гаснет экран;
  • disksleep 0 — диск не останавливается (для SSD это и не нужно);
  • powernap 0 — Power Nap выключен, во сне Mac не проверяет почту и не синхронизирует iCloud;
  • womp 0 — пробуждение по сети выключено;
  • ttyskeepawake 1 — пока открыт удалённый сеанс, например по SSH, Mac не уснёт.

Самое интересное — в скобках: sleep prevented by sharingd, Claude. Mac должен уснуть через минуту, но два процесса это запретили. sharingd — служба общего доступа: AirDrop, Handoff, общий буфер обмена. Claude — приложение, которое было открыто и работало. Как только они снимут запрет, Mac уснёт по расписанию.

pmset -g assertions: подробности о запретах

Каждый такой запрет в macOS называется assertion. Список с причинами показывает команда:

Терминал
pmset -g assertions
Пример вывода
Assertion status system-wide:
   PreventUserIdleDisplaySleep    0
   PreventSystemSleep             0
   PreventUserIdleSystemSleep     1
   ExternalMedia                  0
   UserIsActive                   1
Listed by owning process:
   pid 412(sharingd): [0x…] 00:12:31 PreventUserIdleSystemSleep named: "…"
   pid 2210(Claude): [0x…] 01:05:10 PreventUserIdleSystemSleep named: "…"
  • PreventUserIdleSystemSleep 1 — кто-то не даёт системе уснуть от простоя;
  • PreventUserIdleDisplaySleep 1 — кто-то не даёт погаснуть экрану. Так обычно делают видеоплееры и программы для созвонов;
  • в разделе Listed by owning process — PID и имя процесса, сколько длится запрет и его описание.

Если Mac не засыпает, найдите здесь процесс-нарушитель и закройте его. Свои запреты можно ставить и вручную: команда caffeinate -i не даёт Mac уснуть, пока работает. Выход — ⌃ Control + C.

pmset -g log: когда засыпал, просыпался и выключался

pmset -g log — журнал всех событий питания. Он длинный, поэтому фильтруйте:

Терминал
pmset -g log | grep -E 'Sleep  |Wake  |Shutdown' | tail -n 8
Вывод на моём iMac
2026-10-12 12:25:02 +0300 ShutdownCause  SMC shutdown cause: 5: Software initiated shutdown
2026-10-12 16:16:45 +0300 ShutdownCause  SMC shutdown cause: 5: Software initiated shutdown
2026-10-12 20:15:59 +0300 Sleep          Entering Sleep state due to 'Idle Sleep':TCPKeepAlive=active Using AC (Charge:0%) 605 secs
2026-10-12 20:26:04 +0300 Wake           Wake from Normal Sleep [CDNVA] : due to XHC2 XHC1/HID Activity Using AC (Charge:0%)
   PreventUserIdleSystemSleep     1
  • ShutdownCause … 5: Software initiated shutdown — Mac выключили программно: через меню Apple или командой. Это штатное завершение работы. Если Mac выключается сам, первым делом смотрите сюда: код, отличный от 5, — повод разбираться с питанием или перегревом;
  • Entering Sleep state due to 'Idle Sleep' — уснул от простоя, а 605 secs — сколько длился сон: с 20:15:59 до 20:26:04, ровно 10 минут 5 секунд;
  • Wake … due to XHC2 XHC1/HID Activity — разбудило устройство ввода через USB (XHC — контроллер USB, HID — мышь или клавиатура). Если Mac просыпается сам по ночам, именно эта причина подскажет, кто будит;
  • Charge:0% — у настольного iMac нет батареи, на это не обращайте внимания;
  • последняя строка — сводка запретов из журнала: тот же PreventUserIdleSystemSleep.

Чтобы посмотреть только причины пробуждений, используйте pmset -g log | grep 'Wake from'.

Системный журнал

В macOS вместо текстовых логов — единый журнал, похожий на journald в Linux (о нём есть статья systemd и journalctl). Читается он командой log.

log show: ошибки за последний час

Терминал
log show --last 1h --predicate 'messageType == error' --style compact | tail -n 8
  • --last 1h — за последний час (можно 30m, 2d);
  • --predicate 'messageType == error' — только ошибки;
  • --style compact — короткий формат строк.
Вывод на моём iMac
2026-10-12 22:04:31.758 E  ContinuityCaptureAgent[358:312e8] [com.apple.CMContinuityCapture:default] CMContinuityCaptureUserOnboarding No valid device to onboard
2026-10-12 22:04:32.068 E  ContextStoreAgent[421:31423] (CoreDuet) Simulating crash. Reason: <private>
2026-10-12 22:04:34.662 E  kernel[0:31423] [com.apple.sandbox.reporting:violation] 1 duplicate report for System Policy: du(4052) deny(1) file-read-data /Users/nixlife/.Trash
2026-10-12 22:04:35.054 E  ContinuityCaptureAgent[358:312e8] [com.apple.CMContinuityCapture:device] Missing CMContinuityCaptureCapabilitiesKey_Devices

Слова «crash» и «violation» пугают, но всё это безобидно:

  • ContinuityCaptureAgent … No valid device to onboard — служба «Камеры Continuity» не нашла iPhone, который можно использовать как веб-камеру;
  • ContextStoreAgent … Simulating crash — служба CoreDuet записала диагностику для Apple, сама программа при этом не упала;
  • sandbox … du deny file-read-data /Users/nixlife/.Trash — это моя же команда du пыталась заглянуть в Корзину. У Терминала не было «Полного доступа к диску», и система отказала. Такие строки появляются, когда команда упирается в защиту приватности macOS.

Ещё несколько полезных фильтров:

Терминал
# Сообщения ядра за 10 минут
log show --last 10m --predicate 'process == "kernel"'

# Всё от одного процесса
log show --last 1h --predicate 'process == "sharingd"' --style compact

log stream: журнал в реальном времени

Терминал
log stream --predicate 'messageType == error' --style compact

Запустите, воспроизведите проблему и посмотрите, что появится в эти секунды. Остановить — ⌃ Control + C.

Отчёты о сбоях

Когда программа падает, macOS сохраняет отчёт в файл .ips. Пользовательские отчёты лежат в ~/Library/Logs/DiagnosticReports, системные — в /Library/Logs/DiagnosticReports:

Терминал
ls -lt ~/Library/Logs/DiagnosticReports | head -n 10
Вывод на моём iMac (сокращён)
com.apple.SafariPlatformSupport.Helper-2026-10-07-133909.ips
MTLCompilerService-2026-10-07-195650.ips
Retired

В имени файла — процесс и время сбоя. В папке Retired система хранит старые отчёты, которые уже обработала. Если одно и то же имя повторяется каждый день, проблема именно в этой программе: обновите или переустановите её.

Файл .ips — текст в формате JSON. Удобнее всего открыть его в программе «Консоль» с разделом «Отчёты о сбоях»:

Терминал
open -a Console ~/Library/Logs/DiagnosticReports/MTLCompilerService-2026-10-07-195650.ips

Отчёты о панике ядра, после которых Mac перезагружается сам, лежат в /Library/Logs/DiagnosticReports, и в их имени есть слово panic.

sysdiagnose: полный отчёт для поддержки

Если причину найти не удалось и вы собираетесь обращаться в поддержку Apple или к мастеру, соберите полный диагностический архив:

Терминал
sudo sysdiagnose

Сбор занимает несколько минут, в конце команда покажет путь к архиву .tar.gz (обычно в /var/tmp). То же самое запускает сочетание ⇧ Shift + ⌃ Control + ⌥ Option + ⌘ Command + .. В архив попадают журналы, настройки и список процессов, поэтому отправляйте его только тем, кому доверяете.

Симптом → что запустить

СимптомКомандаНа что смотреть
Тормозит всё, шумит вентиляторtop -l 2 -n 10 -o cpu -stats pid,command,cpu,memпроцесс с высоким %CPU во втором замере
Сначала быстро, потом вялоpmset -g thermCPU_Speed_Limit меньше 100
Горячий корпусsudo powermetrics --samplers smc -n 1CPU die temperature, Fan
Программы долго переключаютсяmemory_pressure, sysctl vm.swapusageпроцент свободной памяти, рост Pageouts и подкачки
Тормозит даже курсор и набор текстаsudo fs_usage -w -f diskioзадержки в десятые доли секунды
Mac со сторонним SSD тормозитsystem_profiler SPSerialATADataTypeTRIM Support, Link Speed
Подозрение на износ дискаsudo smartctl -a disk0ошибки, переназначенные блоки, ресурс
Не засыпаетpmset -g, pmset -g assertionssleep prevented by …, Listed by owning process
Просыпается самpmset -g log | grep 'Wake from'причина после due to
Выключается самpmset -g log | grep ShutdownCauseкод, отличный от 5
Падает программаls -lt ~/Library/Logs/DiagnosticReportsповторяющиеся имена .ips
Непонятно, что происходитlog stream --predicate 'messageType == error'ошибки в момент проблемы

Шпаргалка команд

КомандаЧто делает
uptimeвремя работы и load average
sysctl -n hw.ncpuчисло логических процессоров
ps aux | sort -nrk 3,3 | headпроцессы по загрузке процессора
pmset -g thermограничение частоты из-за температуры
memory_pressureдавление на память
vm_statраспределение памяти по страницам
sysctl vm.swapusage hw.memsizeподкачка и объём памяти
df -h /System/Volumes/Dataсвободное место
iostat -d -w 1нагрузка на диски каждую секунду
diskutil info /файловая система, SSD, статус SMART
mdutil -s /статус индексации Spotlight
pmset -gнастройки сна и питания
caffeinate -iвременно запретить сон
log show --last 1hсистемный журнал за час
sudo sysdiagnoseполный архив для поддержки

Частые ошибки

  • Верить нулям в top -l 1. С одним замером процент загрузки не считается. Нужно -l 2 и второй блок.
  • Пугаться load average больше 1. На Mac с 8 или 12 потоками нагрузка 2–3 — это легко. Сравнивайте с hw.ncpu.
  • Считать, что «вся память занята» — плохо. macOS специально заполняет её кэшем. Смотрите на memory_pressure и подкачку.
  • Смотреть df -h / вместо тома с данными. Системный том почти пустой и не меняется, место заканчивается на /System/Volumes/Data.
  • Считать Verified гарантией здоровья диска. Это только «диск не сообщает о сбое». Подробности — в smartctl.
  • Искать причину в каждой ошибке журнала. Важны только ошибки, совпадающие по времени с проблемой.
  • Ставить kill -9 на всё подряд. Сначала обычный kill: он даёт программе сохранить данные.

Mac тормозит: 7 шагов

Частые вопросы

Почему в top у всех процессов 0 % загрузки?

Вы запустили top -l 1. Процент загрузки — разница между двумя замерами, поэтому в первом он всегда нулевой. Используйте top -l 2 и смотрите на второй блок.

Какой load average нормальный для Mac?

Всё, что меньше числа логических процессоров, которое показывает sysctl -n hw.ncpu. Для 12 потоков нагрузка 2,5 — это около 20 % возможностей.

Как проверить, что Mac сбрасывает частоту из-за перегрева?

Командой pmset -g therm. Если CPU_Speed_Limit меньше 100, процессор работает медленнее из-за температуры. Саму температуру на Intel показывает sudo powermetrics --samplers smc -n 1.

Почему vm_stat показывает мало свободной памяти, хотя Mac не тормозит?

macOS держит в памяти кэш и освобождает его по требованию. Смотрите на memory_pressure: пока доступно больше 50 %, а подкачка не растёт, памяти хватает.

Как узнать, кто не даёт Mac уснуть?

Командой pmset -g — виновники перечислены в скобках после строки sleep. Подробный список с PID и причинами показывает pmset -g assertions.

Почему Mac просыпается сам по себе?

Посмотрите pmset -g log | grep 'Wake from'. Причина пишется после due to: например, HID Activity — мышь или клавиатура, а XHC — устройство на шине USB.

Ошибки в log show — это проблема?

Обычно нет. macOS пишет в журнал множество служебных ошибок, даже когда всё работает. Важны ошибки, которые совпадают по времени с проблемой или повторяются у одного процесса.

Где найти отчёты о сбоях программ?

В ~/Library/Logs/DiagnosticReports и /Library/Logs/DiagnosticReports, файлы с расширением .ips. Удобнее всего открыть их в программе «Консоль».

Статья помогла?

Комментарии

Пока никто не написал. Будьте первым — вопрос или свой опыт одинаково полезны.

Комментарий появится после проверки. Ссылки и реклама не публикуются.