# 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.


## 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ı, ö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ı [ 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


## İ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