Spekülatif hafızanın amacı nedir?


0

Son zamanlarda, Darwin'in olduğunu öğrendim. speculative bellek ölçütü. Ancak, spekülatif belleğin amacının ne olduğunu bilmiyorum. Hafıza ölçümü kullanılarak kontrol edilebilir vm_stat terminalde komut.

Mach Virtual Memory Statistics: (page size of 4096 bytes)
Pages free:                              334212.
Pages active:                           1450252.
Pages inactive:                         1367584.
Pages speculative:                        81968.
Pages throttled:                              0.
Pages wired down:                        794478.
Pages purgeable:                         377078.
"Translation faults":                1584392481.
Pages copy-on-write:                  316685071.
Pages zero filled:                    358257445.
Pages reactivated:                      9976919.
Pages purged:                           2557552.
File-backed pages:                       597869.
Anonymous pages:                        2301935.
Pages stored in compressor:             1170377.
Pages occupied by compressor:            165553.
Decompressions:                         7496783.
Compressions:                          14958548.
Pageins:                               29715699.
Pageouts:                               1058099.
Swapins:                                6422438.
Swapouts:                               7169648.

Darwin kaynağına bakın, speculative Spesifik olarak diskten okunan sayfaları tutmak için kullanılır. ve hafıza ölçümü free sayfalar ve henüz kullanılmamış .

Hakkında hiçbir bilgi bulamıyorum speculative İnternetteki hafıza. Hafızanın resmi bir darwin hafıza ölçütü olması çok garip, ancak kimse bunu söylemiyor.

Herhangi bir amaç için kullanılmadığı sürece bu metriğin amacı nedir?

Yanıtlar:


0

Spekülatif hafıza (OS X 10.5 ile birlikte verilir), çekirdeğin belirli bir hafıza sayfasını "spekülatif" olarak işaretlediği anlamına gelir - bu, çekirdek tarafından saklandığı anlamına gelir; henüz olmadı. Yani çekirdek, şimdi bir şeyi okumanın daha sonra fayda sağlayacağını düşünüyor.

Uygulamada bu, macOS çekirdeği (uygulama istekleri nedeniyle) bir disk sürücüsünden sıralı bir şekilde okuduğunu tespit ettiğinde ortaya çıkar. Örneğin, bir uygulama blok numarası 1, 2 ve 3'ü okursa - okunacak bir sonraki bloğun sayı 4 olması ihtimalinin yüksek olduğunu varsaymak adil olur. Olmayabilir, ancak gerçekleşmesi muhtemeldir.

Çekirdeğin bunu algılamaya çalışmasının nedeni, birçok durumda diskten daha büyük bloklar halinde okumanın ve / veya aynı anda birçok blok için sürücüye birden fazla istek göndermenin "daha ucuz" olmasıdır. bir defada bir tane vermek yerine. Ayrıca, çekirdeğin uygulamadan başka bir şey yapmakla meşgul olduğu halde henüz blok istemediği halde, diskten blok istemek de mümkündür.

Spekülatif sayfaların arkasındaki fikir, diskte "önceden satın almak" veya "önceden okumak" ve bunları bellekte saklamaktır, böylece uygulama daha sonra verileri istediğinde, çok hızlı bir şekilde sağlanabilir. Mevcut macOS çekirdeği, normal sabit disk sürücüleri ve SSD sürücüleri için, bir ön eklemenin ne zaman tetiklendiği ve bir seferde ne kadar ön ayar yapıldığı açısından farklı optimizasyonlara sahiptir.

Çekirdek, bu sayfaları normal disk önbelleklemeden farklı "spekülatif" olarak işaretler, çünkü bunun henüz talep edilmemiş veriler üzerinde bir performans optimizasyonu olduğunu bilir. Bu yüzden, bilgisayar başka amaçlar için hafızaya sahip değilse, spekülatif sayfalar hiç de az veya hiç performans cezası olmadan fırlatılabilir.

Uygulamada, çekirdek verilerdeki spekülatif sayfalara okur ve onu "baskı altında" korumalı olarak işaretler, bu da hafıza baskısı altında kolayca atılmayacağı anlamına gelir. Spekülatif sayfalar yaşlandıkça (yani zaman geçtikçe), eski sayfaların bir arada depolanması için "bin kutusundan" taşınırlar. Belli bir yaşa ulaştıklarında artık korunmazlar - ve başka amaçlar için hafızaya ihtiyaç duyulursa kolayca atılabilirler.

Bununla birlikte, eğer bir uygulama spekülatif sayfalara konan verileri gerçekten kullanıyorsa, hemen spekülatif olmadığı hemen dikkate alınır ve ilgili diğer kategorilerden birine konur.

İsterseniz, spekülatif sayfaları sysctl ile spekülatif_reads_disabled 1 olarak ayarlayarak tamamen devre dışı bırakabilirsiniz.

Spekülatif sayfalar için istatistiklerin ayrı olarak yapılmasının nedeni, boş sayfalarla veya normal disk önbelleğiyle birlikte toplanmamasını sağlamaktır; bu, spekülasyonun makinenizde gerçekten kullanılıp kullanılmadığını ve bunun ne kadarının kullanıldığını ölçmek için kullanabilirsiniz. Aslında uygulamalar tarafından ne kadar hafıza kullanıldığı hakkında daha iyi fikir - ve sadece performans için optimize etmeye çalışan çekirdek tarafından değil.


Cevabınız metriği anlamakta gerçekten yardımcı olacaktır. Bir şey daha, spekülatif metriğin rolünü ve anlamını nasıl keşfettiniz? Belge ve site bulamadım. Bellek ölçümü hakkındaki bilgileri nasıl bulduğunuzu bana bildirir misiniz?
mznet07

Arka plan bilgisini CS derecemden birleştirdim ve Darwin kaynak kodunu okurken diğer işletim sistemleriyle birlikte çalıştım.
jksoegaard
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.