13
Saydam Artıklı C ¸ alı¸ stırma ˙ cin Vekil Tasarım ¨ Or¨ unt¨ us¨ u Kullanımı Dindar ¨ Oz 1 , Sinan ¨ Oz 2 , and I¸ sıl ¨ Oz 3 1 Yazılım M¨ uhendisli˘ giB¨ol¨ um¨ u, Ya¸ sar ¨ Universitesi, ˙ Izmir, T¨ urkiye [email protected] 2 MovieStarPlanet ApS, Kopenhag, Danimarka [email protected] 3 Bilgisayar M¨ uhendisli˘giB¨ ol¨ um¨ u, ˙ Izmir Y¨ uksek Teknoloji Enstit¨ us¨ u, ˙ Izmir, T¨ urkiye [email protected] Abstract. Bu ¸ calı¸ smada, nesneye y¨ onelik programların g¨ uvenilir bir ¸ sekilde¸calı¸ stırılması i¸ cin saydam bir model ¨ onermekteyiz. Ge¸ cici do- nanım hatalarına kar¸ istenen seviyede uvenilirli˘ gi sa˘ glayabilmek amacıyla artıklı (redundant) program ¸ calı¸ stırması i¸ cin genel bir nesneye onelik programlama aracı tasarladık. Bunun i¸cin yazılım sistemlerini esnek ve kolay s¨ urd¨ ur¨ ulebilir yapabilmek i¸cin olu¸ sturulmu¸ s ve yaygınca kullanılan GoF tasarım ¨ or¨ unt¨ ulerinden biri olan vekil tasarım ¨ or¨ unt¨ us¨ un¨ u kullandık. Vekil tasarım ¨ or¨ unt¨ us¨ u, var olan bir nesneye eri¸ sirken ona yeni fonksiyonellikler eklemeye yarayan saydam bir d¨ uzenek ve kontroll¨ u bir eri¸ sim sa˘ glamaktadır. Java programlama dilindeki dinamik vekil ve an- notation ara¸ clarını birle¸ stirerek, artıklı ¸ calı¸ stırma ve ¸ co˘ gunluk oylaması cin genel, saydam ve yapılandırılabilir bir ara¸ c olan RedundantCaller ’ı sunmaktayız. Aracımız, herhangi bir nesneyi alır ve ¨ozg¨ un kullanıcı ko- duna en az miktarda de˘ gi¸ siklik gerektirerek nesnenin metotlarını farklı s par¸ cacıklarında ¸ coklu miktarda ¸ calı¸ stıran ve arka planda ¸ co˘ gunluk oylaması yapan bir dinamik vekil yaratır. annotation lar sayesinde, kul- lanıcılar artıklı ¸ calı¸ stırmayı metot seviyesinde yapılandırabilirler. Deney- lerimiz g¨ ostermektedir ki; aracımız herhangi bir nesneye y¨ onelik program cin ¸ cok i¸ s par¸ cacıklı ¸ calı¸ stırma sayesinde makul bir performans d¨ uyle kayda de˘ ger bir g¨ uvenilirlik seviyesi sa˘ glamaktadır. Keywords: Nesneye y¨ onelik programlama · Vekil tasarım ¨ or¨ unt¨ us¨ u · Artıklı ¸ calı¸ stırma.

Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar m Orun tus u Kullan mceur-ws.org/Vol-2201/UYMS_2018_paper_25.pdf · 2018-09-10 · Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar m Orun tus u Kullan mceur-ws.org/Vol-2201/UYMS_2018_paper_25.pdf · 2018-09-10 · Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar

Saydam Artıklı Calıstırma Icin Vekil TasarımOruntusu Kullanımı

Dindar Oz1, Sinan Oz2, and Isıl Oz3

1 Yazılım Muhendisligi Bolumu, Yasar Universitesi, Izmir, [email protected]

2 MovieStarPlanet ApS, Kopenhag, Danimarka [email protected] Bilgisayar Muhendisligi Bolumu, Izmir Yuksek Teknoloji Enstitusu, Izmir, Turkiye

[email protected]

Abstract. Bu calısmada, nesneye yonelik programların guvenilir birsekilde calıstırılması icin saydam bir model onermekteyiz. Gecici do-nanım hatalarına karsı istenen seviyede guvenilirligi saglayabilmekamacıyla artıklı (redundant) program calıstırması icin genel bir nesneyeyonelik programlama aracı tasarladık. Bunun icin yazılım sistemleriniesnek ve kolay surdurulebilir yapabilmek icin olusturulmus ve yaygıncakullanılan GoF tasarım oruntulerinden biri olan vekil tasarım oruntusunukullandık. Vekil tasarım oruntusu, var olan bir nesneye erisirken ona yenifonksiyonellikler eklemeye yarayan saydam bir duzenek ve kontrollu birerisim saglamaktadır. Java programlama dilindeki dinamik vekil ve an-notation 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 ozgun kullanıcı ko-duna en az miktarda degisiklik gerektirerek nesnenin metotlarını farklıis parcacıklarında coklu miktarda calıstıran ve arka planda cogunlukoylaması yapan bir dinamik vekil yaratır. annotationlar sayesinde, kul-lanıcılar artıklı calıstırmayı metot seviyesinde yapılandırabilirler. Deney-lerimiz gostermektedir ki; aracımız herhangi bir nesneye yonelik programicin cok is parcacıklı calıstırma sayesinde makul bir performans dususuylekayda deger bir guvenilirlik seviyesi saglamaktadır.

Keywords: Nesneye yonelik programlama · Vekil tasarım oruntusu ·Artıklı calıstırma.

Page 2: Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar m Orun tus u Kullan mceur-ws.org/Vol-2201/UYMS_2018_paper_25.pdf · 2018-09-10 · Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar

Using Proxy Design Pattern for TransparentRedundant Execution

Dindar Oz1, Sinan Oz2, and Isıl Oz3

1 Software Engineering Department, Yasar University, Izmir, [email protected]

2 MovieStarPlanet ApS, Copenhagen, Denmark [email protected] Computer Engineering Department, Izmir Institute of Technology, Izmir, Turkey

[email protected]

Abstract. In this study, we propose a transparent model for reliable ex-ecution of object-oriented software. We design a generic object-orientedprogramming tool for redundant software execution to provide the de-sired level of reliability against transient hardware faults. To achieve this,we utilize the Proxy design pattern which is one of the well-known GoFdesign patterns that are formed to make software systems flexible andeasy to maintain. Proxy design pattern provides a controlled access anda transparent mechanism for adding new functionalities to an existingobject when accessing it. Combining the instruments of dynamic proxyand annotations in Java programming language, we present, Redundant-Caller, a generic, transparent, and configurable tool for redundant ex-ecution and majority voting. Our tool takes any object and creates adynamic proxy for it which executes the methods of the object mul-tiple times in separate threads, and performs majority voting on thebackground, requiring minimum amount of change in the original usercode. Thanks to annotations, users can configure the redundant execu-tion scheme methodwise. Our experiments demonstrate that our toolprovides a significant level of reliability to any object-oriented softwarewith a reasonable amount of performance degradation through multi-threaded execution.

Keywords: Object-oriented programming · Proxy design pattern · Re-dundant execution.

1 Giris

Bilgisayarlar ve uzerinde calısan yazılımlar gun gectikce hayatın her alanında yeralırken, bilgisayarların guvenilir calısması onem kazanmaktadır. Askeri operasy-onlar, saglık, uzay arastırmaları, finansal islemler gibi bazı uygulama alanlarındabu sistemlerin isleyislerinde meydana gelebilecek en kucuk bir hatanın bilekabul edilemez sonucları olabilmektedir. Bu anlamda bilgisayar sistemlerini dahaguvenilir kılabilmek icin uygulanabilecek yontemler bilgisayar muhendisligininonemli arastırma alanlarından biri olmustur [1]. Artıklı sistemler bu yontemlerinbaslıcaları arasındadır [2, 3]. Sistemin ya da sistemin isleyisinin gerekenden fazla

Page 3: Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar m Orun tus u Kullan mceur-ws.org/Vol-2201/UYMS_2018_paper_25.pdf · 2018-09-10 · Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar

sekilde coklanması temeline dayanan bu yontem, donanımsal ya da yazılımsalolarak uygulanabilmektedir. Donanımsal artıklı sistemler, coklanan donanımbileseninin 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 do-nanım hataları ise gecici olarak adlandırılmakta ve sadece belirli bir zamandaolusup daha sonra kaybolmaktadır. Bu hatalara karsı sıklıkla maliyeti daha azolan artıklı yurutme yontemi kullanılmaktadır. Bu yontem temelde, yapılmakistenen islemin birden fazla defa yapılıp elde edilen sonucların oy cokluguprensibine gore oylanarak islemin beklenen sonucu olarak kabul edilmesidir.Yontemin ana fikri, aynı gecici hatanın arka arkaya ve aynı hatalı sonucu ver-erek olusması ihtimalinin ihmal edilebilir duzeyde olmasıdır. Ozellikle artıklıve coklu is parcacıklı (redundant multithreading) yontemler, hataların farklıcekirdeklerde calısan kopyalarda es zamanlı gerceklesme ihtimalinin daha dadusuk olması sebebiyle yuksek hata toleransı saglamakta, paralel calıstırmasayesinde artıklı calıstırmanın performans uzerindeki olumsuz etkisinin onunegecilmektedir [5, 6].

Artıklı yurutme yonteminin uygulanması uygulama seviyesinde yer al-abilmekte ve yazılım gelistiricilere onemli bir miktarda gercekleme yukudogurmaktadır. Artıklı calıstırılacak butun islemlerin bu sekilde gerceklenmesive gerekli oylama islemlerinin kodlanması gerekmektedir. Bu calısmada, bugercekleme yukunu ortadan kaldıracak genel, yeniden kullanılır bir programlamaaracı gelistirmeyi hedefledik. Bu amacla nesneye yonelik bir programlama or-tamında GoF (Gang of Four) tasarım oruntulerinden [10] biri olan vekil tasarımoruntusunu kullanarak soz konusu gercekleme yukunun herhangi bir nesne icinotomatik ve saydam olarak yapıldıgı, RedundantCaller (artıklı calıstırıcı) adınıverdigimiz bir programlama aracı (sınıf) tasarladık.

Bolum 2’de bu alandaki ilgili calısmalar uzerinden kısaca gecilmekte ve bubolumu vekil tasarım oruntusunun ozetlendigi Bolum 3 izlemektedir. Redundant-Caller aracımızın isleyisinin yeraldıgı Bolum 4’un ardından aracın neden olduguperformans dususu ve guvenilirlik artısının incelendigi deneysel calısmaların bu-lundugu Bolum 5 gelmektedir. Bolum 6 ile makale sonlanmaktadır.

2 Ilgili Calısmalar

Literaturde yazılım tabanlı artıklı calıstırma icin cok sayıda calısma mevcuttur.Bu bolumde bu konulardaki calısmalara yer verilmistir.

SRMT (Software-based Redundant Multi-Threading) [7], verilen program ko-dunu iki is parcacıgına coklayarak hata tespiti saglamaktadır. Paralel calısanis parcacıkları, komutların sonuclarını karsılastırarak uyusmazlık durumundahata durumu oldugunu tespit etmektedir. Komut seviyesinde sonuc kon-trolu saglandıgından performansa etkisi oldukca fazladır, o yuzden bunu iy-ilestirmek icin farklı is parcacıklarının iletisimini saglayan optimizasyonlar daonerilmistir. Detaylı bir derleyici ve yurutme sistemi gerceklemesi iceren busistem, sadece hata tespiti saglamakta olup hata toleransı seviyesinin yenidenyapılandırılmasına imkan vermemektedir.

Page 4: Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar m Orun tus u Kullan mceur-ws.org/Vol-2201/UYMS_2018_paper_25.pdf · 2018-09-10 · Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar

RedThreads [8], C/C++ programları icin artıklı cok is parcacıklı calıstırmasaglayan bir arayuz saglamaktadır. Yazılım gelistirici, arayuz tarafındantanımlanan direktiflerle (directives) programın hangi parcasının, hangi seviyede(kac is parcacıgıyla) artıklı calısacagını belirtebilmektedir. Calısmada hem der-leyici, hem de yurutme sistemi gerceklemesi yapılmıs, kullanıcının belirledigiozelliklere gore artıklı calıstırma saglanmıstır. Kullanım kolaylıgı acısından Re-dundantCaller aracımıza benzemekle birlikte C/C++ programlarına yonelikolması ve cok fazla gercekleme gerektirmesi yonleriyle bizim calısmamızdanfarklılık gostermektedir.

Chen ve Chen [9] yazılım tabanlı artıklı calıstırma icin bir programlamamodeli onermislerdir. Calısmalarındaki programlama modeli, hata toleransınıgerceklemek icin cok is parcacıklı teknikleri kullanmaktadır. Hata duzeltmeyi decogunluk oylamasıyla gerceklestirmektedir. Ayrıca sistemin cevap vermedigi hatadurumları icin watchdog zamanlayıcısı kullanılmaktadır. Yazılım gelistiricinin,yazılımın gerekli yerlerine mudahale etmesi ve programlama modelinin sundugufonksiyonları eklemesi gerekmektedir. Yazılım gelistiriciye saydam bir arac olaraksunulan RedundantCaller aracını kullanmak icin, hata toleransı eklenmek istenenyazılımda neredeyse hicbir degisiklik yapılmasına gerek duyulmamaktadır.

3 Vekil Tasarım Oruntusu

Tasarım oruntuleri nesneye yonelik programlamada cok karsılasılan tasarımproblemlerine cozum olarak sunulmus yeniden kullanılır, esnek, ve dogrulanmıscozum onerileridir [10]. Vekil tasarım oruntusu Eric Gamma ve arkadaslarınınonerdigi 23 iyi bilinen tasarım oruntusunden biridir ve su iki temel problemecozum sunmayı hedeflemektedir:

– Nesneye erisimi kontrol altına almak

– Nesneye saydam bir sekilde yeni islevler kazandırmak

Sekil 1. Vekil tasarım oruntusunun UML sınıf seması [10].

Page 5: Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar m Orun tus u Kullan mceur-ws.org/Vol-2201/UYMS_2018_paper_25.pdf · 2018-09-10 · Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar

Temelde hedef olarak secilen sınıf ile aynı arayuze sahip bir vekil sınıfınıntanımlanması ve vekil sınıfın hedef sınıfı icinde bulundurması (composition)fikrine dayanır. Hedef sınıf kullanıcıları bu sınıfa vekil sınıf uzerinden erisimsaglarlar. Sekil 1’de vekil tasarım oruntusunun UML (Unified Modeling Lan-guage) sınıf seması goruntulenmektedir. Vekil tasarım oruntusu farklı gerceklemesenaryoları ile yazılım gelistirme alanlarında uygulanmaktadır [11, 12].

4 Vekil Tasarım Oruntusu Temelli Hata Toleransı

Bu calısmamızda vekil tasarım oruntusu temelli RedundantCallerismini verdigimiz saydam bir artıklı calıstırma aracı gelistirdik(https://github.com/isil-oz/RedundantCaller). Bunu yaparken Java pro-gramlama dilindeki dinamik vekil (dynamic proxy) mekanizmasını kullandık.Bu mekanizma bir arayuz (interface) ile erisilen herhangi bir sınıfa calıstırmazamanı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 metot-larını artıklı bir sekilde calıstıracak vekil nesneyi otomatik olarak olustururve gelistirici bu vekil nesneyi kullanarak gerceklemek istedigi kodu yazar.RedundantCaller hedef nesnenin artıklı calıstırılacak bir metodu cagrıldıgındaoncelikle o nesnenin artıklı cagırma sayısınca klonunu uretir. Bu islem Redun-dantCaller kullanımının getirdigi bir gereksinim olmayıp cagrılan metot nesneuzerinde 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. Dahasonra, artıklı calıstırma cok is parcacıklı (multithreaded) olarak yapılandırılmısise olusturulan hedef nesne klonlarını iceren birer is parcacıgı uretilir ve Javaprogramlama dilinde eszamanlı calıstırma (concurrent execution) icin yaygıncakullanı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 dongu icerisindeklon 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 cogunlukoylaması yontemi ile oylanır ve kazanan sonuc islemin beklenen sonucu olarakdondurulur. Burada ozetlenen butun bu islemler gelistiricinin herhangi birgercekleme yapmasını gerektirmeden RedundantCaller nesnesi tarafından say-dam bir sekilde gerceklestirilir. RedundantCaller sınıfında yukarıda ozetlenenisleri gerceklestiren kod parcacıgı Kod 1’de listelenmektedir.

Ayrıca gelistirici, vekil nesne ile erismek istedigi nesnenin arayuz tanımındaartıklı calıstırmak istedigi metotları ve bunların artıklı calıstırma parametrelerinibelirleyebilir. Metot bazında yapabildigi bu yapılandırma imkanı icin yine Javaprogramlama dilindeki annotation mekanizması kullanılmıstır. Artıklı calıstırmayapılandırma parametreleri ihtiyaca gore kolayca arttırılabilmekle beraber bucalı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.

Page 6: Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar m Orun tus u Kullan mceur-ws.org/Vol-2201/UYMS_2018_paper_25.pdf · 2018-09-10 · Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar

Kod 1. RedundantCaller artıklı calıstırma kodu

public Object invoke ( Object proxy , Method method , Object [ ] a rgs )throws Throwable {/∗ some implementation d e t a i l s ∗/

i f (method . i sAnnotat ionPresent ( RedundantCall . class ) ){

int voteCount = method . getAnnotation ( RedundantCall . class ) .voteCount ( ) ;

bui ldTargetCopies ( voteCount ) ;

boolean mult i threaded = method . getAnnotation ( RedundantCall . class ). mult i threaded ( ) ;

i f ( mult i threaded ) {List<Future<Object>> l i s t =

redundantRun (method , args , voteCount ) ;return threadedVoting ( l i s t ) ;

}else return s ing leThreadedVot ing (method , args , voteCount ) ;

}else return method . invoke ( target , args ) ;

}

class Matrix{   Matrix transpose(){...}   Matrix plus(Matrix ){...}   ...   boolean equals(Object ){...}   int hashCode(){...}}

Interface IMatrix{   @RedundantCall(voteCount=3,

multithreaded=true)   Matrix transpose()   @RedundantCall(voteCount=5,

multithreaded=false)   Matrix plus(Matrix)}

Matrix m = ...;IMatrix i = RedundantCaller.createObject(m);sonuc = i.transpose();

Artıklı nesneler yaratılır:Matrix m1Matrix m2Matrix m3

Her bir nesnenin metodunu paralel olarak çalıştırmak için paralel işler oluşturulur:

Task t1 = m1.transposeTask t2 = m2.transposeTask t3 = m3.transpose

Paralel olarak artıklı çalıştırma gerçekleştirilir:sonuc1 = t1.invokesonuc2= t2.invokesonuc3 = t3.invoke

Çoğunluk oylaması:sonuc1sonuc2   sonucsonuc3

Matrix.java

IMatrix.java

Artıklı Çalışma

RedundantCaller

Sekil 2. RedundantCaller ’ın kullanımı.

RedundantCaller aracımızın kullanım ornegi Sekil 2’de bir nesne uzerindegosterilmektedir. Ornekte kullanılmak istenen sınıf Matrix sınıfı ve bu sınıfaerisim icin tanımlanan arayuz IMatrix arayuzudur. Bu arayuz icinde tanımlanan

Page 7: Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar m Orun tus u Kullan mceur-ws.org/Vol-2201/UYMS_2018_paper_25.pdf · 2018-09-10 · Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar

tum metotlar icin artıklı calıstırma imkanı saglanacaktır. Metotlar icin belirtilenannotation aracılıgıyla da artıklı calıstırma yapılandırılabilmektedir. Redundant-Caller sınıfı, Matrix sınıfına vekillik yapmaktadır. Yazılım gelistirici, istedigiartıklılık seviyesine gore annotationların degerlerini belirleyebilmektedir. AyrıcaArtıklı Calısma kutusundaki nesne olusturma (createObject) satırını yazarakvekil nesne uzerinden yeni nesne olusturmaktadır. Sekildeki ornekte trans-pose metodu icin tanımlanan @RedundantCall(voteCount = 3, multithreaded= true) annotation’ı ile, transpose metodunu 3 is parcacıgıyla artıklı olarakcalıstırmak istedigimiz belirtilmistir. plus metodu icin tanımlanmıs olan @Re-dundantCall(voteCount = 5, multithreaded = false) annotation’ıyla ise 5 artıklıcalıstırmanın tek bir is parcacıgıyla gerceklestirilmesi istenmistir.

5 Deneysel Calısma

RedundantCaller aracının nesneye yonelik uygulamaların performans veguvenilirlik uzerindeki etkilerini gozlemlemek icin gerceklestirdigimiz deneylerbu bolumde yer almaktadır.

Deneylerimizi temel lineer cebir islemleri iceren bir paket olan JAMAkutuphanesini kullanarak gerceklestirdik [13]. JAMA, Matrix ana sınıfı altındafarklı operasyonlar sunmaktadır. Bu kutuphanenin kullanımı, hata hassasiyetive hata toleransı calısmalarında [14, 15] sıklıkla kullanılan matris hesaplamalarıicerdiginden calısmamız icin oldukca uygun olmustur. Deneylerimizde 1000x1000boyutunda rastgele degerlere sahip matrisler ureterek Tablo 1’de listelenen temel31 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 deney-lerimizi calıstırdık.

Oncelikle RedundantCaller ’ın performansa olan etkisini gozlemleyebilmekicin 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 isparcacıklı, 3 is parcacıklı ve 5 is parcacıklı versiyonlarının tamamlandıgı za-manları olctuk. Calıstırmalar arasındaki esitsizliklerden kaynaklanabilecek olasıyanıltıcı sonuclardan etkilenmemek icin her bir operasyonu 20 defa calıstırıpen yuksek olan bir degeri dısarıda tutarak ortalamalarını hesapladık, ve herbir operasyonun her bir versiyon icin calıstırma zamanını belirledik. Operasy-onlar farklı calıstırma zamanlarına sahip oldugundan ve hepsini tek bir sekildegostermek zor oldugundan operasyonları calıstırma zamanlarına gore uc grubaayırarak farklı sekillerde performans sonuclarını raporladık. Sekil 3 cok kısacalıstırma zamanına (normal calıstırma zamanı 5 saniyeden dusuk) sahip op-erasyonlara ait sonucları gosterirken, Sekil 5 uzun sureli operasyonlara ait farklıkonfigurasyonlar icin operasyonların calıstırma zamanlarını gostermektedir. Busekillerde performans sonucları verilen farklı konfigurasyonlar ve acıklamalarıayrıca Tablo 2’de verilmistir.

Sekil 3’te goruldugu gibi calıstırma zamanı kucuk olan operasyonlar icinartıklı calıstırma maliyeti oransal olarak cok yuksekken, tek is parcacıklı (RCSin-gle) ve uc is parcacıklı (RC3Thread) uc artıklı calıstırma konfigurasyonları ben-

Page 8: Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar m Orun tus u Kullan mceur-ws.org/Vol-2201/UYMS_2018_paper_25.pdf · 2018-09-10 · Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar

Tablo 1. Deneylerimizde kullandıgımız matris operasyonları.

Operasyon Adı Operasyon

arrayLeftDivide Soldan bolme (C = A.\B)

arrayLeftDivideEquals Soldan bolup kendine esitleme (A = A.\B)

arrayRightDivide Sagdan bolme (C = A./B)

arrayRightDivideEquals Sagdan bolup kendine esitleme (A = A./B)

arrayTimes Carpma (C = A.*B)

arrayTimesEquals Carpıp kendine esitleme (A = A.*B)

chol Cholesky ayrıstırma

cond Matris durumu

det Matris determinant

eig Ozdeger ayrıstırma

inverse Ters

lu LU ayrıstırma

minus Cıkartma (C = A - B)

minusEquals Cıkartıp kendine esitleme (A = A - B)

norm1 1 norm (En buyuk sutun toplamı)

norm2 2 norm (En buyuk tekil deger)

normF Frobenius norm (Elemanların karelerinin toplamının karakoku)

normInf Sonsuz norm (En buyuk satır toplamı)

plus Toplam (C = A + B)

plusEquals Toplayıp kendine esitleme (A = A + B)

qr QR ayrıstırma

rank Matris rank

solve A*X = B cozumu

solveTranspose X*A = B ve ayrıca A’*X’ = B’ cozumu

svd Tekil deger ayrıstırma

times s Skalar ile carpım (C = s*A)

times m Lineer cebirsel matris carpımı (A * B)

timesEquals Skalar ile carpıp kendine esitleme (A = s*A)

trace 512, 1024, 2048

transpose Matris trace (Diyagonal elemanların toplamı)

uminus Negatifini alma (-A)

Tablo 2. Karsılastırma yaptıgımız konfigurasyonlar.

Konfigurasyon Adı Konfigurasyon

NonRC Normal calıstırma (Artıklı calıstırma yok)

RCSingle Tek is parcacıklı, uc artıklı calıstırma

RC3Thread Uc is parcacıklı, uc artıklı calıstırma

RC5Thread Bes is parcacıklı, bes artıklı calıstırma

Page 9: Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar m Orun tus u Kullan mceur-ws.org/Vol-2201/UYMS_2018_paper_25.pdf · 2018-09-10 · Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar

Sekil 3. Farklı artıklı calıstırma konfigurasyonları icin calıstırma zamanları (kısa surelioperasyonlar icin).

zer sonuclar vermektedir. Bu durumlarda bes is parcacıklı, bes artıklı calıstırma(RC5Thread) konfigurasyonunun maliyeti 10-20 kata kadar cıkmaktadır. Bugruptaki operasyonların calıstırma zamanlarının cok kısa olmasından dolayı;artıklı calıstırmadaki nesnelerin klonlanması, cogunluk oylaması gibi fazladancalıstırma haricindeki islemlerin zamanının normal calıstırma zamanının cokfazla ustune cıkmasına sebep olmaktadır. Ozellikle paralel versiyonlarda isparcacıklarının yaratılması ve yonetilmesi islerinin de eklenmesiyle calıstırmazamanları goreceli olarak cok artmaktadır. Ornegin, calıstırılması 2 saniye surenbir operasyonu uc is parcacıklı, uc artıklı calıstırma ile calıstırdıgımızı dusunelim.Bir is parcacıgı yaratma islemi 0,5 saniye suruyorsa, sadece is parcacıgıyaratma isleminin eklenmesiyle operasyonun calıstırma zamanı yaklasık 2katına cıkmaktadır. Bu durumu gozlemleyebilmek icin artıklı calıstırma kon-

Sekil 4. Farklı artıklı calıstırma konfigurasyonları icin arrayLeftDivide operasyonununcalıstırma zamanının dagılımı.

Page 10: Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar m Orun tus u Kullan mceur-ws.org/Vol-2201/UYMS_2018_paper_25.pdf · 2018-09-10 · Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar

Sekil 5. Farklı artıklı calıstırma konfigurasyonları icin calıstırma zamanları (uzun surelioperasyonlar icin).

figurasyonları icin islem seviyesinde zaman olcumleri yaptık. Sekil 4, nor-mal calısması 3-4 saniye suren arrayLeftDivide operasyonunun calıstırma za-manının hangi islemlerde gectigini gostermektedir. Diger operasyonlar icin debenzer durumlar soz konusudur. Ote yandan, Sekil 5’te goruldugu gibi nor-mal calısması 1000-10000 saniye suren bir uygulama icin artıklı calıstırmanınfazladan calıstırma haricindeki islemleri gorece cok kısa oldugundan, artıklıcalıstırmanın toplam maliyeti oldukca dusuk olmaktadır. Tek is parcacıklı kon-figurasyonda (RCSingle), uc artıklı calıstırma tek bir is parcacıgı tarafından arkaarkaya yapıldıgı icin onun performansı en kotuyken; paralel konfigurasyonlarda(RC3Thread ve RC5Thread) uc-bes is parcacıgı, artıklı calıstırmaları farklıcekirdeklerde es zamanlı olarak gerceklestirdiginden toplam calıstırma zamanlarıciddi artıs gostermemektedir. Uzun hesaplamalarda fazladan calıstırma haricin-deki islemlerin maliyeti gorunmemekte ve asıl buyuk hesaplama is parcacıklarınayaptırıldıgı icin maliyet gizli kalmıs olmaktadır.

RedundantCaller ’ın performansının yanı sıra hata kapsamınıgozlemleyebilmek icin hata enjeksiyonu deneyleri gerceklestirdik. Bunun

Page 11: Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar m Orun tus u Kullan mceur-ws.org/Vol-2201/UYMS_2018_paper_25.pdf · 2018-09-10 · Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar

icin deneylerde kullandıgımız Matrix sınıfı icin operasyon seviyesinde belirlibir ihtimalle hesaplama hata durumları olusturduk, normal calıstırmanınve artıklı calıstırmanın hesapladıgı degerin hesaplaması gereken degere esitolup olmadıgını kontrol ederek sessiz veri bozulumu (silent data corruption)durumlarını tespit etmeye calıstık. Hata enjeksiyonu deneyleri uzun zamanaldıgından nispeten kısa calıstırma zamanlarına sahip transpose, norm1,norm2, ve uminus operasyonlarına hata enjeksiyonu yaptık. RedundantCalleraracı acısından farklılık olusturmadıgı icin bu operasyon alt kumesinin yeterlioldugunu dusunmekteyiz. Her bir operasyon icin 1000 farklı calıstırma yaparaknormal calıstırmanın ve artıklı calıstırmanın hatalı hesaplama durumlarınıgozlemlemeye calıstık. Ilk olarak literaturde de olası hata oranı olarak tespitedilen 0,001 degeriyle hata enjeksiyon testleri calıstırdık. Bu hata degeriylenormal calıstırma icin 0,002 (4000 calıstırmada 8 hatalı veri hesaplama) veribozulumu oranı gozlemlerken uc 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 degerleredegistirdigimizde normal calıstırmanın veri bozulumu oranı artıs gosterirken,uc artıklı calıstırmada veri bozulumu oranı sıfırda kalarak %100 hata kapsamıgozlemlenmistir. Hata analizi deneylerimiz, cogunluk oylaması temelli hatatoleransı sistemlerindeki beklenen hata kapsamı seviyesini dogrulamıstır.Deney sonuclarımız, aracımızın tanımlanan hata modelindeki hata kapsamıperformansını gostermektedir.

6 Sonuc

Bilgisayarların ve uzerinde yurutulen yazılımların hatasız ve guvenilir calısması,cogu zaman performans ve maliyet gibi diger bircok kriterin onune gecmekteve bilgi sistemlerinin tasarım kararlarında onemli bir rol oynamaktadır.Gelistiriciler yazılımları olustururken cozmek istedikleri orjinal problemin yanısıra, yazılımın daha guvenilir olması icin almaları gereken tedbirleri de gozonunde bulundurmak durumundadırlar. Cogu kez bu tedbirler yuksek miktardailave kod karmasıklıgı ve/veya performans yuku dogurmaktadır.

Bu calısmada nesne yonelimli programlamada yaygınca kullanılan vekiltasarım oruntusunu kullanarak gelistiricilere guvenilir yazılım mekaniz-malarından biri olan artıklı calıstırma teknigini esnek, saydam ve otomatikbir sekilde sunan bir gelistirme aracı olusturduk. Vekil tasarım oruntusunundiger kullanım alanlarının yanında bu alanda da etkin bir cozum olarak kul-lanılabilecegini gostermis olduk. Java programlama dilinin sundugu dinamikvekil ve annotation dil ogelerini kullanarak tasarladıgımız aracı genel ve ko-layca yapılandırılabilir bir sekilde gercekledik. Yine Java’da yaygınca kullanılanfork-join sistemi ile artıklı calıstırma isinin istege baglı olarak cok is parcacıklıolarak yapılmasını sagladık.

Ornek bir Java kutuphanesi ile gerceklestirdigimiz deneylerde paralelcalıstırmanın sagladıgı fayda ile aracımızın kucuk bir performans kaybı ileonemli oranlarda guvenilirlik artısı sagladıgını gosterdik. Yine deneyler icinolusturdugumuz test kodunda RedundantCaller kullanımının mevcut kodu min-

Page 12: Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar m Orun tus u Kullan mceur-ws.org/Vol-2201/UYMS_2018_paper_25.pdf · 2018-09-10 · Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar

imum miktarda degistirdigini ve gelistiriciye ihmal edilebilir miktarda birilave is yuku getirdigini gozlemledik. Ayrıca onerdigimiz aracın benzer pro-gramlama ogelerinin (dynamic proxy, annotation) desteklendigi diger nesneyeyonelik programlama dillerinde (C#, C++ vb.) de kolaylıkla gerceklenebileceginidusunmekteyiz.

7 Tesekkur

Bu calısmada kullanılan hesaplama kaynakları Ulusal Yuksek BasarımlıHesaplama Merkezi’nin (UHeM), 1005202018 numaralı destegiyle, saglanmıstır.

Kaynaklar

1. Israel Koren, C. Mani Krishna: Fault-Tolerant Systems, Morgan Kaufmann, (2007).2. George A. Reis, Jonathan Chang, Neil Vachharajani, Ram Rangan, David I. August:

Swift: Software implemented fault tolerance, International Symposium on CodeGeneration and Optimization, (2005).

3. George A. Reis, Jonathan Chang, Neil Vachharajani, Ram Rangan, David I. August,Shubhendu S. Mukherjee: Design and evaluation of hybrid fault-detection systems.International symposium on Computer Architecture (ISCA), (2005).

4. Alex Shye, Joseph Blomstedt, Tipp Moseley, Vijay Janapa Reddi, Daniel a. Connors:Plr: A software approach to transient fault tolerance for multicore architectures.IEEE Transactions on Dependable and Secure Computing, 6(2):135–148, (2009).

5. S. S. Mukherjee, M. Kontz, S. K. Reinhardt: Detailed design and evaluation of re-dundant multi-threading alternatives, International Symposium on Computer Ar-chitecture (ISCA), (2002).

6. M. Gomaa, C. Scarbrough, T. N. Vijaykumar, I. Pomeranz: Transient-fault recov-ery for chip multiprocessors, International Symposium on Computer Architecture(ISCA), (2003).

7. Cheng Wang, Ho seop Kim, Youfeng Wu, Victor Ying: Compiler-Managed Software-based Redundant Multi-Threading for Transient Fault Detection,International Sym-posium on Code Generation and Optimization (CGO), (2007).

8. Saurabh Hukerikar, Keita Teranishi, Pedro C. Diniz, Robert F. Lucas: RedThreads:An Interface for Application-Level Fault Detection/Correction Through AdaptiveRedundant Multithreading, International Journal of Parallel Programming, 46:225-251, (2018).

9. Yi-Shen Chen, Peng-Sheng Chen: A Software-Based Redundant Execution Pro-gramming Model for Transient Fault Detection and Correction, 45th InternationalConference on Parallel Processing Workshops (ICPPW), (2016).

10. Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Design Pat-terns:Elements of Reusable Object-Oriented Software, Addison-Wesley, (1994).

11. K. Soundararajan and R.W. Brennan: A Proxy Design Pattern to Support Real-Time Distributed Control System Benchmarking, Holonic and Multi-Agent Systemsfor Manufacturing (HoloMAS), (2005).

12. K. Soundararajan and R.W. Brennan: Design patterns for real-time distributedcontrol system benchmarking, Robotics and Computer-Integrated Manufacturing,24, 5:606-615, (2008).

Page 13: Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar m Orun tus u Kullan mceur-ws.org/Vol-2201/UYMS_2018_paper_25.pdf · 2018-09-10 · Saydam Art kl C˘al ˘st rma I˘cin Vekil Tasar

13. JAMA Homepage, https://math.nist.gov/javanumerics/jama/. Last accessed 11June 2018.

14. Greg Bronevetsky and Bronis R. de Supinski: Soft Error Vulnerability of IterativeLinear Algebra Methods, International conference on Supercomputing (ICS), (2008).

15. Konrad Malkowski, Padma Raghavan, Mahmut Kandemir: Analyzing the soft errorresilience of linear solvers on multicore multiprocessors, International Symposiumon Parallel and Distributed Processing (IPDPS), (2010).