Sisältövälimuistin mittaritiedot Macissa
Sisältävalimuisti tallentaa mittaritiedot seuraavaan kansioon:
/Library/Application Support/Apple/AssetCache/Metrics.
Mittaritiedot eivät siirry välimuistiin tallennetun sisällön mukana, vaan ne ovat aina tässä sijainnissa. Jos esimerkiksi siirrät välimuistin sijainnista:
/Library/Application Support/Apple/AssetCache/Data
sijaintiin
/Volumes/Data/Library/Application Support/Apple/AssetCache/Data
mittaritiedot ovat edelleen sijainnissa
/Library/Application Support/Apple/AssetCache/Metrics
Jos Macissa on koskaan käytetty sisältövälimuistia, tässä kansiossa on tiedosto nimeltä Metrics.db ja mahdollisesti muita nimiltään samankaltaisia tiedostoja. Nämä tiedostot muodostavat SQLite-tietokannan, jota voit lukea.
Mittaritiedot kuvaava CoreData-objektimalli on saatavilla ”Metric”-entiteettinä täällä: /usr/libexec/AssetCache/AssetCache.momd.
Huomaa: Vaikka tässä kuvataan mallin versio 7, Apple voi muuttaa tätä mallia – tai käyttää muuta tietokantaa kuin SQLite – tulevissa macOS-versioissa asiasta ilmoittamatta. Tämä voi edellyttää päivityksiä skripteihin, joita olet laatinut sisältövälimuistidatan koosteita varten.
Sisältövälimuisti:
Lisää uuden rivin tietokantaan joka minuutti, kun se on toiminnassa
Ei lisää pelkkiä nollia sisältävää riviä ollessaan toimettomana, vaan ohittaa sellaiset rivit
Ei muokkaa olemassa olevia rivejä
Poistaa säännöllisesti yli 30 päivää vanhat rivit
Vinkki: Voit muuttaa raportointiajanjaksoa 60 sekunnista muuttamalla lisäasetusta MetricsInterval
ja voit muuttaa säilytettävien rivien enimmäisikää 30 päivästä muuttamalla lisäasetusta MetricsMaxAge
.
Kullakin tietokannan rivillä on seuraavat sarakkeet. Kaikki muut objektit paitsi creationDate
ovat valinnaisia.
Objekti | Kuvaus | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
bytesDropped | Datan määrä, jonka sisältövälimuisti latasi raportointiajanjaksolla, muttei voinut lisätä välimuistiin. | ||||||||||
bytesFromCacheToChild | Datamäärä, jonka sisältövälimuisti tarjosi välimuististaan jälkeläissisältövälimuisteilleen kyseisellä raportointiajanjaksolla. | ||||||||||
bytesFromCacheToClient | Datamäärä, jonka sisältövälimuisti tarjosi välimuististaan asiakkaina oleville Apple-laitteille kyseisellä raportointiajanjaksolla. | ||||||||||
bytesFromCacheToPeer | Datamäärä, jonka sisältövälimuisti tarjosi välimuististaan jälkeläissisältövälimuisteilleen raportointiajanjaksolla. | ||||||||||
bytesFromOriginToChild | Datamäärä, jonka sisältövälimuisti latasi internetistä ja tarjosi jälkeläissisältövälimuisteille raportointiajanjaksolla. | ||||||||||
bytesFromOriginToClient | Datamäärä, jonka sisältövälimuisti latasi internetistä ja tarjosi asiakkaina oleville Apple-laitteille raportointiajanjaksolla. | ||||||||||
bytesFromOriginToPeer | Datamäärä, jonka sisältövälimuisti latasi internetistä ja tarjosi kumppanisisältövälimuisteille raportointiajanjaksolla. | ||||||||||
bytesFromParentToChild | Datamäärä, jonka sisältövälimuisti latasi edeltäjäsisältövälimuisteista ja tarjosi jälkeläissisältövälimuisteille raportointiajanjaksolla. | ||||||||||
bytesFromParentToClient | Datamäärä, jonka sisältövälimuisti latasi edeltäjäsisältövälimuisteista ja tarjosi asiakkaina oleville Apple-laitteille raportointiajanjaksolla. | ||||||||||
bytesFromParentToPeer | Datamäärä, jonka sisältövälimuisti latasi edeltäjäsisältövälimuisteista ja tarjosi kumppanisisältövälimuisteille raportointiajanjaksolla. | ||||||||||
bytesFromPeerToChild | Datamäärä, jonka sisältövälimuisti vastaanotti kumppanisisältövälimuisteista ja tarjosi jälkeläissisältövälimuisteille raportointiajanjaksolla. | ||||||||||
bytesFromPeerToClient | Datamäärä, jonka sisältövälimuisti vastaanotti kumppanisisältövälimuisteista ja tarjosi asiakkaina oleville Apple-laitteille raportointiajanjaksolla. | ||||||||||
bytesImportedByHTTP | Datamäärä, jonka sisältövälimuisti vastaanotti HTTP:n kautta raportointiajanjaksolla. | ||||||||||
bytesImportedByXPC | Datamäärä, jonka sisältövälimuisti vastaanotti XPC:n:n kautta raportointiajanjaksolla. | ||||||||||
bytesPurgedTotal | Datamäärä, jonka sisältövälimuisti poisti välimuististaan raportointiajanjaksolla. Sisältää bytesPurgedYoungerThan30Days-datamäärän. | ||||||||||
bytesPurgedYoungerThan1Day | Alle päivä ennen poistoa lisätyn datan määrä, jonka sisältövälimuisti poisti välimuististaan raportointiajanjaksolla. | ||||||||||
bytesPurgedYoungerThan30Days | Alle 30 päivää ennen poistoa lisätyn datan määrä, jonka sisältövälimuisti poisti välimuististaan raportointiajanjaksolla. Sisältää bytesPurgedYoungerThan7Days-datamäärän. | ||||||||||
bytesPurgedYoungerThan7Days | Alle 7 päivää ennen poistoa lisätyn datan määrä, jonka sisältövälimuisti poisti välimuististaan raportointiajanjaksolla. Sisältää bytesPurgedYoungerThan1Day-datamäärän. | ||||||||||
creationDate | Kyseinen mittaritieto-objektin tallentamisen päiväys. Tämä mittaritietokohde kuvaa sisältövälimuistin toimintaa ajanjaksona, joka päättyy creationDate-aikaan. | ||||||||||
importsByHTTP | Lähetyspyyntöjen määrä, jonka sisältövälimuisti vastaanotti HTTP:n kautta raportointiajanjaksolla. | ||||||||||
importsByXPC | Lähetyspyyntöjen määrä, jonka sisältövälimuisti vastaanotti XPC:n kautta raportointiajanjaksolla. | ||||||||||
period | creationDate-hetkeen päättyvän raportointiajanjakson pituus sekunneissa. | ||||||||||
repliesFromCacheToChild | Vastausten määrä, jonka sisältövälimuisti tarjosi välimuististaan jälkeläissisältövälimuisteille raportointiajanjaksolla. | ||||||||||
repliesFromCacheToClient | Vastausten määrä, jonka sisältövälimuisti tarjosi välimuististaan asiakkaina oleville Apple-laitteille raportointiajanjaksolla. | ||||||||||
repliesFromCacheToPeer | Vastausten määrä, jonka sisältövälimuisti tarjosi välimuististaan kumppanivälimuisteille raportointiajanjaksolla. | ||||||||||
repliesFromOriginToChild | Vastausten määrä, jonka sisältövälimuisti latasi internetistä ja tarjosi jälkeläissisältövälimuisteille raportointiajanjaksolla. | ||||||||||
repliesFromOriginToClient | Vastausten määrä, jonka sisältövälimuisti latasi internetistä ja tarjosi asiakkaina oleville Apple-laitteille raportointiajanjaksolla. | ||||||||||
repliesFromOriginToPeer | Vastausten määrä, jonka sisältövälimuisti latasi internetistä ja tarjosi kumppanisisältövälimuisteille raportointiajanjaksolla. | ||||||||||
repliesFromParentToChild | Vastausten määrä, jonka sisältövälimuisti latasi edeltäjäsisältövälimuisteista ja tarjosi jälkeläissisältövälimuisteille raportointiajanjaksolla. | ||||||||||
repliesFromParentToClient | Vastausten määrä, jonka sisältövälimuisti latasi edeltäjäsisältövälimuisteista ja tarjosi asiakkaina oleville Apple-laitteille raportointiajanjaksolla. | ||||||||||
repliesFromParentToPeer | Vastausten määrä, jonka sisältövälimuisti latasi edeltäjäsisältövälimuisteista ja tarjosi kumppanisisältövälimuisteille raportointiajanjaksolla. | ||||||||||
repliesFromPeerToChild | Vastausten määrä, jonka sisältövälimuisti vastaanotti kumppanisisältövälimuisteista ja tarjosi jälkeläissisältövälimuisteille raportointiajanjaksolla. | ||||||||||
repliesFromPeerToClient | Vastausten määrä, jonka sisältövälimuisti vastaanotti kumppanisisältövälimuisteista ja tarjosi asiakkaina oleville Apple-laitteille raportointiajanjaksolla. | ||||||||||
requestsFromChild | Latauspyyntöjen määrä, jonka sisältövälimuisti vastaanotti jälkeläissisältövälimuisteilta raportointiajanjaksolla. | ||||||||||
requestsFromClient | Latauspyyntöjen määrä, jonka sisältövälimuisti vastaanotti asiakkaina olevilta Apple-laitteilta raportointiajanjaksolla. | ||||||||||
requestsFromPeer | Latauspyyntöjen määrä, jonka sisältövälimuisti vastaanotti kumppanisisältövälimuisteilta raportointiajanjaksolla. | ||||||||||
requestsRejectedForNoSpace | Latauspyyntöjen määrä, jonka sisältövälimuisti hylkäsi raportointiajanjaksolla välimuistin suuren paineen vuoksi (HTTP-vastauskoodilla 503 ”Service Unavailable”). |
Tulosten ryhmittely
Sinulle voi olla hyötyä joidenkin yllä kerrottujen kohteiden ryhmittelemisestä yhteen. Tässä on muutamia ehdotuksia. Kaikki sisältö pohjautuu kokonaislukuihin.
Sisältö | Ryhmitellyt objektit | Kuvaus | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Asiakkaalle tarjotut tavut | Summa seuraavista: bytesFrom*ToClient | Datamäärä, jonka sisältövälimuisti tarjosi asiakkaina oleville Apple-laitteille kyseisellä raportointiajanjaksolla. | |||||||||
Edeltäjävälimuistista tarjotut tavut | Summa seuraavista: bytesFromParentTo* | Datamäärä, jonka sisältövälimuisti latasi miltä tahansa edeltäjäsisältövälimuistilta raportointiajanjaksolla. | |||||||||
Jälkeläisvälimuistille tarjotut tavut | Summa seuraavista: bytesFrom*ToChild | Datamäärä, jonka sisältövälimuisti tarjosi mille tahansa jälkeläissisältövälimuistille raportointiajanjaksolla. | |||||||||
Kumppanivälimuistille tarjotut tavut | Summa seuraavista: bytesFrom*ToPeer | Datamäärä, jonka sisältövälimuisti tarjosi mille tahansa kumppanisisältövälimuistille raportointiajanjaksolla. | |||||||||
Kumppanivälimuistista tarjotut tavut | Summa seuraavista: bytesFromPeerTo* | Datamäärä, jonka sisältövälimuisti latasi miltä tahansa kumppanisisältövälimuistilta raportointiajanjaksolla. | |||||||||
Ladatut tavut | bytesFrom <Origin,Parent,Peer>To | Datamäärä, jonka sisältövälimuisti latasi joko internetistä tai kumppaneilta tai edeltäjiltä raportointiajanjaksolla. | |||||||||
Lähetetyt tavut | Summa seuraavista: bytesImportedBy* | Sisältövälimuistin kautta lähetetty datamäärä raportointiajanjaksolla. | |||||||||
Lähteestä tarjotut tavut | Summa seuraavista: bytesFromOriginTo* | Datamäärä, jonka sisältövälimuisti latasi internetistä raportointiajanjaksolla. | |||||||||
Tavuja tarjottu | Kokonaisdatamäärä, jonka sisältövälimuisti tarjosi raportointiajanjaksolla. Kun tämä arvo ei ole nolla, sisältövälimuisti toimii. | Summa seuraavista: bytesFrom*To* | |||||||||
Välimuistista tarjotut tavut | Summa seuraavista: bytesFromCacheTo* | Datamäärä, jonka sisältövälimuisti tarjosi välimuististaan raportointiajanjaksolla. Mitä lähempänä tämä arvo on tarjottujen tavujen arvoa, sitä enemmän sisältövälimuisti on auttanut. |
Välimuistin paineen tietojen katsominen
Voit tarkistaa, kuinka pahasti välimuisti tarvitsi lisää tallennustilaa raportointiajanjaksolla. Alempi välimuistipaine on parempi.
Järjestelmän valvonta laskee välimuistin paineen seuraavasti:
100 %, kun requestsRejectedForNoSpace > 0
80 %, kun bytesPurgedYoungerThan1Day > 0
60 %, kun bytesPurgedYoungerThan7Days > 0
40 %, kun bytesPurgedYoungerThan30Days > 0
20 %, kun bytesPurgedTotal > 0
Muussa tapauksessa 0 %
Järjestelmän valvonta myös kokoaa yllä olevat kohteet seuraavasti esimerkiksi laskeakseen yhtä jaksoa pidemmän ajan arvot.
Tavumäärille, tuontimäärille, pyyntömäärille tai vastausmäärille lasketaan summa aikavälillä.
Välimuistin paineelle lasketaan suurin paine aikavälillä.
Koodiesimerkki mittaritietojen tietokannan lukemista varten
#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
}
}