Antigravity 帮助修复 macOS 中 dasd 进程 CPU 占用高的 Bug

2026-09-08

今天,我的 Mac(运行最新的 macOS 27.0 beta8)开始变得迟钝,打开活动监视器一查,一个名叫 dasd 的系统进程死死吃满了 90%~120% 的单核 CPU。我搜索了一下,没有找到合适的答案。使用 Google antigravity 一路追踪,结果抓到了一个令人哭笑不得的**“苹果工程师写出跨时区死循环”**的大瓜。


不想读太多的直接用这行命令:

defaults write com.apple.appstored ArcadePayoutResetDate \
  -date "$(date -v+3d -u +"%Y-%m-%dT%H:%M:%SZ")" && \
  killall appstoreagent

以下是 google antigravity 的解决过程

结论与当前状态 (BLUF)

dasd 持续占用 90%~99% CPU 并非正常的系统开机维护任务,而是 appstoreagent(App Store 后台服务)陷入了极高频的任务调度死循环

该问题已经定位并已完成修复dasd 的 CPU 占用已从 98.1% 降至 0.0%,系统恢复正常,无需重启电脑。


根本原因分析

通过抓取系统统一日志(Unified Logging System)与进程调用链路,发现了确凿的死循环证据:

  1. 死循环任务com.apple.appstored.ArcadeResetPO(Apple Arcade 收益指标重置任务)。
  2. 逻辑缺陷
    • 当前时间为下午,但 com.apple.appstored 偏好设置中的 ArcadePayoutResetDate 被固定在今天凌晨:2026-09-06 00:00:00 +0800(过去的时间)。
    • appstoreagent 执行完重置后,未将其递增到下一个周期(次日),而是继续使用已经过期的 2026-09-06 00:00:00 作为新执行时间重新注册。
    • dasd(Duet Activity Scheduler)收到调度请求后,发现预定时间早于当前系统时间,判定为超时,立刻下发调度(Running immediately on submission)。
    • 结果:每秒触发超过 400 次调度与进程通信,导致 dasd 持续跑满单核 CPU。

现场日志证据

appstoreagent: [ArcadePayoutReset] Payout metrics reset with current payout reset time: 2026-09-06 00:00:00+0800
appstoreagent: [ArcadePayoutReset] Reset with reason: Rescheduling
appstoreagent: [ArcadePayoutReset] Using new date: 2026-09-06 00:00:00+0800 with reason: Rescheduling
appstoreagent: [ArcadePayoutReset] Activity not scheduled; submitting request
dasd:          SUBMITTING: 501:com.apple.appstored.ArcadeResetPO
dasd:          Running immediately on submission
dasd:          REQUESTING START: 501:com.apple.appstored.ArcadeResetPO

采取的解决措施与验证

已通过将偏好项中的调度时间推进至次日,并平滑重启 appstoreagent 打破该死循环:

  1. 执行命令defaults write com.apple.appstored ArcadePayoutResetDate -date "2026-09-06T16:00:00Z" killall appstoreagent
  2. 验证结果
    • top / ps 监测确认:dasd(PID 404)CPU 占用立即降至 0.0%
    • appstoreagent 重新启动后正常挂起,不再以 400+ 次/秒的频率刷屏日志。

经过 google antigravity 一顿操作,CPU 占用下来了。

©2026ye-yu.com 版权所有。