Statistik för innehållscachelagring på datorn
Innehållscachelagring sparar statistik i följande mapp:
/Library/Application Support/Apple/AssetCache/Metrics.
Statistiken flyttas inte med det cachade innehållet, utan den lagras alltid på den här platsen. Om du exempelvis flyttar cachen från:
/Library/Application Support/Apple/AssetCache/Data
till
/Volumes/Data/Library/Application Support/Apple/AssetCache/Data
lagras statistiken fortfarande i
/Library/Application Support/Apple/AssetCache/Metrics
Om Innehållscachelagring någonsin har använts på en Mac innehåller den här mappen en fil som heter Metrics.db och kan innehålla en eller flera andra filer med liknande namn. De här filerna utgör en SQLite-databas som du kan läsa.
CoreData-objektmodellen som beskriver statistiken finns i enheten ”Metric” i /usr/libexec/AssetCache/AssetCache.momd.
Obs! Det här är en beskrivning av version 7-modellen, men Apple kan ändra den här modellen, eller använda någon annan databas än SQLite, i kommande versioner av macOS utan föregående varning. Det kan kräva uppdateringar av eventuella skript som du har konfigurerat för att sammanställa data om cacheinnehåll.
Innehållscachen:
Lägger till en ny rad i databasen varje minut som den körs
Lägger inte till ”nollrader” när den är overksam, utan hoppar över de raderna
Ändrar inte befintliga rader
Raderar rader då och då när de är äldre än 30 dagar
Tips: Du kan ändra tidsperiod för rapporteringen från 60 sekunder genom att ändra den avancerade inställningen MetricsInterval
, och du kan ändra den högsta åldern för lagrade rader från 30 dagar genom att ändra den avancerade inställningen MetricsMaxAge
.
Varje rad i databasen innehåller följande kolumner. Alla objekt är frivilliga med undantag för creationDate
.
Objekt | Beskrivning | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
bytesDropped | Datamängd som innehållscachen har hämtat under rapporteringsperioden men inte kunde lägga till i sin cache. | ||||||||||
bytesFromCacheToChild | Datamängd som innehållscachen har levererat från sin cache till underliggande innehållscachar under rapporteringsperioden. | ||||||||||
bytesFromCacheToClient | Datamängd som innehållscachen har levererat från sin cache till Apple-klientenheter under rapporteringsperioden. | ||||||||||
bytesFromCacheToPeer | Datamängd som innehållscachen har levererat från sin cache till jämbördiga innehållscachar under rapporteringsperioden. | ||||||||||
bytesFromOriginToChild | Datamängd som innehållscachen har hämtat från internet och levererat till underliggande innehållscachar under rapporteringsperioden. | ||||||||||
bytesFromOriginToClient | Datamängd som innehållscachen har hämtat från internet och levererat till Apple-klientenheter under rapporteringsperioden. | ||||||||||
bytesFromOriginToPeer | Datamängd som innehållscachen har hämtat från internet och levererat till jämbördiga innehållscachar under rapporteringsperioden. | ||||||||||
bytesFromParentToChild | Datamängd som innehållscachen har hämtat från överliggande innehållscachar och levererat till underliggande innehållscachar under rapporteringsperioden. | ||||||||||
bytesFromParentToClient | Datamängd som innehållscachen har hämtat från överliggande innehållscachar och levererat till Apple-klientenheter under rapporteringsperioden. | ||||||||||
bytesFromParentToPeer | Datamängd som innehållscachen har hämtat från överliggande innehållscachar och levererat till jämbördiga innehållscachar under rapporteringsperioden. | ||||||||||
bytesFromPeerToChild | Datamängd som innehållscachen har tagit emot från jämbördiga innehållscachar och levererat till underliggande innehållscachar under rapporteringsperioden. | ||||||||||
bytesFromPeerToClient | Datamängd som innehållscachen har tagit emot från jämbördiga innehållscachar och levererat till Apple-klientenheter under rapporteringsperioden. | ||||||||||
bytesImportedByHTTP | Datamängd som innehållscachen har tagit emot via HTTP under rapporteringsperioden. | ||||||||||
bytesImportedByXPC | Datamängd som innehållscachen har tagit emot via XPC under rapporteringsperioden. | ||||||||||
bytesPurgedTotal | Datamängd som innehållscachen har rensat från sin cache under rapporteringsperioden. Inkluderar bytesPurgedYoungerThan30Days. | ||||||||||
bytesPurgedYoungerThan1Day | Datamängd som innehållscachen har rensat från sin cache under rapporteringsperioden och som den hade lagt till i cachen för mindre än en dag sedan. | ||||||||||
bytesPurgedYoungerThan30Days | Datamängd som innehållscachen har rensat från sin cache under rapporteringsperioden och som den hade lagt till i cachen för mindre än 30 dagar sedan. Inkluderar bytesPurgedYoungerThan7Days. | ||||||||||
bytesPurgedYoungerThan7Days | Datamängd som innehållscachen har rensat från sin cache under rapporteringsperioden och som den hade lagt till i cachen för mindre än sju dagar sedan. Inkluderar bytesPurgedYoungerThan1Day. | ||||||||||
creationDate | Datumet då detta statistikobjekt samlades in. Det här beskriver innehållscachens prestanda under perioden som avslutas vid creationDate. | ||||||||||
importsByHTTP | Antalet överföringsförfrågningar som innehållscachen har tagit emot via HTTP under rapporteringsperioden. | ||||||||||
importsByXPC | Antalet överföringsförfrågningar som innehållscachen har tagit emot via XPC under rapporteringsperioden. | ||||||||||
period | Tidslängden i sekunder för rapporteringsperioden som avslutas vid creationDate. | ||||||||||
repliesFromCacheToChild | Antalet svar som innehållscachen har levererat från sin cache till underliggande innehållscachar under rapporteringsperioden. | ||||||||||
repliesFromCacheToClient | Antalet svar som innehållscachen har levererat från sin cache till Apple-klientenheter under rapporteringsperioden. | ||||||||||
repliesFromCacheToPeer | Antalet svar som innehållscachen har levererat från sin cache till jämbördiga innehållscachar under rapporteringsperioden. | ||||||||||
repliesFromOriginToChild | Antalet svar som innehållscachen har hämtat från internet och levererat till underliggande innehållscachar under rapporteringsperioden. | ||||||||||
repliesFromOriginToClient | Antalet svar som innehållscachen har hämtat från internet och levererat till Apple-klientenheter under rapporteringsperioden. | ||||||||||
repliesFromOriginToPeer | Antalet svar som innehållscachen har hämtat från internet och levererat till jämbördiga innehållscachar under rapporteringsperioden. | ||||||||||
repliesFromParentToChild | Antalet svar som innehållscachen har hämtat från överliggande innehållscachar och levererat till underliggande innehållscachar under rapporteringsperioden. | ||||||||||
repliesFromParentToClient | Antalet svar som innehållscachen har hämtat från överliggande innehållscachar och levererat till Apple-klientenheter under rapporteringsperioden. | ||||||||||
repliesFromParentToPeer | Antalet svar som innehållscachen har hämtat från överliggande innehållscachar och levererat till jämbördiga innehållscachar under rapporteringsperioden. | ||||||||||
repliesFromPeerToChild | Antalet svar som innehållscachen har tagit emot från jämbördiga innehållscachar och levererat till underliggande innehållscachar under rapporteringsperioden. | ||||||||||
repliesFromPeerToClient | Antalet svar som innehållscachen har tagit emot från jämbördiga innehållscachar och levererat till Apple-klientenheter under rapporteringsperioden. | ||||||||||
requestsFromChild | Antalet hämtningsförfrågningar som innehållscachen har tagit emot från underliggande innehållscachar under rapporteringsperioden. | ||||||||||
requestsFromClient | Antalet hämtningsförfrågningar som innehållscachen har tagit emot från Apple-klientenheter under rapporteringsperioden. | ||||||||||
requestsFromPeer | Antalet hämtningsförfrågningar som innehållscachen har tagit emot från jämbördiga innehållscachar under rapporteringsperioden. | ||||||||||
requestsRejectedForNoSpace | Antalet hämtningsförfrågningar som innehållscachen nekade under rapporteringsperioden p.g.a. högt cachetryck (med HTTP-svarskod 503, Tjänsten är inte tillgänglig). |
Gruppera resultat
Det kan bli mer lättöverskådligt om du grupperar några av objekten ovan. Här är några förslag. Allt innehåll är heltalsbaserat.
Innehåll | Grupperade objekt | Beskrivning | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Byte levererade från cache | Summan av bytesFromCacheTo* | Datamängd som innehållscachen har levererat från sin cache under rapporteringsperioden. Ju närmare värdet är till värdet för levererade data, desto effektivare är innehållscachen. | |||||||||
Byte levererade från jämbördig | Summan av bytesFromPeerTo* | Datamängd som innehållscachen har hämtat från någon av dess jämbördiga innehållscachar under rapporteringsperioden. | |||||||||
Byte levererade från ursprung | Summan av bytesFromOriginTo* | Datamängd som innehållscachen har hämtat från internet under rapporteringsperioden. | |||||||||
Byte levererade till jämbördig | Summan av bytesFrom*ToPeer | Datamängd som innehållscachen har levererat till någon av dess jämbördiga innehållscachar under rapporteringsperioden. | |||||||||
Byte levererade till klient | Summan av bytesFrom*ToClient | Datamängd som innehållscachen har levererat till Apple-klientenheter under rapporteringsperioden. | |||||||||
Byte levererade till underliggande | Summan av bytesFrom*ToChild | Datamängd som innehållscachen har levererat till någon av dess underliggande innehållscachar under rapporteringsperioden. | |||||||||
Bytes levererade från överliggande | Summan av bytesFromParentTo* | Datamängd som innehållscachen har hämtat från någon av dess överliggande innehållscachar under rapporteringsperioden. | |||||||||
Hämtade byte | bytesFrom <Origin,Parent,Peer>To | Datamängd som innehållscachen har hämtat antingen från internet eller från jämbördiga eller överliggande under rapporteringsperioden. | |||||||||
Levererade byte | Total mängd data som innehållscachen har levererat under rapporteringsperioden. När det här värdet inte är noll fungerar innehållscachen. | Summan av bytesFrom*To* | |||||||||
Överförda byte | Summan av bytesImportedBy* | Datamängd som har överförts genom innehållscachen under rapporteringsperioden. |
Hämta cachetryckdata
Du kan granska hur pass akut innehållscachen behövde mer lagringsutrymme under rapporteringsperioden. Lägre cachetryck är bättre.
Aktivitetskontroll beräknar cachetryck enligt följande:
100 % när requestsRejectedForNoSpace > 0
80 % när bytesPurgedYoungerThan1Day > 0
60 % när bytesPurgedYoungerThan7Days > 0
40 % när bytesPurgedYoungerThan30Days > 0
20 % när bytesPurgedTotal > 0
0 % i annat fall
Aktivitetskontroll jämför även objekten ovan enligt följande, exempelvis för att beräkna värden över tidsintervall som är längre än en period.
För byteantal, importantal, förfrågningsantal eller svarsantal summeras antalen över tidsintervallet.
För cachetryck beräknas maximum över tidsintervallet.
Exempelkod för läsning av statistikdatabasen
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
void readMetricsSinceDate(NSDate *date)
{
NSURL *modelURL = [NSURL fileURLWithPath:@"/usr/libexec/AssetCache/AssetCache.momd"];
NSManagedObjectModel *model = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
if (model == nil) {
// handle the error
}
NSPersistentStoreCoordinator *coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];
NSURL *databaseURL = [NSURL fileURLWithPath:@"/Library/Application Support/Apple/AssetCache/Metrics/Metrics.db"];
NSError *storeError = nil;
NSPersistentStore *store = [coordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:databaseURL options:@{ NSReadOnlyPersistentStoreOption: @YES } error:&storeError];
if (store == nil) {
// handle the error
}
NSManagedObjectContext *context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
context.persistentStoreCoordinator = coordinator;
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Metric"];
request.predicate = [NSPredicate predicateWithFormat:@"%K > %@", @"creationDate", date];
request.sortDescriptors = @[ [NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES] ];
NSError *fetchError = nil;
NSArray *results = [context executeFetchRequest:request error:&fetchError];
if (results == nil) {
// handle the error
}
for (NSManagedObject *result in results) {
NSNumber *bytesDropped = [result valueForKey:@"bytesDropped"];
// ...
NSNumber *requestsRejectedForNoSpace = [result valueForKey:@"requestsRejectedForNoSpace"];
// use the values
}
}