Meetwaarden van materiaalcaching op de Mac
Meetwaarden van materiaalcaching worden in de volgende map opgeslagen:
/Bibliotheek/Application Support/Apple/AssetCache/Metrics.
De meetwaarden worden altijd op deze locatie opgeslagen, ook als je het materiaal in de cache naar een andere locatie verplaatst. Als je de cache bijvoorbeeld verplaatst van:
/Bibliotheek/Application Support/Apple/AssetCache/Data
naar
/Volumes/Data/Bibliotheek/Application Support/Apple/AssetCache/Data
worden de meetwaarden nog steeds opgeslagen in
/Bibliotheek/Application Support/Apple/AssetCache/Metrics
Als materiaalcaching al eerder op de Mac is gebruikt, bevat deze map het bestand 'Metrics.db' en eventueel andere bestanden met soortgelijke namen. Deze bestanden vormen samen een SQLite-database die je kunt lezen.
Het CoreData-objectmodel waarin de meetwaarden worden beschreven, is beschikbaar als de entiteit 'Metric' in '/usr/libexec/AssetCache/AssetCache.momd'.
Opmerking: Hier wordt versie 7 van het model beschreven. Het is mogelijk dat Apple in toekomstige versies van macOS zonder voorafgaande kennisgeving dit model wijzigt of een andere database dan SQLite gebruikt. Hierdoor kan het zijn dat je de scripts moet bijwerken die je hebt geconfigureerd voor het samenvoegen van gegevens over materiaalcaching.
De materiaalcache doet het volgende:
Als de cache actief is, wordt er elke minuut een nieuwe rij aan de database toegevoegd.
Als de cache inactief is, worden er in plaats van rijen met alleen nullen, helemaal geen rijen toegevoegd.
Bestaande rijen worden niet gewijzigd.
Rijen die meer dan 30 dagen oud zijn, worden periodiek verwijderd.
Tip: Met de geavanceerde instelling MetricsInterval
kun je het rapportage-interval van 60 seconden inkorten of verlengen en met de geavanceerde instelling MetricsMaxAge
kun je wijzigen dat de opgeslagen rijen na 30 dagen worden verwijderd.
Elke rij in de database bevat de volgende kolommen. Elk object is optioneel behalve creationDate
.
Object | Beschrijving | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
bytesDropped | Hoeveelheid gegevens die tijdens de rapportageperiode door de materiaalcache is gedownload maar niet aan de cache kon worden toegevoegd. | ||||||||||
bytesFromCacheToChild | Hoeveelheid gegevens die tijdens de rapportageperiode vanuit de materiaalcache is geleverd aan onderliggende materiaalcaches. | ||||||||||
bytesFromCacheToClient | Hoeveelheid gegevens die tijdens de rapportageperiode vanuit de materiaalcache is geleverd aan Apple clientapparaten. | ||||||||||
bytesFromCacheToPeer | Hoeveelheid gegevens die tijdens de rapportageperiode vanuit de materiaalcache is geleverd aan peermateriaalcaches. | ||||||||||
bytesFromOriginToChild | Hoeveelheid gegevens die tijdens de rapportageperiode door de materiaalcache via het internet is gedownload en is geleverd aan onderliggende materiaalcaches. | ||||||||||
bytesFromOriginToClient | Hoeveelheid gegevens die tijdens de rapportageperiode door de materiaalcache via het internet is gedownload en is geleverd aan Apple clientapparaten. | ||||||||||
bytesFromOriginToPeer | Hoeveelheid gegevens die tijdens de rapportageperiode door de materiaalcache via het internet is gedownload en is geleverd aan peermateriaalcaches. | ||||||||||
bytesFromParentToChild | Hoeveelheid gegevens die tijdens de rapportageperiode door de materiaalcache is gedownload uit bovenliggende materiaalcaches en is geleverd aan onderliggende materiaalcaches. | ||||||||||
bytesFromParentToClient | Hoeveelheid gegevens die tijdens de rapportageperiode door de materiaalcache is gedownload uit bovenliggende materiaalcaches en is geleverd aan Apple clientapparaten. | ||||||||||
bytesFromParentToPeer | Hoeveelheid gegevens die tijdens de rapportageperiode door de materiaalcache is gedownload uit bovenliggende materiaalcaches en is geleverd aan peermateriaalcaches. | ||||||||||
bytesFromPeerToChild | Hoeveelheid gegevens die tijdens de rapportageperiode door de materiaalcache is ontvangen uit peermateriaalcaches en is geleverd aan onderliggende materiaalcaches. | ||||||||||
bytesFromPeerToClient | Hoeveelheid gegevens die tijdens de rapportageperiode door de materiaalcache is ontvangen uit peermateriaalcaches en is geleverd aan Apple clientapparaten. | ||||||||||
bytesImportedByHTTP | Hoeveelheid gegevens die tijdens de rapportageperiode door de materiaalcache is ontvangen via HTTP. | ||||||||||
bytesImportedByXPC | Hoeveelheid gegevens die tijdens de rapportageperiode door de materiaalcache is ontvangen via XPC. | ||||||||||
bytesPurgedTotal | Hoeveelheid gegevens die tijdens de rapportageperiode uit de materiaalcache is verwijderd. Dit omvat bytesPurgedYoungerThan30Days. | ||||||||||
bytesPurgedYoungerThan1Day | Hoeveelheid gegevens die tijdens de rapportageperiode uit de materiaalcache is verwijderd en die minder dan een dag geleden aan de cache is toegevoegd. | ||||||||||
bytesPurgedYoungerThan30Days | Hoeveelheid gegevens die tijdens de rapportageperiode uit de materiaalcache is verwijderd en die minder dan 30 dagen geleden aan de cache is toegevoegd. Dit omvat bytesPurgedYoungerThan7Days. | ||||||||||
bytesPurgedYoungerThan7Days | Hoeveelheid gegevens die tijdens de rapportageperiode uit de materiaalcache is verwijderd en die minder dan zeven dagen geleden aan de cache is toegevoegd. Dit omvat bytesPurgedYoungerThan1Day. | ||||||||||
creationDate | De datum waarop dit meetwaardenobject is verzameld. Met dit meetwaardenonderdeel worden de prestaties beschreven van de materiaalcache tijdens de periode die eindigt op 'creationDate'. | ||||||||||
importsByHTTP | Aantal uploadverzoeken dat tijdens de rapportageperiode door de materiaalcache is ontvangen via HTTP. | ||||||||||
importsByXPC | Aantal uploadverzoeken dat tijdens de rapportageperiode door de materiaalcache is ontvangen via XPC. | ||||||||||
period | Duur (in seconden) van de rapportageperiode die eindigt op 'creationDate'. | ||||||||||
repliesFromCacheToChild | Aantal reacties dat tijdens de rapportageperiode door de materiaalcache is geleverd aan onderliggende materiaalcaches. | ||||||||||
repliesFromCacheToClient | Aantal reacties dat tijdens de rapportageperiode door de materiaalcache is geleverd aan Apple clientapparaten. | ||||||||||
repliesFromCacheToPeer | Aantal reacties dat tijdens de rapportageperiode door de materiaalcache is geleverd aan peermateriaalcaches. | ||||||||||
repliesFromOriginToChild | Aantal reacties dat tijdens de rapportageperiode door de materiaalcache via het internet is gedownload en is geleverd aan onderliggende materiaalcaches. | ||||||||||
repliesFromOriginToClient | Aantal reacties dat tijdens de rapportageperiode door de materiaalcache via het internet is gedownload en is geleverd aan Apple clientapparaten. | ||||||||||
repliesFromOriginToPeer | Aantal reacties dat tijdens de rapportageperiode door de materiaalcache via het internet is gedownload en is geleverd aan peermateriaalcaches. | ||||||||||
repliesFromParentToChild | Aantal reacties dat tijdens de rapportageperiode door de materiaalcache is gedownload uit bovenliggende materiaalcaches en is geleverd aan onderliggende materiaalcaches. | ||||||||||
repliesFromParentToClient | Aantal reacties dat tijdens de rapportageperiode door de materiaalcache is gedownload uit bovenliggende materiaalcaches en is geleverd aan Apple clientapparaten. | ||||||||||
repliesFromParentToPeer | Aantal reacties dat tijdens de rapportageperiode door de materiaalcache is gedownload uit bovenliggende materiaalcaches en is geleverd aan peermateriaalcaches. | ||||||||||
repliesFromPeerToChild | Aantal reacties dat tijdens de rapportageperiode door de materiaalcache is ontvangen uit peermateriaalcaches en is geleverd aan onderliggende materiaalcaches. | ||||||||||
repliesFromPeerToClient | Aantal reacties dat tijdens de rapportageperiode door de materiaalcache is ontvangen uit peermateriaalcaches en is geleverd aan Apple clientapparaten. | ||||||||||
requestsFromChild | Aantal downloadverzoeken dat tijdens de rapportageperiode door de materiaalcache is ontvangen van onderliggende materiaalcaches. | ||||||||||
requestsFromClient | Aantal downloadverzoeken dat tijdens de rapportageperiode door de materiaalcache is ontvangen van Apple clientapparaten. | ||||||||||
requestsFromPeer | Aantal downloadverzoeken dat tijdens de rapportageperiode door de materiaalcache is ontvangen van peermateriaalcaches. | ||||||||||
requestsRejectedForNoSpace | Aantal downloadverzoeken dat tijdens de rapportageperiode door de materiaalcache is afgewezen vanwege een hoge cachedruk (met HTTP-reactiecode 503: service niet beschikbaar). |
Resultaten groeperen
Het kan handig zijn om een aantal van de bovenstaande onderdelen te groeperen. Je kunt de volgende suggesties proberen. In alle suggesties worden gehele getallen gebruikt.
Materiaal | Gegroepeerde objecten | Beschrijving | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Aan client geleverde bytes | Som van bytesFrom*ToClient | Hoeveelheid gegevens die tijdens de rapportageperiode door de materiaalcache is geleverd aan Apple clientapparaten. | |||||||||
Aan onderliggende cache geleverde bytes | Som van bytesFrom*ToChild | Hoeveelheid gegevens die tijdens de rapportageperiode door de materiaalcache is geleverd aan de onderliggende materiaalcaches. | |||||||||
Aan peercache geleverde bytes | Som van bytesFrom*ToPeer | Hoeveelheid gegevens die tijdens de rapportageperiode door de materiaalcache is geleverd aan de peermateriaalcaches. | |||||||||
Gedownloade bytes | bytesFrom <Origin,Parent,Peer>To | Hoeveelheid gegevens die tijdens de rapportageperiode door de materiaalcache is gedownload via het internet of uit peercaches of bovenliggende caches. | |||||||||
Geleverde bytes | Totale hoeveelheid gegevens die tijdens de rapportageperiode door de materiaalcache is geleverd. Wanneer deze waarde niet nul is, is de materiaalcache actief. | Som van bytesFrom*To* | |||||||||
Geüploade bytes | Som van bytesImportedBy* | Hoeveelheid gegevens die tijdens de rapportageperiode via de materiaalcache is geüpload. | |||||||||
Vanuit bovenliggende cache geleverde bytes | Som van bytesFromParentTo* | Hoeveelheid gegevens die tijdens de rapportageperiode door de materiaalcache is gedownload uit de bovenliggende materiaalcaches. | |||||||||
Vanuit cache geleverde bytes | Som van bytesFromCacheTo* | Hoeveelheid gegevens die tijdens de rapportageperiode vanuit de materiaalcache is geleverd. Hoe dichter deze waarde bij de waarde voor 'Geleverde bytes' ligt, hoe meer de materiaalcache heeft geholpen. | |||||||||
Vanuit oorsprong geleverde bytes | Som van bytesFromOriginTo* | Hoeveelheid gegevens die tijdens de rapportageperiode door de materiaalcache via het internet is gedownload. | |||||||||
Vanuit peercache geleverde bytes | Som van bytesFromPeerTo* | Hoeveelheid gegevens die tijdens de rapportageperiode door de materiaalcache is gedownload uit de peermateriaalcaches. |
De cachedruk berekenen
Je kunt controleren hoe dringend de materiaalcache extra opslagruimte nodig had tijdens de rapportageperiode. Een lagere cachedruk is beter.
In Activiteitenweergave wordt de cachedruk als volgt berekend:
100% wanneer requestsRejectedForNoSpace > 0
80% wanneer bytesPurgedYoungerThan1Day > 0
60% wanneer bytesPurgedYoungerThan7Days > 0
40% wanneer bytesPurgedYoungerThan30Days > 0
20% wanneer bytesPurgedTotal > 0
0% in overige gevallen
In Activiteitenweergave kun je de bovenstaande onderdelen ook als volgt samenvoegen, bijvoorbeeld om waarden te berekenen gedurende een tijdsinterval die meer dan één periode beslaat.
Om inzicht te krijgen in het aantal bytes, importeerbewerkingen, verzoeken of reacties, bereken je de som ervan gedurende het tijdsinterval.
Om inzicht te krijgen in de cachedruk, bereken je de maximumwaarde ervan gedurende het tijdsinterval.
Voorbeeldcode voor het lezen van de meetwaardendatabase
#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
}
}