Dein Verlauf ist eine Datei, die du öffnen kannst.
Vitals speichert, was dein Mac und jede App verbraucht haben, in einer Datei auf deinem Mac. Sie ist eine gewöhnliche SQLite-Datenbank, du kannst ihr also eigene Fragen stellen: wann der Mac heiß lief, welche App am meisten Energie verbraucht hat, wie dieser Monat im Vergleich zum letzten aussieht.
Wo sie liegt
~/Library/Application Support/Vitals/history.sqlite
Öffne sie mit dem Befehl sqlite3, der zu macOS gehört, oder mit jeder App, die SQLite liest. Lies daraus und überlass das Schreiben Vitals. Nichts darin verlässt deinen Mac.
Wie die Werte geschrieben sind
- Zeiten sind Sekunden seit 1970, in UTC.
datetime(start, 'unixepoch', 'localtime')wandelt eine in deine eigene Zeit um. - Jede Spalte nennt ihre Einheit im Namen: bytes, seconds, percent, celsius, watts.
- Prozentwerte reichen von 0 bis 100. Bei der CPU des Mac bezieht sich das auf alle Kerne.
- Ein Wert, den dein Mac nicht liefert, etwa die Lüfterdrehzahl bei einem Mac ohne Lüfter, bleibt leer.
Die Tabellen
readingsWie stark der Mac gefordert war, eine Zeile alle fünf Minuten: Durchschnitt und Höchstwert von CPU, Speicher, Speicherdruck, GPU, Neural Engine, Temperatur, Lüfterdrehzahl und Leistung.system_hoursWas der ganze Mac verbraucht hat, eine Zeile pro Stunde: CPU, Speicher, Netzwerk, Festplatte und Energie.system_five_minutesDasselbe, eine Zeile alle fünf Minuten, für die letzten zwei Tage.system_minutesDasselbe, eine Zeile pro Minute, für die letzten drei Stunden.app_daysWas jede App verbraucht hat, eine Zeile pro App und Tag.app_hoursDasselbe pro Stunde, für die letzten zwei Tage.
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
Abfragen für den Einstieg
Die zehn heißesten Fünf-Minuten-Abschnitte der letzten Woche
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; Wann der Speicher unter Druck stand
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; Die Apps mit dem höchsten Energieverbrauch der letzten 30 Tage
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; Wie lange er behalten wird
30 Tage lang, sofern du unter Einstellungen → Allgemein → „Verlauf behalten für“ nichts Längeres wählst: 90 Tage, 6 Monate oder 1 Jahr. „Verlauf löschen“ auf derselben Seite leert die Datei.
Ohne SQL
Exportieren → CSV exportieren in der Übersicht sichert dieselben Werte als CSV-Dateien für eine Tabellenkalkulation. Und wenn Vitals mit einem KI-Assistenten verbunden ist, kannst du in eigenen Worten fragen, wann dein Mac an seinen Grenzen war.