مقاييس التخزين المؤقت للمحتوى على Mac
يقوم التخزين المؤقت للمحتوى بتخزين قياسات في المجلد الآتي:
/Library/Application Support/Apple/AssetCache/Metrics.
لا تنتقل المقاييس مع المحتوى المخزن مؤقتًا؛ بدلاً من ذلك، يتم تخزينها دائمًا في هذا الموقع. على سبيل المثال، إذا نقلت ذاكرة التخزين المؤقت من:
/Library/Application Support/Apple/AssetCache/Data
إلى
/Volumes/Data/Library/Application Support/Apple/AssetCache/Data
تظل المقاييس مُخزَّنة في
/Library/Application Support/Apple/AssetCache/Metrics
إذا استُخدم التخزين المؤقت للمحتوى على Mac من قَبل، فإن هذا المجلد يحتوي على ملف باسم Metrics.db، وقد يحتوي على ملف أو أكثر بأسماء مشابهة. تشكل هذه الملفات قاعدة بيانات SQLite التي يمكنك قراءتها.
يتوفر نموذج كائن CoreData الذي يصف المقاييس ككيان "Metric" في /usr/libexec/AssetCache/AssetCache.momd.
ملاحظة: على الرغم من أن هذا هو وصف لنموذج الإصدار 7 هنا، فقد تقوم Apple بتغيير هذا النموذج - أو تستخدم قاعدة بيانات أخرى غير SQLite - في الإصدارات المستقبلية من macOS دون إشعار. قد يتطلب هذا إجراء تحديثات لأي برامج نصية قمت بتكوينها لتجميع بيانات محتوى التخزين المؤقت.
ذاكرة التخزين المؤقت للمحتوى:
تضيف صفًا جديدًا إلى قاعدة البيانات كل دقيقة أثناء تشغيلها
لا تُضيف صفوف "كل الأصفار" عند خمولها؛ ولكنها ببساطة تتخطى إضافة مثل هذه الصفوف
لا تُعدّل الصفوف الموجودة
تحذف الصفوف بشكل دوري عندما يكون عمرها أكثر من 30 يومًا
تلميح: يمكنك تغيير الفترة الزمنية لإعداد التقارير من 60 ثانية عن طريق تغيير الإعداد المتقدم MetricsInterval
، ويمكنك تغيير الحد الأقصى لعمر الصفوف المُخزَّنة من 30 يومًا عن طريق تغيير الإعداد المتقدم MetricsMaxAge
.
يحتوي كل صف في قاعدة البيانات على الأعمدة التالية. يُعد كل عنصر اختياريًا باستثناء creationDate
.
الكائن | Description | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
bytesDropped | مقدار البيانات التي نزّلتها ذاكرة التخزين المؤقت للمحتوى خلال فترة إعداد التقرير ولم تستطع إضافتها إلى ذاكرة التخزين المؤقت الخاصة بها. | ||||||||||
bytesFromCacheToChild | مقدار البيانات التي تعرضها ذاكرة التخزين المؤقت للمحتوى من ذاكرة التخزين المؤقت الخاصة بها إلى ذاكرات التخزين المؤقت للمحتوى الفرعية أثناء فترة إعداد التقارير. | ||||||||||
bytesFromCacheToClient | مقدار البيانات التي تعرضها ذاكرة التخزين المؤقت للمحتوى من ذاكرة التخزين المؤقت الخاصة بها إلى أجهزة Apple الخاصة بالعملاء أثناء فترة إعداد التقارير. | ||||||||||
bytesFromCacheToPeer | مقدار البيانات التي تعرضها ذاكرة التخزين المؤقت للمحتوى من ذاكرة التخزين المؤقت الخاصة بها إلى ذاكرات التخزين المؤقت للمحتوى النظيرة أثناء فترة إعداد التقارير. | ||||||||||
bytesFromOriginToChild | مقدار البيانات التي نزّلتها ذاكرة التخزين المؤقت للمحتوى عبر الإنترنت وقدّمتها إلى ذاكرات التخزين المؤقت للمحتوى الفرعية أثناء فترة إعداد التقارير. | ||||||||||
bytesFromOriginToClient | مقدار البيانات التي نزّلتها ذاكرة التخزين المؤقت للمحتوى عبر الإنترنت وقدّمتها إلى أجهزة Apple الخاصة بالعملاء أثناء فترة إعداد التقارير. | ||||||||||
bytesFromOriginToPeer | مقدار البيانات التي نزّلتها ذاكرة التخزين المؤقت للمحتوى عبر الإنترنت وقدّمتها إلى ذاكرات التخزين المؤقت للمحتوى النظيرة أثناء فترة إعداد التقارير. | ||||||||||
bytesFromParentToChild | مقدار البيانات التي نزّلتها ذاكرة التخزين المؤقت للمحتوى من ذاكرات التخزين المؤقت للمحتوى الأصلية وقدّمتها إلى ذاكرات التخزين المؤقت للمحتوى الفرعية أثناء فترة إعداد التقارير. | ||||||||||
bytesFromParentToClient | مقدار البيانات التي نزّلتها ذاكرة التخزين المؤقت للمحتوى من ذاكرات التخزين المؤقت للمحتوى الأصلية وقدّمتها إلى أجهزة Apple الخاصة بالعملاء أثناء فترة إعداد التقارير. | ||||||||||
bytesFromParentToPeer | مقدار البيانات التي نزّلتها ذاكرة التخزين المؤقت للمحتوى من ذاكرات التخزين المؤقت للمحتوى الأصلية وقدّمتها إلى ذاكرات التخزين المؤقت للمحتوى النظيرة أثناء فترة إعداد التقارير. | ||||||||||
bytesFromPeerToChild | مقدار البيانات التي استلمتها ذاكرة التخزين المؤقت للمحتوى من ذاكرات التخزين المؤقت للمحتوى النظيرة وقدّمتها إلى ذاكرات التخزين المؤقت للمحتوى الفرعية أثناء فترة إعداد التقارير. | ||||||||||
bytesFromPeerToClient | مقدار البيانات التي استلمتها ذاكرة التخزين المؤقت للمحتوى من ذاكرات التخزين المؤقت للمحتوى النظيرة وقدّمتها إلى أجهزة Apple الخاصة بالعملاء أثناء فترة إعداد التقارير. | ||||||||||
bytesImportedByHTTP | مقدار البيانات التي استلمتها ذاكرة التخزين المؤقت للمحتوى عبر HTTP أثناء فترة إعداد التقارير. | ||||||||||
bytesImportedByXPC | مقدار البيانات التي استلمتها ذاكرة التخزين المؤقت للمحتوى عبر XPC أثناء فترة إعداد التقارير. | ||||||||||
bytesPurgedTotal | مقدار البيانات التي أزالتها ذاكرة التخزين المؤقت للمحتوى من ذاكرة التخزين المؤقت الخاصة بها أثناء فترة إعداد التقارير. ويتضمن bytesPurgedYoungerThan30Days. | ||||||||||
bytesPurgedYoungerThan1Day | مقدار البيانات التي أزالتها ذاكرة التخزين المؤقت للمحتوى من ذاكرة التخزين المؤقت الخاصة بها أثناء فترة إعداد التقارير، والتي أضافتها إلى ذاكرة التخزين المؤقت منذ أقل من يوم واحد. | ||||||||||
bytesPurgedYoungerThan30Days | مقدار البيانات التي أزالتها ذاكرة التخزين المؤقت للمحتوى من ذاكرة التخزين المؤقت الخاصة بها أثناء فترة إعداد التقارير، والتي أضافتها إلى ذاكرة التخزين المؤقت منذ أقل من 30 يومًا. ويتضمن bytesPurgedYoungerThan7Days. | ||||||||||
bytesPurgedYoungerThan7Days | مقدار البيانات التي أزالتها ذاكرة التخزين المؤقت للمحتوى من ذاكرة التخزين المؤقت الخاصة بها أثناء فترة إعداد التقارير، والتي أضافتها إلى ذاكرة التخزين المؤقت منذ أقل من 7 أيام. ويتضمن bytesPurgedYoungerThan1Day. | ||||||||||
creationDate | تاريخ جمع كائن المقاييس هذا. يصف عنصر المقاييس هذا أداء ذاكرة التخزين المؤقت للمحتوى خلال الفترة المنتهية في تاريخ creationDate. | ||||||||||
importsByHTTP | عدد طلبات التحميل التي استلمتها ذاكرة التخزين المؤقت للمحتوى عبر HTTP أثناء فترة إعداد التقارير. | ||||||||||
importsByXPC | عدد طلبات التحميل التي استلمتها ذاكرة التخزين المؤقت للمحتوى عبر XPC أثناء فترة إعداد التقارير. | ||||||||||
period | المدة، بالثواني، المحددة لفترة إعداد التقارير المنتهية في تاريخ creationDate. | ||||||||||
repliesFromCacheToChild | عدد الردود التي تعرضها ذاكرة التخزين المؤقت للمحتوى من ذاكرة التخزين المؤقت الخاصة بها إلى ذاكرات التخزين المؤقت للمحتوى الفرعية أثناء فترة إعداد التقارير. | ||||||||||
repliesFromCacheToClient | عدد الردود التي تعرضها ذاكرة التخزين المؤقت للمحتوى من ذاكرة التخزين المؤقت الخاصة بها إلى أجهزة Apple الخاصة بالعملاء أثناء فترة إعداد التقارير. | ||||||||||
repliesFromCacheToPeer | عدد الردود التي تعرضها ذاكرة التخزين المؤقت للمحتوى من ذاكرة التخزين المؤقت الخاصة بها إلى ذاكرات التخزين المؤقت للمحتوى النظيرة أثناء فترة إعداد التقارير. | ||||||||||
repliesFromOriginToChild | عدد الردود التي نزّلتها ذاكرة التخزين المؤقت للمحتوى عبر الإنترنت وقدّمتها إلى ذاكرات التخزين المؤقت للمحتوى الفرعية أثناء فترة إعداد التقارير. | ||||||||||
repliesFromOriginToClient | عدد الردود التي نزّلتها ذاكرة التخزين المؤقت للمحتوى عبر الإنترنت وقدّمتها إلى أجهزة Apple الخاصة بالعملاء أثناء فترة إعداد التقارير. | ||||||||||
repliesFromOriginToPeer | عدد الردود التي نزّلتها ذاكرة التخزين المؤقت للمحتوى عبر الإنترنت وقدّمتها إلى ذاكرات التخزين المؤقت للمحتوى النظيرة أثناء فترة إعداد التقارير. | ||||||||||
repliesFromParentToChild | عدد الردود التي نزّلتها ذاكرة التخزين المؤقت للمحتوى من ذاكرات التخزين المؤقت للمحتوى الأصلية وقدّمتها إلى ذاكرات التخزين المؤقت للمحتوى الفرعية أثناء فترة إعداد التقارير. | ||||||||||
repliesFromParentToClient | عدد الردود التي نزّلتها ذاكرة التخزين المؤقت للمحتوى من ذاكرات التخزين المؤقت للمحتوى الأصلية وقدّمتها إلى أجهزة Apple الخاصة بالعملاء أثناء فترة إعداد التقارير. | ||||||||||
repliesFromParentToPeer | عدد الردود التي نزّلتها ذاكرة التخزين المؤقت للمحتوى من ذاكرات التخزين المؤقت للمحتوى الأصلية وقدّمتها إلى ذاكرات التخزين المؤقت للمحتوى النظيرة أثناء فترة إعداد التقارير. | ||||||||||
repliesFromPeerToChild | عدد الردود التي استلمتها ذاكرة التخزين المؤقت للمحتوى من ذاكرات التخزين المؤقت للمحتوى النظيرة وقدّمتها إلى ذاكرات التخزين المؤقت للمحتوى الفرعية أثناء فترة إعداد التقارير. | ||||||||||
repliesFromPeerToClient | عدد الردود التي استلمتها ذاكرة التخزين المؤقت للمحتوى من ذاكرات التخزين المؤقت للمحتوى النظيرة وقدّمتها إلى أجهزة Apple الخاصة بالعملاء أثناء فترة إعداد التقارير. | ||||||||||
requestsFromChild | عدد طلبات التنزيل التي استلمتها ذاكرة التخزين المؤقت للمحتوى من ذاكرات التخزين المؤقت للمحتوى الفرعية أثناء فترة إعداد التقارير. | ||||||||||
requestsFromClient | عدد طلبات التنزيل التي استلمتها ذاكرة التخزين المؤقت للمحتوى من أجهزة Apple الخاصة بالعملاء أثناء فترة إعداد التقارير. | ||||||||||
requestsFromPeer | عدد طلبات التنزيل التي استلمتها ذاكرة التخزين المؤقت للمحتوى من ذاكرات التخزين المؤقت للمحتوى النظيرة أثناء فترة إعداد التقارير. | ||||||||||
requestsRejectedForNoSpace | عدد طلبات التنزيل التي رفضتها ذاكرة التخزين المؤقت للمحتوى أثناء فترة إعداد التقارير بسبب زيادة الضغط على ذاكرة التخزين المؤقت (مع استجابة HTTP برمز 503، الخدمة غير متوفرة). |
تجميع النتائج
قد تجد أنه من المفيد تجميع بعض العناصر المذكورة أعلاه معًا. وهذه بعض الاقتراحات. يعتمد كل المحتوى على عدد صحيح.
المحتوى | الكائنات المُجمَّعة | Description | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
وحدات البايت التي تم تحميلها | مجموع bytesImportedBy* | مقدار البيانات التي تم تحميلها من خلال ذاكرة التخزين المؤقت للمحتوى أثناء فترة إعداد التقارير. | |||||||||
وحدات البايت التي تم تنزيلها | bytesFrom <Origin,Parent,Peer>To | مقدار البيانات التي نزّلتها ذاكرة التخزين المؤقت للمحتوى إما عبر الإنترنت أو من النظراء أو الأصول خلال فترة إعداد التقارير. | |||||||||
وحدات البايت المعروضة | إجمالي مقدار البيانات التي عرضتها ذاكرة التخزين المؤقت للمحتوى خلال فترة إعداد التقارير. تعمل ذاكرة التخزين المؤقت للمحتوى عندما تكون هذه القيمة غير صفرية. | مجموع bytesFrom*To* | |||||||||
وحدات البايت المعروضة إلى العميل | مجموع bytesFrom*ToClient | مقدار البيانات التي تعرضها ذاكرة التخزين المؤقت للمحتوى إلى أجهزة Apple الخاصة بالعملاء أثناء فترة إعداد التقارير. | |||||||||
وحدات البايت المعروضة إلى الفرع | مجموع bytesFrom*ToChild | مقدار البيانات التي تعرضها ذاكرة التخزين المؤقت للمحتوى لأي ذاكرة من ذاكرات التخزين المؤقت للمحتوى الفرعية أثناء فترة إعداد التقارير. | |||||||||
وحدات البايت المعروضة إلى النظير | مجموع bytesFrom*ToPeer | مقدار البيانات التي عرضتها ذاكرة التخزين المؤقت للمحتوى لأي ذاكرة من ذاكرات التخزين المؤقت للمحتوى النظيرة أثناء فترة إعداد التقارير. | |||||||||
وحدات البايت المعروضة من الأصل | مجموع bytesFromParentTo* | مقدار البيانات التي نزّلتها ذاكرة التخزين المؤقت للمحتوى من أي ذاكرة ضمن ذاكرات التخزين المؤقت الأصلية الخاصة بها أثناء فترة إعداد التقارير. | |||||||||
وحدات البايت المعروضة من المنشأ | مجموع bytesFromOriginTo* | مقدار البيانات التي نزّلتها ذاكرة التخزين المؤقت للمحتوى عبر الإنترنت أثناء فترة إعداد التقارير. | |||||||||
وحدات البايت المعروضة من النظير | مجموع bytesFromPeerTo* | مقدار البيانات التي نزّلتها ذاكرة التخزين المؤقت للمحتوى من أي ذاكرة ضمن ذاكرات التخزين المؤقت النظيرة الخاصة بها أثناء فترة إعداد التقارير. | |||||||||
وحدات البايت المعروضة من ذاكرة التخزين المؤقت | مجموع bytesFromCacheTo* | مقدار البيانات التي عرضتها ذاكرة التخزين المؤقت للمحتوى من ذاكرة التخزين المؤقت الخاصة بها أثناء فترة إعداد التقارير. كلما كانت هذه القيمة أقرب إلى قيمة وحدات البايت المعروضة، زادت مساعدة ذاكرة التخزين المؤقت للمحتوى. |
الحصول على بيانات ضغط ذاكرة التخزين المؤقت
يمكنك مراجعة مدى احتياج ذاكرة التخزين المؤقت للمحتوى المُلحّة إلى مزيد من مساحة التخزين خلال فترة إعداد التقارير. وكلما قلّ ضغط ذاكرة التخزين المؤقت كان أفضل.
يحسب مراقب النشاط ضغط ذاكرة التخزين المؤقت على النحو التالي:
100% عندما تكون قيمة requestsRejectedForNoSpace أكبر من 0
80% عندما تكون قيمة bytesPurgedYoungerThan1Day أكبر من 0
60% عندما تكون قيمة bytesPurgedYoungerThan7Days أكبر من 0
40% عندما تكون قيمة bytesPurgedYoungerThan30Days أكبر من 0
20% عندما تكون قيمة when bytesPurgedTotal أكبر من 0
0% لأي حالة أخرى
يجمع مراقب النشاط أيضًا العناصر المذكورة أعلاه على النحو التالي، على سبيل المثال لحساب القيم على مدى فاصل زمني أطول من فترة واحدة.
بالنسبة إلى أعداد وحدات البايت أو أعداد عمليات الاستيراد أو أعداد الطلبات أو أعداد الاستجابات، فإنه يجمعها على مدار الفاصل الزمني.
بالنسبة إلى ضغط ذاكرة التخزين المؤقت، فإنه يحسب الحد الأقصى على مدار الفاصل الزمني.
نموذج التعليمات البرمجية لقراءة قاعدة بيانات المقاييس
#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
}
}