Denektaşları

Denektaşı(sınama programı); Bilgisayar mimarisinde bir bileşenin başarımını, o bileşen üzerinde çeşitli sınamalar yaparak ölçmek için çalıştırılan bir veya bir grup bilgisayar programıdır. Denektaşları ile bilgisayarın bir donanımının karakteristik bir özelliğinin başarımının belirlenmesinde de kullanılır. Örneğin Merkezi İşlem Biriminin (MİB[CPU]) kayan nokta (floating point ) işlemlerindeki başarımını ölçmek için kullanılır. Ayrıca bazı durumlarda bu sınama yazılımların başarımı için de kullanılabilir. Yazılımlar için kullanılan denektaşlarına örnek olarak derleyiciler ya da veritabanı yönetim sistemlerinin başarımlarını ölçen programlar verilebilir.

Denektaşları farklı yonga veya sistem mimarilerinde çalışan alt sistemlerin başarımını karşılaştırmak için yöntemler geliştirmişlerdir. Denektaşları veritabanı yönetim programlarının değişken durumlardaki tepkilerinin anlaşılmasında yardımcı olurlar. Farklı durumlar için farklı senaryolar üretilerek de başarım ölçülebilir. Örneğin kilitlenme işlemleri, yardımcı programların başarımı, farklı veri yükleme yöntemleri, eklenen yeni kullanıcılarla program hızının değişiminin karakteristiğinin belirlenmesi ve programın yeni sürümünün çıkmasıyla gelen uygulamaların başarımının belirlenmesi için farklı senaryolar üretilerek denektaşlarının farklı özellikleri ya da farklı denektaşları kullanılabilir.

Denektaşları, gerçek donanım yerine yazılım üzerinde işlemci modelleyen bilgisayar mimarisi benzetimliklerinde ve mikromimari benzetiminde de iş yükü olarak kullanılır; SPEC CPU paketi bu amaçla en yaygın denektaşı kümelerinden biridir.

Amaç
Bilgisayar mimarisinde bilgisayarların başarımlarını sadece özelliklerine bakarak belirlemek imkânsızdır. Bu nedenle, farklı testler geliştirilmiştir. Bu testler farklı sistemlerde çalıştırılarak elde edilen sonuçlar farklı mimarilerin karşılaştırılmasında kullanılmaktadır. Örneğin Intel Pentium 4 işlemcilerin saat sıklığı AMD Athlon XP işlemcilerden daha fazla olmasına karşın bu daha yüksek bir başarıma sahip oldukları anlamına gelmemektedir. Denektaşları testlerinde iki işlemcinin de benzer başarım gösterdiği görülmüştür.

Denektaşları belirli bir sisteme ya da bileşene, belli bir tür iş yükü yükleyecek şekilde tasarlanırlar. “Yapay (Synthetic)” denektaşları bir bileşenin üzerine bu iş yükünü yüklemek için yazılan özel programlardır. “Uygulama(Application) tür denektaşları sistem üzerinde gerçek programlar çalıştırırlar. “Uygulama” türündeki denektaşları bir sistemin başarımı ölçümünde etkiliyken, “Yapay” denektaşları ise sistem bileşenlerinin (sabit tekerlek (sabit disk ), ağ aygıtları gibi ) tek başlarına başarımlarının ölçümünde etkilidirler.

Denektaşları özellikle yarı iletken mikroişlemcilerin tasarımında önemlidir. Denektaşları sayesinde tasarımcılar, mikro mimari düzeyinde aldıkları kararları ölçüp dengelerler.

Bilgisayar tasarımcılarının tasarladıkları sistemlerin başarımlarını ölçmek için denektaşlarını kullanması oldukça uzun bir geçmişe sahiptir. Ancak önceleri bu denektaşları testlerinin sonuçları gerçek kullanımla elde edilecek başarımdan farklıydı. 1980'lerde bazı derleyiciler bilinen kayan nokta işlemlerinde kullanılan özel bir matematik işlemini belirleyip daha hızlı olan matematiksel eşitlik işlemleriyle değiştiriyorlardı. Bu değişim 1990'lı yılların ortasına kadar denektaşları dışında kullanışlıydı. Ancak bu kullanışlılık RISC ve VLIW mimarilerinin tasarımcıları derleyici teknolojisinin başarımla ilgisini fark etmelerine kadar sürdü. Günümüzde denektaşları; derleyici şirketleri tarafından sadece kendi denektaşı sonuçlarını yükseltmek için değil, aynı zamanda tasarladıkları uygulamaların başarımlarını artırmak için de kullanılmaktadır.

Üreticiler çoğunlukla sadece denektaşlarını ya da denektaşlarının belirli yönlerini kullanarak ürünlerini en iyi şekilde tanıtmaya çalışırlar. Ayrıca bazıları bu denektaşlarının önemliklerini değiştirerek ürünlerini olabildiğince iyi şekilde göstermeye çalışırlar. Bu eylemlerin tamamına İngilizce bench-marketing adı verilir.

Karşılaşılan Zorluklar
Denektaşları kullanılarak yapılan kıyaslamalar kolay değildir. Beklenen ve kullanışlı sonuçlar elde edebilmek için tekrarlanan döngüler içerirler. Ayrıca denektaşlarının yorumlanması da oldukça zordur. Aşağıda genel olarak karşılaşılan bir takım zorluklar listelenmiştir:

Sağlayıcılar ürünlerini endüstriyel standartlı denektaşlarına göre ayarlamaları gerekmektedir. Norton SysInfo (SI) esas olarak çoklu işlemlerin hızlarına yöneliminden dolayı bu ayarlama biraz daha kolay yapılmaktadır. Bu tür sonuçların yorumlanmasında aşırı dikkat edilmesi gerekmektedir.
Denektaşları genellikle bileşenlerinin özelliklerinin ham başarısından başka şeylere itibar etmezler. Bu özelliklere örnek olarak güvenlik, kullanılabilirlik, güvenilirlik, uygulamaların çalışmasında bütünlük, yararlılık, ölçeklenirlik gibi özellikler gösterilebilir. Bu özelliklerin hepsi iş dünyasında hepsi önemlidir ve bunlar arasında denge kurulmaya çalışılmaktadır. TPC (Transaction Processing Performance Council) denektaşı şartnamesine göre bu işlem ACID özellik testi, veritabanı ölçeklenirlik kuralları ve servis seviye gereksinimi gibi işlemlerin yapılmasıyla belirlenir.
Genellikle denektaşları TCO yu(toplam sahiplik masrafı) ölçmezler. TPC denektaşı şartnamesine göre TCO'nun basit şekilde formüle edilmesi için ham başarım ölçüsünün belirlenmesi gerekir. Bunun için de eder/başarım ölçüsünün belirlenmesi gerekir.
Denektaşları karışık iş yüklerinin başarımını çoklu işlemleri tam, iş bağlamlı çoklu kısım/çoklu uygulama prensibiyle çalıştırarak ölçer. Ancak elde edilen sonuçlar nadiren gerçek dünyadaki başarımlarına eşdeğerdir.
Sağlayıcı denektaşlarının sonucunda bulunan geliştirme, test ya da yıkım onarımı(disaster recovery ) işlem kapasitesi gibi gereksinimlerle ilgilenmezler. Sağlayıcılar özellikle ilk kazanım ederini olabildiğince az göstermek için gerekli en düşük ürün kapasitesini belirtmek isterler.
Denektaşları üretilmiş farklı sunucular ve aşırı hassas ağ ilingelerine (topolojilerine) uyum sağlamakta sorun yaşamaktadırlar. Izgara hesaplamanın(grid computing ) ortaya çıkması denektaşı sınamasının yapılmasını kısmen zorlaştırmıştır.
Kullanıcıların denektaşlarının önerdiği başarımlarda farklı şeyler anlaması olasıdır. Denektaşları ufak sapmalarndan çok ortalama başarımlara önem vermelidir. Yani kullanıcı bakış açısından çok bilimsel bakış açısı göz önüne alınmalıdır.
Denektaşı kurumları çoğunlukla basit bilimsel metotları izlemezler. Bu da beraberinde küçük örnekleme boyutu, değişken kontrolünde zorlaşma, sonuçların tekrarlanmasında kısıtlama gibi sonuçların ortaya çıkmasına sebep olmaktadır.

Benchmark Türleri
Gerçek Programlar
Kelime işleme yazılımları
CDA yazılım araçları
Kullanıcı uygulama yazılımları (MIS)
Çekirdek (Kernel)
Anahtar kodları içerir
Gerçek bir programdan alınmış olabilir
Gözde çekirdek: Livermore döngüsü
linpack denektaşları (FORTRAN dilinde yazılmış basit doğrusal cebir alt programlarını içerir )
Sonuçlar MFLOPS olarak gösterilir.
Oyun Denektaşları / mikro denektaşları
Kullanıcı kendisi programlayarak bilgisayarın basit birleşenlerini sınayabilir.
Bilgisayarın donanım özelliklerini (yazmaç sayısı, önbellek boyutu, bellek gecikme süresi vb.) otomatik olarak belirlenir.
Yapay Denektaşları
Yapay denektaşlarının programlanma aşamaları
Farklı türdeki uygulamalardan farklı işlemler için veriler alınır.
İşlemlerin oranlanması
Belirlenen oranlara göre bir programın yazılması
Yapay Denektaşlarının türleri:
Whetstone (Bileğitaşı)
Dhrystone
Sonuçları KWIPS (saniye başına kilo whetstone komutları) şeklinde belirtilir. Bu tür sınama boru hattı (bilgisayar) içeren bilgisayarlar için kullanıma uygun değildir.
Giriş/Çıkış Denektaşları
Paralel denektaşları: çoklu işlemci içeren makinelar ya da çoklu makine içeren sistemlerde kullanılır.

Yaygın Denektaşları
Endüstri Standartlı (Onaylanmış)
Java Micro Benchmark
Standard Performance Evaluation Corporation(SPEC)
Transaction Processing Performance Council (TPC )
BAPCo (Windows kişisel bilgisayarları için denektaşları üreten bir endüstriyel birliktir.)
Synchromesh Computing denektaşı sınamaları
Gömülü Mikroişlemciler Denektaşı Birliği (Embedded Microprocessor Benchmark Consortium (EEMBC) )

Diğer
Khornerstone
Aquamark
GL Excess
BRL-CAD Denektaşı

Açık Kaynaklı Denektaşları
miniBench : C++ dilinde yazılmış kapsamlı bir komut satırı denektaşıdır. miniBench 90 farklı sınama içermektedir. miniBench OpenSourceMark'ın bir koludur.
TPoX: XML veritabanları için bir XML hareket işleme denektaşıdır.
Dhrystone: tam sayı aritmetik başarımı.
Fhourstones: bir tam sayı denektaşı.
Whetstone: kayan nokta işlemlerinin aritmetik başarımı
ApFloat: kayan nokta işlemleri.
Linpack / LAPACK
OpenSourceMark : Delphi dilinde yazılan güçlü, kapsamlı bir grup açık kaynaklı sistem denektaşları ve altyapı hizmetleridir. OpenSourceMark kullanımı kolay olan bir grafiksel kullanıcı arayüzüne ve esnek bir sonuç gösterim yapısına sahiptir.
GliBench : MİB ve sabit tekerlek (sabit disk) başarımını ölçmek için kullanılan grafiksel kullanıcı arayüzü tabanlı denektaşlarıdır.
MemPerf: bellek bant genişliği
LLCBench: önbellek, MPI(ileti geçiş arayüzü), v.b için geliştirilmiş bir grup denektaşıdır.
LMbench : İşletim sistemi ve bir takım MİB/ Bellek değiştirgeleri için geliştirilmiş bir takım basit, taşınabilir denektaşlarıdır.
Calibrator : C programlama dilinde yazılmış bir küçük önbellek ve Adres Dönüştürme Önbelleği (ADÖ)(TLB(Translation Lookaside Buffer) ) ayarlama aracıdır. Sonuçlar önbellek boyutu, bulma/bulamama gecikmesi, ADÖ girdileri, sayfa boyutu, bulamama cezası, bellek erişim gecikmesi gibi bilgileri içerir. gnuplot scriptleri ayrıca sonuçları grafiksel olarak da gösterirler.
X-Ray Bellek sıradüzen değiştirgelerini otomatik olarak ölçer.
Ubench : MIB(CPU) ve belleği sınamak için kullanılan Unix Denektaşı
NAS paralel denektaşları
PAL: Gerçek zamanlı fizik motorları için geliştirilmiş bir denektaşıdır.
Povray: 3 boyutlu sınama.
SPLASH: Stanford Parallel Applications for Shared Memory(Paylaşımlı Bellekler için Stanford Paralel Uygulamaları) (SPLASH)
Iometer: Kümeli ya da tek sistemler için G/Ç alt sistem ölçüm ve tanımla aracıdır.
Iozone file I/O : Bir dosya sistemi denektaşıdır. Birçok farklı türde dosya işlemini üretir ve ölçer.
Bonnie++: Dosya giriş çıkışı
netperf: Bir ağda üretilen işi ve gecikme zamanını ölçmek için kullanılan bir denektaşıdır.
GENESIS dağıtımlı bellek denektaşı takımı.
HINT: Bir bilgisayar sistemini bütün olarak değerlendirir.
Himeno Benchmark
STREAM : Basit vektör çekirdeklerinin hesaplama hızına bağlı olarak sürdürülebilir bellek bant genişliğini ölçmek için kullanılır.
SKaMPI: MPI(ileti geçiş arayüzü) başarımını ölçmek için tasarlanmış bir grup testten oluşur.
GL O.B.S. : OpenGL açık denektaşı takımı.
MediaBench : Çoklu ortam sistemleri için geliştirilmiş bir denektaşı takımıdır.
VMmark, VMware'den çıkartılmış bir sanal sunucu denektaşı takımıdır.

Microsoft Windows Denektaşları
Java Micro Benchmark
OpenSourceMark : Delphi dilinde yazılan güçlü, kapsamlı bir grup açık kaynaklı sistem denektaşları ve altyapı hizmetleridir. OpenSourceMark kullanımı kolay olan bir arayüze ve esnek bir sonuç gösterim yapısına sahiptir.
miniBench : C++ dilinde yazılmış kapsamlı bir komut satırı denektaşıdır. miniBench 90 farklı test içermektedir. miniBench OpenSourceMark'ın bir koludur.
PassMark Yazılımı: Başarım testi (32-bit or 64-bit)
Lavalys EVEREST
SiSoftware Sandra
Futuremark:3DMark, PCMark, SPMark
BAPCo: Mobilemark, SYSmark, Webmark
BYTEmark denektaşı takımı
REALiX HWiFO32
DocMemory tanı yazılımı
CD Speed 99
CPUmark
CPU-Z
InfoTool
WinBench 99
CPU Rightmark
Whetstone
PiFast
Super PI
Maxon:Cinebench
Primate Labs:Geekbench

Mac OS X Denektaşları
Java Micro Benchmark
Spiny:Xbench
Maxon:Cinebench
Primate Labs:Geekbench

Primate Denektaşları
Java Micro Benchmark
JatMark Başarım Denektaşı

Gömülü Sistem Denektaşları
Aşağıdaki denektaşları [ EEMBC (Embedded Microprocessor Benchmark Consortium)] tarafından özellikle gömülü sistemler ve tüketici araçları için tasarlanmıştır.
AutoBench
ConsumerBench
DENBench
GrinderBench (Java)
Networking
OABench
StorageBench
TeleBench

Kitaplar
Aşağıda denektaşları ile ilgili İngilizce kitaplar yer almaktadır.

Jim Gray (Editor), The Benchmark Handbook for Database and Transaction Systems (2nd Edition), Morgan Kaufmann, 1993, ISBN 1-55860-292-5

Database Benchmarking Practical Methods for Oracle & SQL Server Dr. Bert Scalzo, Kevin Kline, Claudia Fernandez, Donald K. Burleson, Mike Ault, 2007, ISBN 0-9776715-3-4

Ayrıca bakınız
SPEC
Bilgisayar mimarisi benzetimliği
Mikromimari benzetimi

Aşağıdaki bağlantılarda denektaşları ile ilgili İngilizce bilgiler yer almaktadır.
Benchmarks
Benchmarking (Ticari Yönden)

Dış bağlantılar
[news:comp.benchmarks benchmark newsgroup]
benchmark webpage
CPU benchmark database
3DMark06, 3DMark05, 3DMark03, 3DMark01, Aquamark and Super PI benchmark database
Linux benchmark suite
Open source benchmark programs
Research frontier of performance and benchmarks