Metrica stocării temporare a conținutului pe Mac
Memoria de stocare temporară a conținutului păstrează metrica în dosarul următor:
/Library/Application Support/Apple/AssetCache/Metrics.
Metrica nu este mutată odată cu conținutul stocat temporar; în schimb, aceasta este stocată mereu în acest amplasament. De exemplu, dacă mutați stocarea temporară din:
/Library/Application Support/Apple/AssetCache/Data
în
/Volumes/Data/Library/Application Support/Apple/AssetCache/Data
metrica este stocată în continuare în
/Library/Application Support/Apple/AssetCache/Metrics
Dacă stocarea temporară a conținutului a mai fost utilizată pe un Mac, acest dosar conține un fișier denumit Metrics.db și poate conține unul sau mai multe alte fișiere cu denumiri similare. Aceste fișiere constituie o bază de date SQLite pe care o puteți citi.
Modelul de obiect CoreData care descrie metrica este disponibil drept entitate “Metric” în /usr/libexec/AssetCache/AssetCache.momd.
Notă: Deși aceasta este o descriere a modelului cu versiunea 7, Apple poate modifica acest model (sau poate utiliza altă bază de date decât SQLite) în versiunile viitoare de macOS, fără o înștiințare în acest sens. Aceasta poate impune actualizări ale scripturilor pe care le-ați configurat pentru a agrega datele conținutului stocat temporar.
Stocarea temporară a conținutului:
Adaugă un nou rând în baza de date în fiecare minut de rulare
Nu adaugă rânduri “doar zero” atunci când este inactivă; pur și simplu adaugă în continuare astfel de rânduri
Nu modifică rândurile existente
Șterge periodic rânduri atunci când au peste 30 de zile vechime
Sfat: Puteți schimba perioada de raportare de la 60 de secunde modificând configurarea avansată MetricsInterval
și puteți schimba perioada maximă a rândurilor stocate de la 30 de zile modificând configurarea avansată MetricsMaxAge
.
Fiecare rând din baza de date conține coloanele următoare. Fiecare obiect este opțional, exceptând creationDate
.
Obiect | Descriere | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
bytesDropped | Cantitatea de date pe care stocarea temporară a conținutului le-a descărcat în timpul perioadei de raportare, dar pe care nu le-a putut adăuga la memoria sa tampon. | ||||||||||
bytesFromCacheToChild | Cantitatea de date servite de stocarea temporară a conținutului din memoria sa tampon către copiii de stocare temporară a conținutului în timpul perioadei de raportare. | ||||||||||
bytesFromCacheToClient | Cantitatea de date servite de stocarea temporară a conținutului din memoria sa tampon către dispozitivele Apple client în timpul perioadei de raportare. | ||||||||||
bytesFromCacheToPeer | Cantitatea de date servite de stocarea temporară a conținutului din memoria sa tampon către partenerii de stocare temporară a conținutului în timpul perioadei de raportare. | ||||||||||
bytesFromOriginToChild | Cantitatea de date descărcate de pe internet de stocarea temporară a conținutului și servite către copiii de stocare temporară a conținutului în timpul perioadei de raportare. | ||||||||||
bytesFromOriginToClient | Cantitatea de date descărcate de pe internet de stocarea temporară a conținutului și servite către dispozitivele Apple client în timpul perioadei de raportare. | ||||||||||
bytesFromOriginToPeer | Cantitatea de date descărcate de pe internet de stocarea temporară a conținutului și servite către partenerii de stocare temporară a conținutului în timpul perioadei de raportare. | ||||||||||
bytesFromParentToChild | Cantitatea de date descărcate de stocarea temporară a conținutului din părinții de stocare temporară și servite către copiii de stocare temporară a conținutului în timpul perioadei de raportare. | ||||||||||
bytesFromParentToClient | Cantitatea de date descărcate de stocarea temporară a conținutului din părinții de stocare temporară și servite către dispozitivele Apple client în timpul perioadei de raportare. | ||||||||||
bytesFromParentToPeer | Cantitatea de date descărcate de stocarea temporară a conținutului din părinții de stocare temporară și servite către partenerii de stocare temporară a conținutului în timpul perioadei de raportare. | ||||||||||
bytesFromPeerToChild | Cantitatea de date primite de stocarea temporară a conținutului de la partenerii de stocare temporară și servite către copiii de stocare temporară a conținutului în timpul perioadei de raportare. | ||||||||||
bytesFromPeerToClient | Cantitatea de date primite de stocarea temporară a conținutului de la partenerii de stocare temporară și servite către dispozitivele Apple client în timpul perioadei de raportare. | ||||||||||
bytesImportedByHTTP | Cantitatea de date primite prin HTTP de stocarea temporară a conținutului în timpul perioadei de raportare. | ||||||||||
bytesImportedByXPC | Cantitatea de date primite prin XPC de stocarea temporară a conținutului în timpul perioadei de raportare. | ||||||||||
bytesPurgedTotal | Cantitatea de date golite de stocarea temporară a conținutului din memoria sa tampon în timpul perioadei de raportare. Includes bytesPurgedYoungerThan30Days. | ||||||||||
bytesPurgedYoungerThan1Day | Cantitatea de date golite de stocarea temporară a conținutului din memoria sa tampon în timpul perioadei de raportare, pe care le adăugase în memoria tampon cu mai puțin de o zi în urmă. | ||||||||||
bytesPurgedYoungerThan30Days | Cantitatea de date golite de stocarea temporară a conținutului din memoria sa tampon în timpul perioadei de raportare, pe care le adăugase în memoria tampon cu mai puțin de 30 de zile în urmă. Includes bytesPurgedYoungerThan7Days. | ||||||||||
bytesPurgedYoungerThan7Days | Cantitatea de date golite de stocarea temporară a conținutului din memoria sa tampon în timpul perioadei de raportare, pe care le adăugase în memoria tampon cu mai puțin de 7 zile în urmă. Includes bytesPurgedYoungerThan1Day. | ||||||||||
creationDate | Data la care a fost colectat acest obiect metrică. Acest articol metrică descrie performanța stocării temporare a conținutului în timpul perioadei încheiate la creationDate. | ||||||||||
importsByHTTP | Numărul de solicitări de încărcare primite prin HTTP de stocarea temporară a conținutului în timpul perioadei de raportare. | ||||||||||
importsByXPC | Numărul de solicitări de încărcare primite prin XPC de stocarea temporară a conținutului în timpul perioadei de raportare. | ||||||||||
period | Durata, în secunde, a perioadei de raportare încheiate la creationDate. | ||||||||||
repliesFromCacheToChild | Numărul de răspunsuri servite de stocarea temporară a conținutului din memoria sa tampon către copiii de stocare temporară în timpul perioadei de raportare. | ||||||||||
repliesFromCacheToClient | Numărul de răspunsuri servite de stocarea temporară a conținutului din memoria sa tampon către dispozitivele Apple client în timpul perioadei de raportare. | ||||||||||
repliesFromCacheToPeer | Numărul de răspunsuri servite de stocarea temporară a conținutului din memoria sa tampon către partenerii de stocare temporară în timpul perioadei de raportare. | ||||||||||
repliesFromOriginToChild | Numărul de răspunsuri descărcate prin internet de stocarea temporară a conținutului și servite către copiii de stocare temporară în timpul perioadei de raportare. | ||||||||||
repliesFromOriginToClient | Numărul de răspunsuri descărcate prin internet de stocarea temporară a conținutului și servite către dispozitivele Apple client în timpul perioadei de raportare. | ||||||||||
repliesFromOriginToPeer | Numărul de răspunsuri descărcate prin internet de stocarea temporară a conținutului și servite către partenerii de stocare temporară în timpul perioadei de raportare. | ||||||||||
repliesFromParentToChild | Numărul de răspunsuri descărcate de stocarea temporară a conținutului din părinții de stocare temporară și servite către copiii de stocare temporară în timpul perioadei de raportare. | ||||||||||
repliesFromParentToClient | Numărul de răspunsuri descărcate de stocarea temporară a conținutului din părinții de stocare temporară și servite către dispozitivele Apple client în timpul perioadei de raportare. | ||||||||||
repliesFromParentToPeer | Numărul de răspunsuri descărcate de stocarea temporară a conținutului din părinții de stocare temporară și servite către partenerii de stocare temporară în timpul perioadei de raportare. | ||||||||||
repliesFromPeerToChild | Numărul de răspunsuri primite de stocarea temporară a conținutului de la partenerii de stocare temporară și servite către copiii de stocare temporară în timpul perioadei de raportare. | ||||||||||
repliesFromPeerToClient | Numărul de răspunsuri primite de stocarea temporară a conținutului de la partenerii de stocare temporară și servite către dispozitivele Apple client în timpul perioadei de raportare. | ||||||||||
requestsFromChild | Numărul de solicitări de descărcare primite de stocarea temporară a conținutului de la copiii de stocare temporară în timpul perioadei de raportare. | ||||||||||
requestsFromClient | Numărul de solicitări de descărcare primite de stocarea temporară a conținutului de la dispozitivele Apple client în timpul perioadei de raportare. | ||||||||||
requestsFromPeer | Numărul de solicitări de descărcare primite de stocarea temporară a conținutului de la partenerii de stocare temporară în timpul perioadei de raportare. | ||||||||||
requestsRejectedForNoSpace | Numărul de solicitări de descărcare respinse de stocarea temporară a conținutului în timpul perioadei de raportare din cauza presiunii ridicate asupra stocării temporare (cu codul de răspuns HTTP 503, serviciu indisponibil). |
Gruparea rezultatelor
Gruparea unora dintre articolele de mai sus poate fi utilă. Iată câteva sugestii. Întregul conținut se bazează pe numere întregi.
Conținut | Obiecte grupate | Descriere | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Byți descărcați | bytesFrom <Origin,Parent,Peer>To | Cantitatea de date descărcate de stocarea temporară a conținutului fie prin internet, fie de la partenerii sau părinții de stocare temporară în timpul perioadei de raportare. | |||||||||
Byți încărcați | Suma bytesImportedBy* | Cantitatea de date încărcate prin stocarea temporară a conținutului în timpul perioadei de raportare. | |||||||||
Byți serviți | Cantitatea totală de date servite de stocarea temporară a conținutului în timpul perioadei de raportare. Când această valoare este diferită de zero, stocarea temporară a conținutului funcționează. | Suma bytesFrom*To* | |||||||||
Byți serviți către client | Suma bytesFrom*ToClient | Cantitatea de date servite de stocarea temporară a conținutului către dispozitivele Apple client în timpul perioadei de raportare. | |||||||||
Byți serviți către copil | Suma bytesFrom*ToChild | Cantitatea de date servite de stocarea temporară a conținutului către oricare dintre copiii săi de stocare temporară în timpul perioadei de raportare. | |||||||||
Byți serviți către partener | Suma bytesFrom*ToPeer | Cantitatea de date servite de stocarea temporară a conținutului către oricare dintre partenerii săi de stocare temporară în timpul perioadei de raportare. | |||||||||
Byți serviți de la origine | Suma bytesFromOriginTo* | Cantitatea de date descărcate prin internet de stocarea temporară a conținutului în timpul perioadei de raportare. | |||||||||
Byți serviți de la partener | Suma bytesFromPeerTo* | Cantitatea de date descărcate de stocarea temporară a conținutului de la oricare dintre partenerii săi de stocare temporară în timpul perioadei de raportare. | |||||||||
Byți serviți de la părinte | Suma bytesFromParentTo* | Cantitatea de date descărcate de stocarea temporară a conținutului de la oricare dintre părinții săi de stocare temporară în timpul perioadei de raportare. | |||||||||
Byți serviți din stocarea temporară | Suma bytesFromCacheTo* | Cantitatea de date servite de stocarea temporară a conținutului din memoria sa tampon în timpul perioadei de raportare. Cu cât această valoare este mai apropiată de valoarea Byți serviți, cu atât a fost mai utilă stocarea temporară a conținutului. |
Obținerea datelor privind presiunea de stocare temporară
Puteți analiza cât de urgent a avut nevoie stocarea temporară a conținutului de mai mult spațiu de stocare în timpul perioadei de raportare. Presiunea mai mică de stocare temporară este mai bună.
Monitor activitate calculează presiunea de stocare temporară după cum urmează:
100% când requestsRejectedForNoSpace > 0
80% când bytesPurgedYoungerThan1Day > 0
60% când bytesPurgedYoungerThan7Days > 0
40% când bytesPurgedYoungerThan30Days > 0
20% când bytesPurgedTotal > 0
0% în celelalte cazuri
De asemenea, Monitor activitate centralizează articolele de mai sus după cum urmează, de exemplu pentru a calcula valorile într-un interval de timp mai lung decât o perioadă.
Pentru numărul de byți, de importări, de solicitări sau de răspunsuri, suma acestora de-a lungul intervalului de timp.
Pentru presiunea stocării temporare, se calculează valoarea maximă din intervalul de timp.
Exemplu de cod pentru citirea bazei de date a metricii
#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
}
}