你的历史记录是一个可以打开的文件。
Vitals将Mac和每个App的使用情况保存在Mac上的一个文件中。它是一个普通的SQLite数据库,所以你可以提出自己的问题:Mac什么时候过热、哪个App耗能最多、这个月与上个月相比如何。
文件位置
~/Library/Application Support/Vitals/history.sqlite
用macOS自带的sqlite3命令或任何能读取SQLite的App打开它。只读取其中的内容,写入交给Vitals。文件中的内容不会离开你的Mac。
数值的写法
- 时间是自1970年起的秒数,采用UTC。
datetime(start, 'unixepoch', 'localtime')可将其转换为你的本地时间。 - 每一列的名称都带有单位:bytes、seconds、percent、celsius、watts。
- 百分比的范围是0到100。对于Mac的CPU,这是所有核心的占比。
- Mac无法提供的读数(例如没有风扇的Mac的风扇转速)会留空。
各个表
readingsMac承受了多大的负载,每五分钟一行:CPU、内存、内存压力、GPU、神经网络引擎、温度、风扇转速和功率的平均值与最高值。system_hours整台Mac的使用情况,每小时一行:CPU、内存、网络、磁盘和能耗。system_five_minutes同样的内容,每五分钟一行,保留最近两天。system_minutes同样的内容,每分钟一行,保留最近三小时。app_days每个App的使用情况,每个App每天一行。app_hours同样的内容按小时记录,保留最近两天。
readingsstart, seconds, cpu_percent_average, cpu_percent_peak, memory_used_bytes_average, memory_used_bytes_peak, memory_pressure_percent_average, memory_pressure_percent_peak, memory_pressure_level_peak, swap_used_bytes_peak, gpu_percent_average, gpu_percent_peak, neural_engine_percent_average, neural_engine_percent_peak, cpu_celsius_average, cpu_celsius_peak, hottest_celsius_average, hottest_celsius_peak, fan_rpm_average, fan_rpm_peak, power_watts_average, power_watts_peak, thermal_state_peak, battery_percent, plugged_in_seconds
system_hours, system_five_minutes, system_minutesstart, seconds, cpu_load_seconds, memory_byte_seconds, network_bytes_in, network_bytes_out, disk_bytes_read, disk_bytes_written, energy_joules
app_days, app_hoursstart, app_id, name, kind, bundle_path, seconds, cpu_seconds, energy_joules, memory_byte_seconds, peak_memory_bytes, network_bytes_in, network_bytes_out, disk_bytes_read, disk_bytes_written
可以上手的查询
过去一周最热的十个五分钟
SELECT datetime(start, 'unixepoch', 'localtime') AS time,
round(cpu_celsius_peak) AS celsius,
round(cpu_percent_peak) AS cpu
FROM readings
WHERE start > strftime('%s', 'now', '-7 days')
ORDER BY cpu_celsius_peak DESC
LIMIT 10; 内存何时承压
SELECT datetime(start, 'unixepoch', 'localtime') AS time,
memory_pressure_level_peak AS pressure,
round(memory_used_bytes_peak / 1073741824.0, 1) AS gb
FROM readings
WHERE memory_pressure_level_peak != 'normal'
ORDER BY start DESC
LIMIT 20; 过去30天耗能最多的App
SELECT name, round(sum(energy_joules) / 3600, 1) AS watt_hours
FROM app_days
WHERE start > strftime('%s', 'now', '-30 days')
GROUP BY name
ORDER BY watt_hours DESC
LIMIT 10; 保留多久
保留30天,除非你在设置 → 通用 →“历史记录保留时间”中选择更长的时间:90天、6个月或1年。同一页面上的“删除历史记录”会清空该文件。
不用SQL
在“概览”中选择“导出”→“导出CSV”,可将同样的数值存储为用于电子表格的CSV文件。将Vitals连接到AI助手后,你还可以用自己的话询问Mac何时达到了极限。