2009-05-28 33 views
5

Kullanılan bellek (RAM) bant genişliğini nasıl hesaplarsınız? Hangi performans sayaçları gereklidir?Bellek Bant Genişliği Kullanımı

Bunu yapabilen bir araçla karşılaştım, "Rightmark çok iş parçacıklı bellek testi". Ancak, Rightmark'ın testlerinin geri kalanından farklı olarak, bunun için kaynak kodunu bulamadım, sadece ikili dosyalar

+0

Bu neden C#, C++ ve c olarak etiketlenmiştir? – unwind

cevap

1

Bellek bant genişliği kullanımını 'hesaplamak' çok zordur. Önlemek için bir sürü önemsiz önbellek ve MMU sorunları vardır. Bunu yapmanın tek gerçek yolu, ya simülasyon ya da gerçek dünya ölçümlerinin kullanılmasıdır.

Kodun hata ayıklanması ve bellek yükünün sayılması ve gerçekleştirilen işlemlerin saklanmasıyla 'kaba' bir fikir alabilirsiniz. Ancak, bir önbellek hit/miss olup olmadığını bilmek başka bir konudur.

Amacınıza göre değişir. Bir tahminde bulunmaksa, genel amaçlı kodun yaklaşık% 30'unun hafıza yükleri ve depolar olduğu kural kuralını kullanabilirsiniz. En kötü durumlara sahip olmaya çalışıyorsanız, önbelleklerin her zaman özlediğini ve çalışabildiğini varsayabilirsiniz.

Yapabilecekleriniz potansiyel bir şey sanallaştırmaya bakmaktır. Birkaç açık kaynak seçeneği vardır (QEMU akla gelir). Bazı donanım ölçümlerini bunlardan vermek mümkün olabilir.

1

MSDN Dergisi'nin Haziran sayısında yer alan CLR Inside Out makalesi, .NET uygulamalarında bellek kullanımını görüntülemeyle ilgilidir. kodunuzu Linux üzerinde çalışabilir Eğer

http://msdn.microsoft.com/en-us/magazine/dd882521.aspx

+1

Ancak soru, bellek tüketimi değil,/bandwidth/(veri aktarım hızı anlamında) idi. – Frank

1

, Cachegrind kullanın:

Cachegrind bir önbellek profilci olduğunu. , CPU'nuzdaki I1, D1 ve L2 önbelleklerinin ayrıntılı simülasyonunu gerçekleştirir ve kodunuzdaki önbellek özniteliklerinin kaynaklarını doğru bir şekilde saptayabilmesi için . , her kaynak kodu satırı için bellek başvuruları ve bellek referansları ve yönergeleri için, işlev başına, modül başına ve tüm program özetleriyle çalıştırılan önbellek özniteliklerinin sayısını tanımlar. Herhangi bir dilde yazılmış programlarla yararlıdır. Önbellek, yaklaşık 20--100x normalden daha yavaş programları çalıştırır.

KCacheGrind GUI'u kullanmak isteyebilirsiniz.

İlgili konular