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ı veri tabanı 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.

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.https://web.archive.org/web/20080205031133/http://www.donutey.com/hardwaretesting.php

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ı, ön bellek 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 veri tabanları 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: Ön bellek, 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 ön bellek 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ı [ http://www.eembc.org/  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 
Aşağıdaki bağlantılarda denektaşları ile ilgili İngilizce bilgiler yer almaktadır.
 Benchmarks
 Benchmarking (Ticari Yönden)

İlgili Bağlantılar 
Aşağıdaki bağlantılarda denektaşları ile ilgili İngilizce bilgiler yer almaktadır.
 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