Сразу предупрежу: дальше будем через Terminal удалять системный файл, в который прямо сейчас идёт запись. Так что случиться может всякое. Сделайте бэкап Mac перед началом.
Пробую все классические методы - без толку
Сначала попробовал убить процесс dasd через Activity Monitor. Ноль эффекта. Перезагрузился - тоже ничего, dasd как ни в чём не бывало продолжал жрать 100% CPU даже после рестарта. Странно! Дальше загрузился в Safe Mode - и там та же картина, dasd продолжал нагружать процессор. Перезагрузился ещё раз, покопался в диагностике, погонял туда-сюда Console, sample и tail, потом скормил всё это ChatGPT для разбора - и в итоге пришёл к такому решению.
Находим базу данных, связанную с зависшим dasd
Та самая база, с которой dasd, судя по всему, взаимодействует в каком-то ошибочном зацикленном режиме, лежит по такому системному пути:
/private/var/db/powerlog/Library/PerfPowerTelemetry/BackgroundProcessing/CurrentBackgroundProcessingDB.BGSQL
Я сделал бэкап этой базы, удалил её, перезагрузил Mac - и проблема наконец ушла, dasd вернулся к ожидаемым 0% CPU.
Бэкапим Mac и сам файл базы
Если у вас есть Time Machine и вы им пользуетесь, этого скорее всего хватит, и перед продолжением точно стоит сделать бэкап через Time Machine. Отдельно, если вы такой же параноик, как я, и хотите ещё и прямой бэкап файла на тот же диск (на всякий случай!), вот как это сделать.
В Terminal скопируйте или введите такую команду - она создаст на рабочем столе папку "PowerLog-Backup" с копией базы PowerLog и выставит права на текущего пользователя:
sudo mkdir -p ~/Desktop/PowerLog-Backup | sudo cp -p /private/var/db/powerlog/Library/PerfPowerTelemetry/BackgroundProcessing/CurrentBackgroundProcessingDB.BGSQL* ~/Desktop/PowerLog-Backup/ | sudo chown -R "$(id -un)" ~/Desktop/PowerLog-Backup
Если удобнее разбить на три отдельные команды, можно так:
sudo mkdir -p ~/Desktop/PowerLog-Backup
sudo cp -p /private/var/db/powerlog/Library/PerfPowerTelemetry/BackgroundProcessing/CurrentBackgroundProcessingDB.BGSQL* ~/Desktop/PowerLog-Backup/
sudo chown -R "$(id -un)" ~/Desktop/PowerLog-Backup
Аккуратно удаляем базу PowerLog
Теперь сбрасываем базу PowerLog. Это удаление системного файла, так что если вам такое не по душе или полного бэкапа данных нет - не вводите эту команду. Вводить нужно точно, иначе случайно снесёте не тот системный файл и получите проблему покрупнее:
sudo rm \
/private/var/db/powerlog/Library/PerfPowerTelemetry/BackgroundProcessing/CurrentBackgroundProcessingDB.BGSQL \
/private/var/db/powerlog/Library/PerfPowerTelemetry/BackgroundProcessing/CurrentBackgroundProcessingDB.BGSQL-wal \
/private/var/db/powerlog/Library/PerfPowerTelemetry/BackgroundProcessing/CurrentBackgroundProcessingDB.BGSQL-shm
Выполняйте с правами root.
Сразу перезагружаем Mac, ждём пару минут и снова смотрим CPU
Дальше сразу перезагружаем Mac - через меню Apple или из Terminal:
sudo reboot
После перезагрузки гляньте на загрузку CPU, когда система устаканится, и ещё раз минут через 10. Если открыть Activity Monitor или вернуться в командную строку с:
ps -axo pid,%cpu,etime,command | grep '[d]asd'
то увидите, что CPU у dasd снова 0% или какая-то минимальная ерунда.
-
Вот эти шаги мне и помогли победить постоянную высокую загрузку CPU от dasd на Mac с MacOS 27.0.1 - после того как процесс несколько дней подряд держал 90-100% CPU.
Случай не массовый, но проблемы с dasd и лишней нагрузкой на CPU и память бывают
Насколько это распространено - непонятно. Может, страдает больше народу, просто люди не ищут процесс dasd в Activity Monitor или вообще не знают, что туда надо смотреть, хотя батарея садится быстрее обычного и Mac ощутимо тёплый на ощупь. Причина тоже неизвестна.
Если погуглить эту тему, можно найти жалобы других пользователей Mac на проблемы с dasd в MacOS 27 - так что, возможно, это баг, который починят в одном из будущих обновлений MacOS.
Обсуждали это на Reddit, форумах MacRumors (2) и на форумах Apple. Там же найдёте решения, которые мне не помогли: кто-то постоянно убивает процесс, кто-то выгружает его через launchctl, App Store или Apple Arcade - но в моём случае ничего из этого с бешеным dasd связано не было.
Есть и другие варианты этой проблемы: у некоторых dasd не жрёт 100% CPU, а пожирает неприлично много RAM или плодит огромные лог-файлы.
Что именно вызывает сбой в dasd, до конца не ясно. Метод тыка и отладка привели меня к базе телеметрии PowerLog, но это вполне может быть лишь следствием чего-то другого. Если столкнётесь с этой проблемой (или похожей) и найдёте другое решение - или воспользуетесь этим и оно сработает - расскажите в комментариях.