<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Saydam Art kl Cal st rma I_cin Vekil Tasar m O runtusu Kullan m</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Yaz l m Muhendisligi Bolumu</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Yasar Universitesi</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>I_zmir</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Turkiye dindar.oz@yasar.edu.tr</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>MovieStarPlanet ApS</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Kopenhag</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Danimarka sinanoz</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>@gmail.com</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Bilgisayar Muhendisligi Bolumu</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>I_zmir Yuksek Teknoloji Enstitusu</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>I_zmir</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Turkiye isiloz@iyte.edu.tr</string-name>
        </contrib>
      </contrib-group>
      <abstract>
        <p>Bu cal smada, nesneye yonelik programlar n guvenilir bir sekilde cal st r lmas icin saydam bir model onermekteyiz. Gecici donan m hatalar na kars istenen seviyede guvenilirligi saglayabilmek amac yla art kl (redundant) program cal st rmas icin genel bir nesneye yonelik programlama arac tasarlad k. Bunun icin yaz l m sistemlerini esnek ve kolay surdurulebilir yapabilmek icin olusturulmus ve yayg nca kullan lan GoF tasar m oruntulerinden biri olan vekil tasar m oruntusunu kulland k. Vekil tasar m oruntusu, var olan bir nesneye erisirken ona yeni fonksiyonellikler eklemeye yarayan saydam bir duzenek ve kontrollu bir erisim saglamaktad r. Java programlama dilindeki dinamik vekil ve annotation araclar n birlestirerek, art kl cal st rma ve cogunluk oylamas icin genel, saydam ve yap land r labilir bir arac olan RedundantCaller ' sunmaktay z. Arac m z, herhangi bir nesneyi al r ve ozgun kullan c koduna en az miktarda degisiklik gerektirerek nesnenin metotlar n farkl is parcac klar nda coklu miktarda cal st ran ve arka planda cogunluk oylamas yapan bir dinamik vekil yarat r. annotationlar sayesinde, kullan c lar art kl cal st rmay metot seviyesinde yap land rabilirler. Deneylerimiz gostermektedir ki; arac m z herhangi bir nesneye yonelik program icin cok is parcac kl cal st rma sayesinde makul bir performans dususuyle kayda deger bir guvenilirlik seviyesi saglamaktad r.</p>
      </abstract>
      <kwd-group>
        <kwd>Nesneye yonelik programlama Art kl cal st rma</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Dindar O z1, Sinan O z2, and Is l O z3
Abstract. In this study, we propose a transparent model for reliable
execution of object-oriented software. We design a generic object-oriented
programming tool for redundant software execution to provide the
desired level of reliability against transient hardware faults. To achieve this,
we utilize the Proxy design pattern which is one of the well-known GoF
design patterns that are formed to make software systems exible and
easy to maintain. Proxy design pattern provides a controlled access and
a transparent mechanism for adding new functionalities to an existing
object when accessing it. Combining the instruments of dynamic proxy
and annotations in Java programming language, we present,
RedundantCaller, a generic, transparent, and con gurable tool for redundant
execution and majority voting. Our tool takes any object and creates a
dynamic proxy for it which executes the methods of the object
multiple times in separate threads, and performs majority voting on the
background, requiring minimum amount of change in the original user
code. Thanks to annotations, users can con gure the redundant
execution scheme methodwise. Our experiments demonstrate that our tool
provides a signi cant level of reliability to any object-oriented software
with a reasonable amount of performance degradation through
multithreaded execution.
1</p>
    </sec>
    <sec id="sec-2">
      <title>Giris</title>
      <p>
        Bilgisayarlar ve uzerinde cal san yaz l mlar gun gectikce hayat n her alan nda yer
al rken, bilgisayarlar n guvenilir cal smas onem kazanmaktad r. Askeri
operasyonlar, sagl k, uzay arast rmalar , nansal islemler gibi baz uygulama alanlar nda
bu sistemlerin isleyislerinde meydana gelebilecek en kucuk bir hatan n bile
kabul edilemez sonuclar olabilmektedir. Bu anlamda bilgisayar sistemlerini daha
guvenilir k labilmek icin uygulanabilecek yontemler bilgisayar muhendisliginin
onemli arast rma alanlar ndan biri olmustur [
        <xref ref-type="bibr" rid="ref1 ref4">1</xref>
        ]. Art kl sistemler bu yontemlerin
basl calar aras ndad r [
        <xref ref-type="bibr" rid="ref2 ref3 ref5 ref6">2, 3</xref>
        ]. Sistemin ya da sistemin isleyisinin gerekenden fazla
sekilde coklanmas temeline dayanan bu yontem, donan msal ya da yaz l msal
olarak uygulanabilmektedir. Donan msal art kl sistemler, coklanan donan m
bileseninin ar za yapmas ve hatal cal smas ihtimaline kars uygulanmaktad r.
Bu sistemlerde onlem al nmaya cal s lan hata kal c hatalard r. Bir tak m
donan m hatalar ise gecici olarak adland r lmakta ve sadece belirli bir zamanda
olusup daha sonra kaybolmaktad r. Bu hatalara kars s kl kla maliyeti daha az
olan art kl yurutme yontemi kullan lmaktad r. Bu yontem temelde, yap lmak
istenen islemin birden fazla defa yap l p elde edilen sonuclar n oy coklugu
prensibine gore oylanarak islemin beklenen sonucu olarak kabul edilmesidir.
Yontemin ana kri, ayn gecici hatan n arka arkaya ve ayn hatal sonucu
vererek olusmas ihtimalinin ihmal edilebilir duzeyde olmas d r. O zellikle art kl
ve coklu is parcac kl (redundant multithreading) yontemler, hatalar n farkl
cekirdeklerde cal san kopyalarda es zamanl gerceklesme ihtimalinin daha da
dusuk olmas sebebiyle yuksek hata tolerans saglamakta, paralel cal st rma
sayesinde art kl cal st rman n performans uzerindeki olumsuz etkisinin onune
gecilmektedir [
        <xref ref-type="bibr" rid="ref8 ref9">5, 6</xref>
        ].
      </p>
      <p>
        Art kl yurutme yonteminin uygulanmas uygulama seviyesinde yer
alabilmekte ve yaz l m gelistiricilere onemli bir miktarda gercekleme yuku
dogurmaktad r. Art kl cal st r lacak butun islemlerin bu sekilde gerceklenmesi
ve gerekli oylama islemlerinin kodlanmas gerekmektedir. Bu cal smada, bu
gercekleme yukunu ortadan kald racak genel, yeniden kullan l r bir programlama
arac gelistirmeyi hede edik. Bu amacla nesneye yonelik bir programlama
ortam nda GoF (Gang of Four) tasar m oruntulerinden [
        <xref ref-type="bibr" rid="ref13">10</xref>
        ] biri olan vekil tasar m
oruntusunu kullanarak soz konusu gercekleme yukunun herhangi bir nesne icin
otomatik ve saydam olarak yap ld g , RedundantCaller (art kl cal st r c ) ad n
verdigimiz bir programlama arac (s n f) tasarlad k.
      </p>
      <p>Bolum 2'de bu alandaki ilgili cal smalar uzerinden k saca gecilmekte ve bu
bolumu vekil tasar m oruntusunun ozetlendigi Bolum 3 izlemektedir.
RedundantCaller arac m z n isleyisinin yerald g Bolum 4'un ard ndan arac n neden oldugu
performans dususu ve guvenilirlik art s n n incelendigi deneysel cal smalar n
bulundugu Bolum 5 gelmektedir. Bolum 6 ile makale sonlanmaktad r.
2</p>
      <sec id="sec-2-1">
        <title>I_lgili Cal smalar</title>
        <p>Literaturde yaz l m tabanl art kl cal st rma icin cok say da cal sma mevcuttur.
Bu bolumde bu konulardaki cal smalara yer verilmistir.</p>
        <p>
          SRMT (Software-based Redundant Multi-Threading) [
          <xref ref-type="bibr" rid="ref10">7</xref>
          ], verilen program
kodunu iki is parcac g na coklayarak hata tespiti saglamaktad r. Paralel cal san
is parcac klar , komutlar n sonuclar n kars last rarak uyusmazl k durumunda
hata durumu oldugunu tespit etmektedir. Komut seviyesinde sonuc
kontrolu sagland g ndan performansa etkisi oldukca fazlad r, o yuzden bunu
iyilestirmek icin farkl is parcac klar n n iletisimini saglayan optimizasyonlar da
onerilmistir. Detayl bir derleyici ve yurutme sistemi gerceklemesi iceren bu
sistem, sadece hata tespiti saglamakta olup hata tolerans seviyesinin yeniden
yap land r lmas na imkan vermemektedir.
        </p>
        <p>
          RedThreads [
          <xref ref-type="bibr" rid="ref11">8</xref>
          ], C/C++ programlar icin art kl cok is parcac kl cal st rma
saglayan bir arayuz saglamaktad r. Yaz l m gelistirici, arayuz taraf ndan
tan mlanan direkti erle (directives) program n hangi parcas n n, hangi seviyede
(kac is parcac g yla) art kl cal sacag n belirtebilmektedir. Cal smada hem
derleyici, hem de yurutme sistemi gerceklemesi yap lm s, kullan c n n belirledigi
ozelliklere gore art kl cal st rma saglanm st r. Kullan m kolayl g ac s ndan
RedundantCaller arac m za benzemekle birlikte C/C++ programlar na yonelik
olmas ve cok fazla gercekleme gerektirmesi yonleriyle bizim cal smam zdan
farkl l k gostermektedir.
        </p>
        <p>
          Chen ve Chen [
          <xref ref-type="bibr" rid="ref12">9</xref>
          ] yaz l m tabanl art kl cal st rma icin bir programlama
modeli onermislerdir. Cal smalar ndaki programlama modeli, hata tolerans n
gerceklemek icin cok is parcac kl teknikleri kullanmaktad r. Hata duzeltmeyi de
cogunluk oylamas yla gerceklestirmektedir. Ayr ca sistemin cevap vermedigi hata
durumlar icin watchdog zamanlay c s kullan lmaktad r. Yaz l m gelistiricinin,
yaz l m n gerekli yerlerine mudahale etmesi ve programlama modelinin sundugu
fonksiyonlar eklemesi gerekmektedir. Yaz l m gelistiriciye saydam bir arac olarak
sunulan RedundantCaller arac n kullanmak icin, hata tolerans eklenmek istenen
yaz l mda neredeyse hicbir degisiklik yap lmas na gerek duyulmamaktad r.
3
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>Vekil Tasar m O runtusu</title>
        <p>
          Tasar m oruntuleri nesneye yonelik programlamada cok kars las lan tasar m
problemlerine cozum olarak sunulmus yeniden kullan l r, esnek, ve dogrulanm s
cozum onerileridir [
          <xref ref-type="bibr" rid="ref13">10</xref>
          ]. Vekil tasar m oruntusu Eric Gamma ve arkadaslar n n
onerdigi 23 iyi bilinen tasar m oruntusunden biridir ve su iki temel probleme
cozum sunmay hede emektedir:
{ Nesneye erisimi kontrol alt na almak
{ Nesneye saydam bir sekilde yeni islevler kazand rmak
        </p>
        <sec id="sec-2-2-1">
          <title>Sekil 1. Vekil tasar m oruntusunun UML s n f semas [10].</title>
          <p>
            Temelde hedef olarak secilen s n f ile ayn arayuze sahip bir vekil s n f n n
tan mlanmas ve vekil s n f n hedef s n f icinde bulundurmas (composition)
krine dayan r. Hedef s n f kullan c lar bu s n fa vekil s n f uzerinden erisim
saglarlar. Sekil 1'de vekil tasar m oruntusunun UML (Uni ed Modeling
Language) s n f semas goruntulenmektedir. Vekil tasar m oruntusu farkl gercekleme
senaryolar ile yaz l m gelistirme alanlar nda uygulanmaktad r [
            <xref ref-type="bibr" rid="ref14 ref15">11, 12</xref>
            ].
4
          </p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Vekil Tasar m</title>
      <sec id="sec-3-1">
        <title>O runtusu Temelli Hata Tolerans</title>
        <p>Bu cal smam zda vekil tasar m oruntusu temelli RedundantCaller
ismini verdigimiz saydam bir art kl cal st rma arac gelistirdik
(https://github.com/isil-oz/RedundantCaller). Bunu yaparken Java
programlama dilindeki dinamik vekil (dynamic proxy) mekanizmas n kulland k.
Bu mekanizma bir arayuz (interface) ile erisilen herhangi bir s n fa cal st rma
zaman nda otomatik olarak bir vekil s n f olusturmak icin kullan lmaktad r.
RedundantCaller, verilen herhangi bir s n f n nesnesi icin bu s n f n
metotlar n art kl bir sekilde cal st racak vekil nesneyi otomatik olarak olusturur
ve gelistirici bu vekil nesneyi kullanarak gerceklemek istedigi kodu yazar.
RedundantCaller hedef nesnenin art kl cal st r lacak bir metodu cagr ld g nda
oncelikle o nesnenin art kl cag rma say s nca klonunu uretir. Bu islem
RedundantCaller kullan m n n getirdigi bir gereksinim olmay p cagr lan metot nesne
uzerinde degisiklik yap yor ise sonraki metotlar n tutarl ve dogru cal smas
icin gereklidir ve art kl cal st rma isleminin dogas geregi yap lmaktad r. Daha
sonra, art kl cal st rma cok is parcac kl (multithreaded) olarak yap land r lm s
ise olusturulan hedef nesne klonlar n iceren birer is parcac g uretilir ve Java
programlama dilinde eszamanl cal st rma (concurrent execution) icin yayg nca
kullan lan Fork-Join mekanizmas ile bu is parcac klar paralel olarak cal st r l r.
Tek is parcac kl yap land rma senaryosunda ise bu islem bir dongu icerisinde
klon nesnelerin metotlar n n arka arkaya cal st r lmas seklinde gerceklestirilir.
Her iki senaryoda da art kl cal st rma neticesinde elde edilen sonuclar cogunluk
oylamas yontemi ile oylan r ve kazanan sonuc islemin beklenen sonucu olarak
dondurulur. Burada ozetlenen butun bu islemler gelistiricinin herhangi bir
gercekleme yapmas n gerektirmeden RedundantCaller nesnesi taraf ndan
saydam bir sekilde gerceklestirilir. RedundantCaller s n f nda yukar da ozetlenen
isleri gerceklestiren kod parcac g Kod 1'de listelenmektedir.</p>
        <p>Ayr ca gelistirici, vekil nesne ile erismek istedigi nesnenin arayuz tan m nda
art kl cal st rmak istedigi metotlar ve bunlar n art kl cal st rma parametrelerini
belirleyebilir. Metot baz nda yapabildigi bu yap land rma imkan icin yine Java
programlama dilindeki annotation mekanizmas kullan lm st r. Art kl cal st rma
yap land rma parametreleri ihtiyaca gore kolayca artt r labilmekle beraber bu
cal smada su parametrelere yer verilmistir:
{ votecount : Tamsay . Metodun kac defa cal st r lacag n belirtir.
{ multithreaded : true/false. Art kl cal st rma isleminin cok is parcac kl
cal st r l p cal st r lmayacag n belirtir.</p>
        <p>Kod 1. RedundantCaller art kl cal st rma kodu
public</p>
        <p>O b j e c t i n v o k e ( O b j e c t proxy , Method method , O b j e c t [ ] a r g s )
throws Throwable f
/ some i m p l e m e n t a t i o n d e t a i l s /
i f ( method . i s A n n o t a t i o n P r e s e n t ( R e d u n d a n t C a l l . c l a s s ) )
f
i n t vo teCo unt = method . g e t A n n o t a t i o n ( R e d u n d a n t C a l l . c l a s s ) .</p>
        <p>vo teCo unt ( ) ;
b u i l d T a r g e t C o p i e s ( vote Cou nt ) ;
boolean
m u l t i t h r e a d e d =
method . g e t A n n o t a t i o n ( R e d u n d a n t C a l l . c l a s s )</p>
        <p>. m u l t i t h r e a d e d ( ) ;
i f ( m u l t i t h r e a d e d ) f</p>
        <p>L i s t &lt;Future&lt;O b j e c t&gt;&gt; l i s t =</p>
        <p>redundantRun ( method , a r g s , v ote Coun t ) ;
return t h r e a d e d V o t i n g ( l i s t ) ;
g
e l s e return s i n g l e T h r e a d e d V o t i n g ( method , a r g s , vo teC ount ) ;
g
g
e l s e return method . i n v o k e ( t a r g e t , a r g s ) ;</p>
        <p>Matrix.java
class Matrix{
   Matrix transpose(){...}
   Matrix plus(Matrix ){...}
   ...
   boolean equals(Object ){...}
   int hashCode(){...}
}</p>
        <p>IMatrix.java
Interface IMatrix{
   @RedundantCall(voteCount=3,</p>
        <p>multithreaded=true)
   Matrix transpose()
   @RedundantCall(voteCount=5,</p>
        <p>multithreaded=false)
   Matrix plus(Matrix)
}</p>
        <p>Artıklı Çalışma
Matrix m = ...;
IMatrix i = RedundantCaller.createObject(m);
sonuc = i.transpose();</p>
        <p>RedundantCaller
Artıklı nesneler yaratılır:</p>
        <p>Matrix m1
Matrix m2</p>
        <p>Matrix m3
Her bir nesnenin metodunu paralel olarak çalıştırmak için
paralel işler oluşturulur:</p>
        <p>Task t1 = m1.transpose
Task t2 = m2.transpose</p>
        <p>Task t3 = m3.transpose
Paralel olarak artıklı çalıştırma gerçekleştirilir:
sonuc1 = t1.invoke
sonuc2= t2.invoke
sonuc3 = t3.invoke
gosterilmektedir. O rnekte kullan lmak istenen s n f Matrix s n f ve bu s n fa
erisim icin tan mlanan arayuz IMatrix arayuzudur. Bu arayuz icinde tan mlanan
tum metotlar icin art kl cal st rma imkan saglanacakt r. Metotlar icin belirtilen
annotation arac l g yla da art kl cal st rma yap land r labilmektedir.
RedundantCaller s n f , Matrix s n f na vekillik yapmaktad r. Yaz l m gelistirici, istedigi
art kl l k seviyesine gore annotationlar n degerlerini belirleyebilmektedir. Ayr ca
Art kl Cal sma kutusundaki nesne olusturma (createObject ) sat r n yazarak
vekil nesne uzerinden yeni nesne olusturmaktad r. Sekildeki ornekte
transpose metodu icin tan mlanan @RedundantCall(voteCount = 3, multithreaded
= true) annotation' ile, transpose metodunu 3 is parcac g yla art kl olarak
cal st rmak istedigimiz belirtilmistir. plus metodu icin tan mlanm s olan
@RedundantCall(voteCount = 5, multithreaded = false) annotation' yla ise 5 art kl
cal st rman n tek bir is parcac g yla gerceklestirilmesi istenmistir.
5</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Deneysel Cal sma</title>
      <p>RedundantCaller arac n n nesneye yonelik uygulamalar n performans ve
guvenilirlik uzerindeki etkilerini gozlemlemek icin gerceklestirdigimiz deneyler
bu bolumde yer almaktad r.</p>
      <p>Deneylerimizi temel lineer cebir islemleri iceren bir paket olan JAMA
kutuphanesini kullanarak gerceklestirdik [13]. JAMA, Matrix ana s n f alt nda
farkl operasyonlar sunmaktad r. Bu kutuphanenin kullan m , hata hassasiyeti
ve hata tolerans cal smalar nda [14, 15] s kl kla kullan lan matris hesaplamalar
icerdiginden cal smam z icin oldukca uygun olmustur. Deneylerimizde 1000x1000
boyutunda rastgele degerlere sahip matrisler ureterek Tablo 1'de listelenen temel
31 operasyonu kulland k. Art kl cal st rman n cok is parcac kl versiyonlar n
cal st rabilmek icin Intel Xeon E5-2680 temelli cok cekirdekli mimaride
deneylerimizi cal st rd k.</p>
      <p>O ncelikle RedundantCaller ' n performansa olan etkisini gozlemleyebilmek
icin deneyler gerceklestirdik. Bu deneylerde matris operasyonlar n n art kl
cal st rma olmadan tamamland g zaman , ve art kl cal st rman n tek is
parcac kl , 3 is parcac kl ve 5 is parcac kl versiyonlar n n tamamland g
zamanlar olctuk. Cal st rmalar aras ndaki esitsizliklerden kaynaklanabilecek olas
yan lt c sonuclardan etkilenmemek icin her bir operasyonu 20 defa cal st r p
en yuksek olan bir degeri d sar da tutarak ortalamalar n hesaplad k, ve her
bir operasyonun her bir versiyon icin cal st rma zaman n belirledik.
Operasyonlar farkl cal st rma zamanlar na sahip oldugundan ve hepsini tek bir sekilde
gostermek zor oldugundan operasyonlar cal st rma zamanlar na gore uc gruba
ay rarak farkl sekillerde performans sonuclar n raporlad k. Sekil 3 cok k sa
cal st rma zaman na (normal cal st rma zaman 5 saniyeden dusuk) sahip
operasyonlara ait sonuclar gosterirken, Sekil 5 uzun sureli operasyonlara ait farkl
kon gurasyonlar icin operasyonlar n cal st rma zamanlar n gostermektedir. Bu
sekillerde performans sonuclar verilen farkl kon gurasyonlar ve ac klamalar
ayr ca Tablo 2'de verilmistir.</p>
      <p>Sekil 3'te goruldugu gibi cal st rma zaman kucuk olan operasyonlar icin
art kl cal st rma maliyeti oransal olarak cok yuksekken, tek is parcac kl
(RCSingle) ve uc is parcac kl (RC3Thread) uc art kl cal st rma kon gurasyonlar
ben</p>
      <sec id="sec-4-1">
        <title>Tablo 1. Deneylerimizde kulland g m z matris operasyonlar .</title>
        <p>Sekil 3. Farkl art kl cal st rma kon gurasyonlar icin cal st rma zamanlar (k sa sureli
operasyonlar icin).
zer sonuclar vermektedir. Bu durumlarda bes is parcac kl , bes art kl cal st rma
(RC5Thread) kon gurasyonunun maliyeti 10-20 kata kadar c kmaktad r. Bu
gruptaki operasyonlar n cal st rma zamanlar n n cok k sa olmas ndan dolay ;
art kl cal st rmadaki nesnelerin klonlanmas , cogunluk oylamas gibi fazladan
cal st rma haricindeki islemlerin zaman n n normal cal st rma zaman n n cok
fazla ustune c kmas na sebep olmaktad r. O zellikle paralel versiyonlarda is
parcac klar n n yarat lmas ve yonetilmesi islerinin de eklenmesiyle cal st rma
zamanlar goreceli olarak cok artmaktad r. O rnegin, cal st r lmas 2 saniye suren
bir operasyonu uc is parcac kl , uc art kl cal st rma ile cal st rd g m z dusunelim.
Bir is parcac g yaratma islemi 0,5 saniye suruyorsa, sadece is parcac g
yaratma isleminin eklenmesiyle operasyonun cal st rma zaman yaklas k 2
kat na c kmaktad r. Bu durumu gozlemleyebilmek icin art kl cal st rma
konSekil 4. Farkl art kl cal st rma kon gurasyonlar icin arrayLeftDivide operasyonunun
cal st rma zaman n n dag l m .</p>
        <p>Sekil 5. Farkl art kl cal st rma kon gurasyonlar icin cal st rma zamanlar (uzun sureli
operasyonlar icin).</p>
        <p>gurasyonlar icin islem seviyesinde zaman olcumleri yapt k. Sekil 4,
normal cal smas 3-4 saniye suren arrayLeftDivide operasyonunun cal st rma
zaman n n hangi islemlerde gectigini gostermektedir. Diger operasyonlar icin de
benzer durumlar soz konusudur. O te yandan, Sekil 5'te goruldugu gibi
normal cal smas 1000-10000 saniye suren bir uygulama icin art kl cal st rman n
fazladan cal st rma haricindeki islemleri gorece cok k sa oldugundan, art kl
cal st rman n toplam maliyeti oldukca dusuk olmaktad r. Tek is parcac kl
kongurasyonda (RCSingle), uc art kl cal st rma tek bir is parcac g taraf ndan arka
arkaya yap ld g icin onun performans en kotuyken; paralel kon gurasyonlarda
(RC3Thread ve RC5Thread) uc-bes is parcac g , art kl cal st rmalar farkl
cekirdeklerde es zamanl olarak gerceklestirdiginden toplam cal st rma zamanlar
ciddi art s gostermemektedir. Uzun hesaplamalarda fazladan cal st rma
haricindeki islemlerin maliyeti gorunmemekte ve as l buyuk hesaplama is parcac klar na
yapt r ld g icin maliyet gizli kalm s olmaktad r.</p>
        <p>RedundantCaller ' n performans n n yan s ra hata kapsam n
gozlemleyebilmek icin hata enjeksiyonu deneyleri gerceklestirdik. Bunun
icin deneylerde kulland g m z Matrix s n f icin operasyon seviyesinde belirli
bir ihtimalle hesaplama hata durumlar olusturduk, normal cal st rman n
ve art kl cal st rman n hesaplad g degerin hesaplamas gereken degere esit
olup olmad g n kontrol ederek sessiz veri bozulumu (silent data corruption)
durumlar n tespit etmeye cal st k. Hata enjeksiyonu deneyleri uzun zaman
ald g ndan nispeten k sa cal st rma zamanlar na sahip transpose, norm1,
norm2, ve uminus operasyonlar na hata enjeksiyonu yapt k. RedundantCaller
arac ac s ndan farkl l k olusturmad g icin bu operasyon alt kumesinin yeterli
oldugunu dusunmekteyiz. Her bir operasyon icin 1000 farkl cal st rma yaparak
normal cal st rman n ve art kl cal st rman n hatal hesaplama durumlar n
gozlemlemeye cal st k. I_lk olarak literaturde de olas hata oran olarak tespit
edilen 0,001 degeriyle hata enjeksiyon testleri cal st rd k. Bu hata degeriyle
normal cal st rma icin 0,002 (4000 cal st rmada 8 hatal veri hesaplama) veri
bozulumu oran gozlemlerken uc art kl cal st rmada herhangi bir veri bozulmas
ile kars lasmad k. Hata oran n 0,01, 0,1, 0,2 gibi daha az gercekci degerlere
degistirdigimizde normal cal st rman n veri bozulumu oran art s gosterirken,
uc art kl cal st rmada veri bozulumu oran s f rda kalarak %100 hata kapsam
gozlemlenmistir. Hata analizi deneylerimiz, cogunluk oylamas temelli hata
tolerans sistemlerindeki beklenen hata kapsam seviyesini dogrulam st r.
Deney sonuclar m z, arac m z n tan mlanan hata modelindeki hata kapsam
performans n gostermektedir.
6</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Sonuc</title>
      <p>Bilgisayarlar n ve uzerinde yurutulen yaz l mlar n hatas z ve guvenilir cal smas ,
cogu zaman performans ve maliyet gibi diger bircok kriterin onune gecmekte
ve bilgi sistemlerinin tasar m kararlar nda onemli bir rol oynamaktad r.
Gelistiriciler yaz l mlar olustururken cozmek istedikleri orjinal problemin yan
s ra, yaz l m n daha guvenilir olmas icin almalar gereken tedbirleri de goz
onunde bulundurmak durumundad rlar. Cogu kez bu tedbirler yuksek miktarda
ilave kod karmas kl g ve/veya performans yuku dogurmaktad r.</p>
      <p>Bu cal smada nesne yonelimli programlamada yayg nca kullan lan vekil
tasar m oruntusunu kullanarak gelistiricilere guvenilir yaz l m
mekanizmalar ndan biri olan art kl cal st rma teknigini esnek, saydam ve otomatik
bir sekilde sunan bir gelistirme arac olusturduk. Vekil tasar m oruntusunun
diger kullan m alanlar n n yan nda bu alanda da etkin bir cozum olarak
kullan labilecegini gostermis olduk. Java programlama dilinin sundugu dinamik
vekil ve annotation dil ogelerini kullanarak tasarlad g m z arac genel ve
kolayca yap land r labilir bir sekilde gercekledik. Yine Java'da yayg nca kullan lan
fork-join sistemi ile art kl cal st rma isinin istege bagl olarak cok is parcac kl
olarak yap lmas n saglad k.</p>
      <p>O rnek bir Java kutuphanesi ile gerceklestirdigimiz deneylerde paralel
cal st rman n saglad g fayda ile arac m z n kucuk bir performans kayb ile
onemli oranlarda guvenilirlik art s saglad g n gosterdik. Yine deneyler icin
olusturdugumuz test kodunda RedundantCaller kullan m n n mevcut kodu
minimum miktarda degistirdigini ve gelistiriciye ihmal edilebilir miktarda bir
ilave is yuku getirdigini gozlemledik. Ayr ca onerdigimiz arac n benzer
programlama ogelerinin (dynamic proxy, annotation) desteklendigi diger nesneye
yonelik programlama dillerinde (C#, C++ vb.) de kolayl kla gerceklenebilecegini
dusunmekteyiz.
7</p>
    </sec>
    <sec id="sec-6">
      <title>Tesekkur</title>
      <p>Bu cal smada kullan lan hesaplama kaynaklar Ulusal Yuksek Basar ml
Hesaplama Merkezi'nin (UHeM), 1005202018 numaral destegiyle, saglanm st r.</p>
    </sec>
    <sec id="sec-7">
      <title>Kaynaklar</title>
      <p>13. JAMA Homepage, https://math.nist.gov/javanumerics/jama/. Last accessed 11</p>
      <p>June 2018.
14. Greg Bronevetsky and Bronis R. de Supinski: Soft Error Vulnerability of Iterative</p>
      <p>Linear Algebra Methods, International conference on Supercomputing (ICS), (2008).
15. Konrad Malkowski, Padma Raghavan, Mahmut Kandemir: Analyzing the soft error
resilience of linear solvers on multicore multiprocessors, International Symposium
on Parallel and Distributed Processing (IPDPS), (2010).</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1
          <string-name>
            <given-names>Software</given-names>
            <surname>Engineering</surname>
          </string-name>
          <string-name>
            <surname>Department</surname>
          </string-name>
          , Yasar University, I_zmir, Turkey dindar.oz@yasar.edu.tr
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2 MovieStarPlanet
          <string-name>
            <surname>ApS</surname>
          </string-name>
          , Copenhagen, Denmark sinanoz1980@gmail.com
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3 Computer Engineering Department,
          <article-title>I_zmir Institute of Technology, I_zmir, Turkey isiloz@iyte</article-title>
          .edu.tr
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          1.
          <string-name>
            <given-names>Israel</given-names>
            <surname>Koren</surname>
          </string-name>
          , C. Mani Krishna:
          <string-name>
            <surname>Fault-Tolerant</surname>
            <given-names>Systems</given-names>
          </string-name>
          , Morgan Kaufmann, (
          <year>2007</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          2.
          <string-name>
            <surname>George</surname>
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Reis</surname>
            ,
            <given-names>Jonathan</given-names>
          </string-name>
          <string-name>
            <surname>Chang</surname>
            , Neil Vachharajani, Ram Rangan,
            <given-names>David I.</given-names>
          </string-name>
          <article-title>August: Swift: Software implemented fault tolerance</article-title>
          ,
          <source>International Symposium on Code Generation and Optimization</source>
          , (
          <year>2005</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          3.
          <string-name>
            <surname>George</surname>
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Reis</surname>
            ,
            <given-names>Jonathan</given-names>
          </string-name>
          <string-name>
            <surname>Chang</surname>
            , Neil Vachharajani, Ram Rangan,
            <given-names>David I. August</given-names>
          </string-name>
          , Shubhendu S. Mukherjee:
          <article-title>Design and evaluation of hybrid fault-detection systems</article-title>
          .
          <source>International symposium on Computer Architecture (ISCA)</source>
          , (
          <year>2005</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          4.
          <string-name>
            <given-names>Alex</given-names>
            <surname>Shye</surname>
          </string-name>
          , Joseph Blomstedt, Tipp Moseley, Vijay Janapa Reddi,
          <article-title>Daniel a</article-title>
          . Connors:
          <article-title>Plr: A software approach to transient fault tolerance for multicore architectures</article-title>
          .
          <source>IEEE Transactions on Dependable and Secure Computing</source>
          ,
          <volume>6</volume>
          (
          <issue>2</issue>
          ):
          <volume>135</volume>
          {
          <fpage>148</fpage>
          , (
          <year>2009</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          5.
          <string-name>
            <given-names>S. S.</given-names>
            <surname>Mukherjee</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Kontz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. K.</given-names>
            <surname>Reinhardt</surname>
          </string-name>
          :
          <article-title>Detailed design and evaluation of redundant multi-threading alternatives</article-title>
          ,
          <source>International Symposium on Computer Architecture (ISCA)</source>
          , (
          <year>2002</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          6.
          <string-name>
            <given-names>M.</given-names>
            <surname>Gomaa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Scarbrough</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T. N.</given-names>
            <surname>Vijaykumar</surname>
          </string-name>
          ,
          <string-name>
            <surname>I.</surname>
          </string-name>
          <article-title>Pomeranz: Transient-fault recovery for chip multiprocessors</article-title>
          ,
          <source>International Symposium on Computer Architecture (ISCA)</source>
          , (
          <year>2003</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          7.
          <string-name>
            <surname>Cheng</surname>
            <given-names>Wang</given-names>
          </string-name>
          , Ho seop Kim, Youfeng Wu, Victor Ying:
          <article-title>Compiler-Managed Softwarebased Redundant Multi-Threading for Transient Fault Detection</article-title>
          ,
          <source>International Symposium on Code Generation and Optimization (CGO)</source>
          , (
          <year>2007</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          8.
          <string-name>
            <given-names>Saurabh</given-names>
            <surname>Hukerikar</surname>
          </string-name>
          , Keita Teranishi, Pedro C. Diniz, Robert F.
          <article-title>Lucas: RedThreads: An Interface for Application-Level Fault Detection/Correction Through Adaptive Redundant Multithreading</article-title>
          ,
          <source>International Journal of Parallel Programming</source>
          ,
          <volume>46</volume>
          :
          <fpage>225</fpage>
          -
          <lpage>251</lpage>
          , (
          <year>2018</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          9.
          <string-name>
            <surname>Yi-Shen</surname>
            <given-names>Chen</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Peng-Sheng Chen</surname>
          </string-name>
          :
          <article-title>A Software-Based Redundant Execution Programming Model for Transient Fault Detection</article-title>
          and Correction,
          <source>45th International Conference on Parallel Processing Workshops (ICPPW)</source>
          , (
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          10.
          <string-name>
            <surname>Erich</surname>
            <given-names>Gamma</given-names>
          </string-name>
          , Richard Helm, Ralph Johnson, John Vlissides: Design Patterns:
          <article-title>Elements of Reusable Object-Oriented Software</article-title>
          , Addison-Wesley,
          <article-title>(</article-title>
          <year>1994</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          11.
          <string-name>
            <given-names>K.</given-names>
            <surname>Soundararajan</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.W.</given-names>
            <surname>Brennan</surname>
          </string-name>
          :
          <string-name>
            <given-names>A Proxy</given-names>
            <surname>Design</surname>
          </string-name>
          <article-title>Pattern to Support RealTime Distributed Control System Benchmarking, Holonic and Multi-Agent Systems for Manufacturing (HoloMAS</article-title>
          ), (
          <year>2005</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          12.
          <string-name>
            <given-names>K.</given-names>
            <surname>Soundararajan</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.W.</given-names>
            <surname>Brennan</surname>
          </string-name>
          :
          <article-title>Design patterns for real-time distributed control system benchmarking, Robotics</article-title>
          and Computer-Integrated Manufacturing,
          <volume>24</volume>
          , 5:
          <fpage>606</fpage>
          -
          <lpage>615</lpage>
          , (
          <year>2008</year>
          ).
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>