没用 Apple Arcade,却查出了 1.12 亿条 Apple Arcade 后台记录,占用 macOS 6GB 空间

只有在磁盘不够用的时候,才会去查一下。

很离谱,这个文件占据了 6.38GB 的空间,还是 DaisyDisk 帮我查出来的(上次帮我找出来 269.4GB 的垃圾文件):

然后我就放 AI 去查到底发生了什么。


这个文件位于:

/private/var/db/powerlog/Library/PerfPowerTelemetry/BackgroundProcessing/CurrentBackgroundProcessingDB.BGSQL

它属于 macOS 自己的 PerfPowerTelemetry 系统,用来记录性能、功耗以及后台任务相关的遥测数据。

看谁在使用它:

sudo lsof \
/private/var/db/powerlog/Library/PerfPowerTelemetry/BackgroundProcessing/CurrentBackgroundProcessingDB.BGSQL

结果是:

COMMAND     PID USER   FD
dasd        395 root    7r
PerfPower 19463 root   12u

这里的 dasd 是 macOS 的后台任务调度服务,PerfPower 则负责性能和功耗数据记录。

也就是说,这个接近 6GB 的文件是 macOS 自己维护的后台任务遥测数据库。

继续查,找到了真正异常的任务:

com.apple.appstored.ArcadeResetPO

这是 Apple Arcade 有关的一个后台任务。

[!危险]但是,我没有订阅 Apple Arcade。

6GB 里到底装了什么?

这个 .BGSQL 数据库实际上可以直接使用 SQLite 查询。

sudo sqlite3 \
/private/var/db/powerlog/Library/PerfPowerTelemetry/BackgroundProcessing/CurrentBackgroundProcessingDB.BGSQL \
'.tables'

里面有几十张和后台任务有关的数据表:

BackgroundProcessing_TaskCheckpoint_24_5
BackgroundProcessing_TaskInstanceData_24_5
BackgroundProcessing_TaskMetadata_24_5
BackgroundProcessing_TaskBlockingPolicies_24_5
BackgroundProcessing_TaskThroughput_24_5
...

然后统计每张表实际占了多少空间

BackgroundProcessing_TaskCheckpoint_24_5     3516 MB
BackgroundProcessing_TaskInstanceData_24_5   2556 MB

其他表几乎可以忽略。

2253 万个任务,1.12 亿条状态记录

继续数一下到底有多少条:

SELECT COUNT(*)
FROM BackgroundProcessing_TaskInstanceData_24_5;

结果:

22,539,506

再数 TaskCheckpoint:

SELECT COUNT(*)
FROM BackgroundProcessing_TaskCheckpoint_24_5;

结果:

112,401,952

也就是说,这个系统数据库里有:

2253 万个后台任务实例
1.12 亿条任务状态记录

这显然不正常。

一个 TaskID,占了 99%

TaskInstanceData 里面有 ProcessName 和 TaskID。

先按进程统计:

SELECT
    ProcessName,
    COUNT(*) AS cnt
FROM BackgroundProcessing_TaskInstanceData_24_5
GROUP BY ProcessName
ORDER BY cnt DESC
LIMIT 30;

结果第一名有点奇怪:

ProcessName                    cnt
---------------------------  --------
                             22464148
contactsd                       36525
spotlightknowledged.updater      6655
appstoreagent                    4453
BiomeAgent                       4400
...

超过 2246 万条记录,ProcessName 是空的。

既然进程名看不出来,就继续按 TaskID 查:

SELECT
    TaskID,
    ProcessName,
    COUNT(*) AS cnt
FROM BackgroundProcessing_TaskInstanceData_24_5
GROUP BY TaskID, ProcessName
ORDER BY cnt DESC
LIMIT 30;

结果第一名非常夸张:

TaskID                  cnt
--------------------  --------
-6985415852000799361  22383668

一个 TaskID,就贡献了:

22,383,668

条记录。

占整个 TaskInstanceData 的大约 99%。

到这里基本已经可以确定:

问题就在这个任务。

顺着 TaskID,找到了 Apple Arcade

继续拿这个 TaskID 去查任务 Metadata:

TaskID:
-6985415852000799361

Name:
501:com.apple.appstored.ArcadeResetPO

终于出现了一个明确的名字:

com.apple.appstored.ArcadeResetPO

这是 App Store 体系里和 Apple Arcade 有关的后台任务。

但这里马上又出现了一个新问题:

[!问题]我根本没有用 Apple Arcade。!

继续查 App Store 的本地配置:

defaults read com.apple.appstored | grep -i -A2 -B2 Arcade

结果里面明确写着:

ArcadeSubscriptionState = Unsubscribed;

我真没订阅 Apple Arcade。

但与此同时,macOS 依然保存着:

ArcadeDeviceID
ArcadePayoutDeviceID
ArcadePayoutIntervalStartDate
ArcadePayoutResetDate
ArcadeSummaryIntervalStartDate

这些 Apple Arcade 相关状态。

两天,创建了 2238 万个任务

继续按日期统计这个 ArcadeResetPO:

SELECT
    date(timestamp, "unixepoch", "localtime") AS day,
    COUNT(*) AS cnt
FROM BackgroundProcessing_TaskInstanceData_24_5
WHERE TaskID = -6985415852000799361
GROUP BY day
ORDER BY day;

结果只有两天:

2026-09-20  10740336
2026-09-27  11643332

两次加起来:

22,383,668

更加巧合的是:

这两次正好相隔 7 天,都是周日

这已经很像一个周期性后台任务,在某个执行节点出现异常。

2238 万个任务,又留下了 1.12 亿条状态

接下来再看这些任务产生的 Checkpoint。

SELECT
    CheckpointState,
    COUNT(*) AS cnt
FROM BackgroundProcessing_TaskCheckpoint_24_5
WHERE TaskID = -6985415852000799361
GROUP BY CheckpointState
ORDER BY cnt DESC;

结果:

CheckpointState    cnt
---------------  --------
15               22383701
10               22383701
16               22383700
30               22383658
20               22383637
42                      4
45                      1

前五种状态,每一种都是大约:

2238 万条

大约 2238 万个 ArcadeResetPO 任务实例,每个实例又留下了大约 5 个状态记录。

于是:

2238 万 × 5 ≈ 1.12 亿

这就是那个 6GB 数据库的来源。

其他人也遇到了同一个问题

查到:

com.apple.appstored.ArcadeResetPO

之后,我又找到了一个几乎一模一样的案例,对方最开始遇到的现象和我不太一样。

他是发现:

dasd

长期占用很高的 CPU。

但一路排查之后,最后同样找到了:

com.apple.appstored.ArcadeResetPO

对方进一步追踪发现,问题和一个字段有关:

ArcadePayoutResetDate

正常情况下,这个 Arcade 相关任务执行完成以后,下一次运行时间应该被推进到未来。

但出问题时,这个时间仍然停留在过去。

于是后台调度会形成类似这样的循环:

appstoreagent
    ↓
提交 ArcadeResetPO
    ↓
dasd 发现计划时间已经过去
    ↓
立即执行
    ↓
任务完成
    ↓
再次提交
    ↓
计划时间依然已经过去
    ↓
再次立即执行

如此反复、死循环。

如何解决

移动文件,重启。

BGDIR="/private/var/db/powerlog/Library/PerfPowerTelemetry/BackgroundProcessing"
BACKUP="$BGDIR/backup-$(date +%Y%m%d-%H%M%S)"

sudo mkdir -p "$BACKUP"

sudo mv "$BGDIR/CurrentBackgroundProcessingDB.BGSQL" \
        "$BGDIR/CurrentBackgroundProcessingDB.BGSQL-wal" \
        "$BGDIR/CurrentBackgroundProcessingDB.BGSQL-shm" \
        "$BACKUP/"

sudo reboot

重启之后,没什么异常,查询文件也正常了:

-rw-r--r--  1 root  wheel   4.0K Sep 30 22:36 CurrentBackgroundProcessingDB.BGSQL
-rw-r--r--  1 root  wheel    32K Sep 30 22:36 CurrentBackgroundProcessingDB.BGSQL-shm
-rw-r--r--  1 root  wheel   2.4M Sep 30 22:38 CurrentBackgroundProcessingDB.BGSQL-wal

把备份文件删掉就好了

sudo rm -rf /private/var/db/powerlog/Library/PerfPowerTelemetry/BackgroundProcessing/backup-20260930-221535

最后,一顿删除猛于虎,一看空间多了6G

2 个赞

看了眼我的,只有36M,失望而归

2 个赞

m1 macmini里占用1.9g
新买的maxstudio里9.1M

好ai的文

1.9G 可以清理一下了

第二天了,应该是没问题了

-rw-r--r--  1 root  wheel   2.0M Oct  1 09:48 /private/var/db/powerlog/Library/PerfPowerTelemetry/BackgroundProcessing/CurrentBackgroundProcessingDB.BGSQL

查了下电脑,也有1G,就扔给 ds 查了下。

下面是 ds 的回复(也可能 ai 会乱说,但我不懂这些技术问题,所以只复制粘贴部分内容):

这篇帖子跟我昨天查的是同一个 bug,同一个 TaskID。先把本地证据和那篇参考案例一起补齐。
同一个 bug,连 TaskID 都一样。有个更要紧的发现——本机的定时炸弹还在倒计时。让我把证据和配置归属确认清楚。
是同一件事,而且是同一台"凶手"。对照如下:

论坛帖(青小蛙) 你这台 MacBook Air
任务名 com.apple.appstored.ArcadeResetPO 完全相同
TaskID -6985415852000799361 完全相同
爆发日期 2026-09-20、09-27 完全相同
Checkpoint 状态签名 10/15/16/20/30 各约 N 条 + 少量 42/45 完全相同
库体积 6.38 GB 945 MB
任务实例 2238 万 338 万

差的只是量级(约 1/6.6),因为你这台循环跑得短一些。根因也一样:appstoreagent 执行完 ArcadeResetPO 后没把 ArcadePayoutResetDate 推进到未来,dasd 看到"计划时间已过"就立即重跑,循环起来。

两个原帖没说的关键数据

我把本机的循环时长度出来了,这事的实际代价比"占 943 MB"严重得多:

爆发日 起 止 持续 条数 峰值速率
09-20 00:00:02 15:01:59 15.0 小时 9,088,760 41,343 条/分钟 ≈ 690 条/秒
09-27 00:00:00 14:59:40 15.0 小时 7,832,052 同上

两次都是本地时间 00:00:00 整点起爆,连烧 15 小时。这期间 dasd 基本占满一个核心——你 9/20 和 9/27 那两天的电池、发热、风扇,很可能就是它。

更要紧的:倒计时还在走

$ defaults read com.apple.appstored ArcadePayoutResetDate
2026-10-03 16:00:00 +0000        →  2026-10-04 00:00:00 CST (Sunday)

下一次触发是 10 月 4 日(周日)凌晨 0 点,也就是 3 天后。 现在这个值正确地落在未来,说明调度器已经重新上膛——如果什么都不做,周日半夜大概率再来一次 15 小时、再涨一个 GB。

好消息:这个键存在用户域 plist(~/Library/Preferences/com.apple.appstored.plist,owner 是你),改它不需要 sudo。

建议的操作顺序

两篇帖子各给了一半:appinn 那篇解决"已经撑大的库",ye-yu 那篇(论坛帖里引用的参考案例)给的是"立刻止血"的根因补丁。合起来才是完整方案,而且我建议把顺序倒过来——先拆雷,再清库:

。。。。。。

最后一句诚实话:Step 0 是按住,不是治好。 根治得等 Apple 修 appstored。所以 10/4 那次复查不能省——我上面所有判断都建立在"推迟日期能改变触发时刻"这个假设上,只有 10/4 的真实数据能证伪它。

1 个赞

哎呀,还能有相同的问题?离谱了啊,这两个周末发生了什么?本周还会不会发生

用AI检查了下,也有同样的问题,不过我确实订阅了Apple Arcade。

处理后降到了4KB,感谢楼主为我256GB可怜的MacBook Air清理出一点空间(笑


帖子内容已了解:这是 macOS 的 PerfPowerTelemetry 后台任务遥测数据库(CurrentBackgroundProcessingDB.BGSQL)因 Apple Arcade 的 ArcadeResetPO 后台任务异常死循环而暴涨到几个 GB 的问题。现在来检查你的电脑。

:clipboard: 检查计划:

  1. 查看该数据库文件的实际大小 — 复杂度:低
  2. 若体积异常,用 SQLite 查询确认是否为 ArcadeResetPO 任务 — 复杂度:低
  3. 检查 dasd 进程 CPU 占用情况 — 复杂度:低
    发现问题了:CurrentBackgroundProcessingDB.BGSQL 已达 2.9GB(正常状态应只有几 KB~几 MB),和帖子里描述的一样异常。继续确认罪魁祸首是否为 Arcade 任务:
    sudo 被沙箱拦截,不过该文件是全局可读的(rw-r--r--),直接用 sqlite3 查询:
    数据库可读。现在执行关键查询,统计记录数和找出异常任务:
    日期分布全部落在周日、间隔 7 天 —— 与帖子描述的死循环周期完全吻合。最后确认该 TaskID 的任务名称:
    实锤了。再快速看一眼 dasd 进程当前的 CPU 状态,判断死循环是否仍在活跃:
    :white_check_mark: 检查完成。你的电脑确认存在帖子中描述的同一个问题,证据链完整:

检查结果

1. 数据库体积异常
/private/var/db/powerlog/Library/PerfPowerTelemetry/BackgroundProcessing/CurrentBackgroundProcessingDB.BGSQL 当前为 2.9GB(正常状态应只有几 KB,WAL 几 MB),帖子作者是 6.38GB。

2. 罪魁祸首是同一个任务

  • TaskInstanceData 表共 1109 万条记录,TaskCheckpoint 表共 5549 万条记录
  • 其中 TaskID -6985415852000799361(即 501:com.apple.appstored.ArcadeResetPO)独占 1102 万条(99.4%)——与帖子中的 TaskID 一字不差

3. 死循环周期完全吻合
该任务的爆发日期为 09-06 / 09-13 / 09-20 / 09-27 四天,全部是周日、间隔 7 天,说明这个 Arcade 周期任务每周日都在异常大量提交(发帖人也是周日爆发)。

4. 当前活跃度:WAL 文件仅 861K,说明此刻没有在爆发式写入,但历史垃圾已经堆积。

如何解决

我这边无法执行 sudo(沙箱限制),你可以自己打开终端执行(来自帖子的修复方案,移动数据库后重启,系统会自动重建):

BGDIR="/private/var/db/powerlog/Library/PerfPowerTelemetry/BackgroundProcessing"
BACKUP="$BGDIR/backup-$(date +%Y%m%d-%H%M%S)"

sudo mkdir -p "$BACKUP"
sudo mv "$BGDIR/CurrentBackgroundProcessingDB.BGSQL" \
        "$BGDIR/CurrentBackgroundProcessingDB.BGSQL-wal" \
        "$BGDIR/CurrentBackgroundProcessingDB.BGSQL-shm" \
        "$BACKUP/"

sudo reboot

重启后确认新数据库只有几 KB,即可删除备份目录回收 2.9GB 空间:

sudo rm -rf "$BGDIR"/backup-*

:warning: 两点提醒:

  1. 由于你确实订阅了 Apple Arcade,这个任务属于正常订阅体系,清理后如果 macOS 的这个 bug 未修复,数据库可能在之后的周日再次膨胀。建议下次爆发后(如下周五)再跑一次 ls -lh 检查体积;若复发,考虑更新到最新 macOS 版本。
  2. 备份先保留几天确认系统无异常后再删,更稳妥。

刚刚 ai 重新检查了一下。显示:15:00 精确触发了,但 1 秒内结束。

看起来不错,后面再观察了。

1 个赞

我也查了下,43条记录,9MB 了。