Program Yürütmelerini Sınıflandırmak İçin Donanım Ve Yazılım

Transkript

Program Yürütmelerini Sınıflandırmak İçin Donanım Ve Yazılım
Program Yürütmelerini S
fland rmak çin Donan m Ve Yaz m Ölçüm
Ayg tlar
Birle tirme
Combining Hardware And Software Instrumentation To Classify Program Executions
Cemal Y lmaz
Bilgisayar Mühendisli i Program
Sabanc Üniversitesi, stanbul
Adam Porter
Bilgisayar Mühendisli i Bölümü
Maryland Üniversitesi, USA
Emine Dumlu
Bilgisayar Mühendisli i Program
Sabanc Üniversitesi, stanbul
[email protected]
[email protected]
[email protected]
Özet
1. Giri
Pek çok çal ma, genellikle yaz m odakl ölçüm
ayg tlar yard
ile, program yürütmelerinden elde
edilen program tayflar , yaz m sistemlerinin
davran sal özelliklerini ortaya ç karmak için
kullanm r.
Bu
genel
yakla
n
önemli
uygulamalar ndan biri ise, ba ar z yürütmelerin,
ba ar
yürütmelerden otamatik olarak ay rt
edilmesidir. Bahsi geçen amaca yönelik literatürde yer
alan bir çok çal man n, do ru s fland rmalar üretti i
görülürken, kullan lan yöntemlerin ek yük masraf ve
fland rma
ba aras
aras ndaki
ödünle imin
dengelenmesi hususu üzerinde sistematik çal malar n
say
azd r. Bu çal ma, donan m performans
sayaçlar
kullanarak
dü ük
maliyetlerde
yürütmelerden veri toplanabilmesine olanak sa layan
çe itli hibrid program tayflar önermektedir. Önerilen
yakla m, dü ük ek yük masrafl donan m tayflar , az
say da ama daha yüksek masrafl yaz m ölçüm
ayg tlar yla birle tirmektedir. Bahsi geçen yakla m,
di er temsili yakla mlarla birlikte kar la rmal
olarak deneysel yöntemlerle de erlendirilmektedir.
Deneysel çal malar n sonuçlar , yeni hibrid program
tayflar n, güvenilir ve etkili (az masrafl ) bir ekilde
yürütmeleri s fland rabilece ini destekler niteliktedir.
Son zamanlarda, çok say da ara rmac , yaz mlar n
kalitesini art rmak için veri güdümlü teknikler
önermi tir. Bu teknikler, program yürütmelerini
izleme, bu yürütmelerden veri toplama, elde edilen
verileri analiz etme ve daha sonra analiz edilmi
sonuçlara göre hareket etme gibi genel bir yakla m
izlemektedir. Bu genel yakla m çok çe itli amaçlar
için kullan lm r. Hata yerlerinin bulunmas ,
ar zalar n önceden tahmin edilmesi ve ar za
raporlar n otamatik olarak s fland lmas , veri
güdümlü yakla mlar n kullan ld
uygulamalara
sadece birkaç örnektir [24,13,23,22,12,18,15].
Bu makalenin odak noktas olan di er bir uygulama
ise, sahadan toplanm olan yürütme verisinin, ba ar
veya ba ar z yürütmeden gelip gelmedi ini
belirlemektir. Halihaz rda var olan çözümler, bu amaç
do rultusunda programlar n kaynak kodlar na veya
obje kodlar na ölçüm ayg tlar eklemek suretiyle elde
edilmi olan ve program tayf (program spectra) olarak
adland lan yürütme verisini kullan r. Bu veri
periyodik olarak toplan r ve analiz edilir. Bu analiz
teknikleri, ba ar z yürütmelerden elde edilen
tayflardaki hatalarla büyük ölçüde ili kili olan
desenleri bulmaya çal maktad r. Elde edilen desenler,
hata durumu bilinmeyen yürütmelerden toplanm
veriyi kullanarak, bu yürütmelerin hatal olup
olmad
s fland rmada kullan r.
Bu ve benzer uygulamalara ili kin temel varsay m
udur: Ba ar ve ba ar z yürütmelerin davran nda
saptanabilir ve tekrarlanabilir desenler vard r ve bu
desenlere benzerliklerin ve/veya bu desenlerden
sapmalar n, büyük ölçüde hatalar n varl
veya
yoklu u ile ili kilidir. Önceki çal malar, çe itli
program tayflar , hatal program yürütmelerini
ba ar
bir ekilde s fland rmada kullanarak, bu
varsay
deneysel olarak destekler niteliktedir
[7,8,11,3].
Üzerinde az çal lm bir konu ise, bu yakla mlar n
maliyeti ve s fland rma ba aras
aras ndaki
ödünle imin nas l dengelenece idir. Bu yakla mlar,
yüksek ek çal ma zaman yükünün (runtime overhead)
genellikle arzulanmada
sahada çal an yaz m
sistemlerini hedeflemi olduklar ndan, bu konu
Abstract
Several research eforts have studied ways to infer
properties of software systems from program spectra
gathered from the running systems, usually with
software-level instrumentation. While these eforts
appear to produce accurate classications, detailed
understanding of their costs and potential cost-benefit
tradeoffs is lacking. In this work we present a hybrid
instrumentation approach which uses hardware
performance counters to gather program spectra at very
low cost. This underlying data is further augmented
with data captured by minimal amounts of softwarelevel instrumentation. We also evaluate this hybrid
approach by comparing it to other existing approaches.
We conclude that these hybrid spectra can reliably
distinguish failed executions from successful
executions at a fraction of the runtime overhead cost of
using software-based execution data.
önemlidir. Bu nedenle, yüksek s fland rma ba ar
desteklemek ve ayn zamanda olabildi ince ölçüm ek
yükünü dü ürmek önemlidir. Önceki çal malar ya bu
problemi göz ard etme e iliminde ya da çözüm için
çe itli örnekleme stratejilerine ba vurmaktad r.
Örneklemenin muhtemel dezavantaj
ise, sert
örnekleme yöntemlerinin, yüksek veri güvenilirli ine
sahip olmak için, yap lmas gereken gözlemlerin
say
ciddi ölçüde art rmas r.
Örnekleme, ek yürütme zaman yükünü dü ürmek için
güçlü bir araç olsa da, yüksek maliyet k tlamalar ,
ölçüm ayg tlar n maliyetini azaltarak da elde
edilebilir. Bu makale, bahsi geçen varsay
de erlendirmek için, ço u veri toplama i inin h zl
donan m performans sayaçlar taraf ndan yerine
getirildi i geli mi bir yakla m önermekte ve bu
yakla
deneysel olarak de erlendirmektedir.
Önerilen yakla mda, donan m sayaçlar ndan elde
edilen veri, ayn zamanda sistem yaz
na eklenen
minimum miktardaki yaz m ölçüm ayg tlar
vas tas yla toplanan ilave verilerle zenginle tirilerek
hibrid bir program tayf olu turulmaktad r. Buradaki
temel amaç; maliyeti dü ürmek için veri toplama i ini
olabildi ince donan n içine gömmektir.
Bu makale ayn zamanda hibrid program tayflar ,
sadece donan m tabanl veya sadece yaz m tabanl
program tayflar yla kar la rmaktad r. Dört tane aç k
kaynak projesi üzerinde yürütülen deneysel
de erlendirmeler, kullan lan kobay yaz mlar için,
hibrid donan m ve yaz m ölçüm ayg tlar
yakla
n, di er yakla mlara oranla çok daha az
masrafl oldu unu ve ayn zamanda en az di er
yakla mlar kadar ba ar z yürütmeleri ba ar
yürütmelerden
ay rmada
etkili
oldu unu
göstermektedir.
2. lgili Çal malar
2.1. Program Yürütmelerini S fland rma
Birçok ara rmac , program tayflar
kullanarak
programlar n davran sal özelliklerini bulmak için
yöntemler geli tirmi tir. Bu çal malar n tümü,
yürütmeleri soyutlamak için, yaz m tayflar (yaz m
odakl ölçüm ayg tlar taraf ndan toplanan program
tayflar ) kullanm r. Podgurski ve di erleri
[7,8,14,19], konu land lm
örneklerde program
çal malar
gruplamak için otamatik kümeleme
analizi kullanm ve elde edilen özgün kümelerin ayn
hatalardan kaynaklanan yürütme profillerini içerme
iliminde oldu unu göstermi tir. Bowring, Rehg ve
Harrold [3], program tayflar
s fland rmak için
(ba ar
ve ba ar z yürütmleri tahmin etmek),
Markov modellerini kullanm r. Bahsi geçen
yakla m, yaz m ölçüm ayg tlar
kullan r ve bir
sistemdeki her dallanma için duyargalara ihtiyaç
duymaktad r. Brun ve Ernst [4], hatal program
yürütmeleri boyunca mevcut olma e iliminde olan,
gözlemlenen olas program de mezlerini tan mlamak
için
çe itli
makine
ö renmesi
yöntemlerini
kullanm r. Bahsi geçen yakla mlar, önceden
belirlenen noktalarda
çok
ayr nt
program
soyutlamalar hesaplar ve oldukça pahal r. Jones,
Harrold ve Staska [13], hatalar n olas nedenlerini
bulmak için, deyim kapsam bilgisini (statement
coverage information) kullan r. Chen ve di erleri [6],
hesaplamalarda kullan lan yaz m bile enlerini,
problemlerin kayna
bulmak için kullan r.
2.2. Veri Toplama Ek Yükünü Azaltma
Di er ara rmac lar, ölçüm ayg tlar ek yükünü
tlamak için önceki yakla mlar iyile tirme yoluna
ba vurmu tur. Liblit ve di erleri [16,17], kullan dan
toplanan yürütme verisini etkili bir ekilde örneklemek
için yaz m sistemlerinin kaynak koduna ölçüm
ayg tlar eklerler. Fakat, bu örnekleme yakla
,
önemli bir ekilde sistem kodunun büyüklü ünü ve
sistemin bellek gereksinimini art r. Ek olarak,
örnekleme sonucu toplanan veride olu an gürültü,
ancak çok fazla miktarda gerçekle en gözlemlerle
kompanse edilmelidir ki bu baz uygulamalar için olas
de ildir. Haran ve di erleri [11], birçok s ftan birine
ait olarak yürütme verisini s fland rmak için teknikler
geli tirmi tir. Her teknik, sahada çal an program
kopyalar n belirli bir k sm na ölçüm ayg yerle tirir
ve ölçüm ayg tlar n yeri her bir program kopyas için
farkl k gösterir. Dolay yla, her bir yürütmeden
toplanan veri gerçek program tayf n sadece küçük bir
alt kümesini yakalar. Amaç, do ru s fland rmaya izin
verecek yeterli bilgiyi yakalayan birle tirilmi bir veri
kümesi yaratmakt r. Y lmaz ve di erleri, “Time Will
Tell” [24] isimli çal mada ili kili bir yakla m
sunmaktad r. Bu çal mada zaman tayf
(metod
yürütme zamanlar n izi) toplamak için minimum
miktarda yaz m ölçüm ayg kullan lm ve deneysel
olarak zaman tayf n etkili bir ekilde yürütmelerdeki
desenleri yakalayabilece i gösterilmi tir.
2.3. Donan m Sayaçlar Tabanl Program Tayflar
Ek yük maliyetini dü ürmenin bir di er yoluda, tüm
program tayf
donan m seviyesinde toplamakt r.
Anderson ve di erleri [2], tamamen donan m
performans sayaçlar ile yap lan ve az masrafl olan bir
performans sorunlar
belirleme tekni ini önermi tir.
Bu teknik, program çal rken donan mda rasgele
kesintiler yarat p, donan m sayaçlar n de erlerini
yakalar. Bu bilgiler daha sonra program n en çok
zaman harcad kod segmentlerini bulmada kullan r.
Deneysel çal malar, programlar n yeteri kadar uzun
yürütüldü ü varsay rsa, önerilen yöntemde veri
toplamak için gerekli olan ek maliyetin %5’in alt nda
kalaca
öngörmektedir.
Bu çal madaki soruya aç k olan nokta; bahsi geçen
yöntemle toplanan program tayf n, performans
analizi d nda ba ka analiz türleriyle birlikte kullan p
kullan lamayaca
r (bu makalede elde edilmeye
çal lan fonksiyonel analiz türü gibi). Bu tereddütün
temel kayna ise, bahsi geçen yakla mda, toplanan
verilerle programlar n kaynak kodlar
e le tirme
eklini kontrol alt na alacak bir yolun olmamas r.
Genel olarak, program yürütmelerinden oldukça detayl
bilgi toplanmas neredeyse her zaman mümkündür, ki
bu ba ar yürütmeleri ba ar zlardan ay rmak için
önerilmi
ve yukar da k saca özetlenen baz
çal malarda hayata geçirilmi tir. Fakat, bu tür verileri
toplamak için gerekli olan ek yürütme zaman yükü,
bu tür yakla mlar kullan z bir hale getirmektedir.
Bu makalenin amac ; ek yürütme zaman yükü ve
fland rma ba ar
aras nda verimli bir nokta
bulmakt r.
3. Donan m Ve Yaz m Ölçüm Ayg tlar
Birle tirme
Bu makale, ba ar z program yürütmelerini ba ar
olanlardan ay rt etmek için (program yürütmelerini
fland rmak için), hem etkili hem de dü ük masrafl
bir yakla m öneriyor ve önerilen yakla
deneysel
olarak de erlendiriyor. Önerilen yakla
n temelini
donan m performans sayaçlar
kullanmak suretiyle
veri toplama i ini olabildi ince donan ma gömülmesi
olu turmaktad r.
Donan m performans sayaçlar bir i lemci üzerinde
meydana gelen çe itli olaylar kaydeden i lemcinin
içine gömülmü sayaçlard r. Günümüzde, hemen
hemen bütün genel amaçl M B’ler, yürütülen komut
say , al nan dal say , önbelleklerde meydana gelen
isabetsizlik ve ba ar say lar gibi olaylar kaydetme
yetisi olan çok say da performans sayaçlar
içermektedir.
Bu sayaçlar aktif hale geçirmek için, say lacak olan
olaylar n tipi ve sayma i leminde kullan lacak olan
fiziksel sayaçlar M B’e bildirilir. Aktif hale
geldiklerinde, donan m sayaçlar ilgili olaylar sayar ve
bir küme özel amaçl yazmaçta (register) sayaç
de erlerini depolar. Bu yazmaçlar program yürütmeleri
esnas nda okunabilir ve s rlanabilirler.
Bu çal ma esnas nda kar la lan ilk sorun, donan m
sayaçlar n farkl süreçler (processes) taraf ndan
yay nlanan komutlar ay rt edememesi olmu tur. Bu
zorlu un üstesinden gelmek için süreç ba na donan m
olaylar
takip edebilen sanal donan m sayaçlar
kullan ma sunan ve perfctr (linux.softpedia.com)
olarak adland lan bir Linux çekirde i sürücüsü
kullan lm r.
Kar la lan ikinci bir sorun ise; donan m performans
sayaçlar n, yürütülmekte olan programlar hakk nda
rl bilgiye sahip olmas r. Örne in, donan m
sayaçlar , say lan bir komutun hangi program
fonksiyonuna ait oldu unu bilmezler. Dolay yla,
Bölüm 5.1’de daha detayl bir ekilde anlat ld uzere,
ham donan m tayflar (donan m sayaçlar ndan elde
edilen program tayflar ), yürütmeleri s fland rmada
kullan
olamayacak kadar kalitesizdir. Bu
olumsuzlu un etkisini azaltmak için, önerilen
yakla m, donan m sayaçlar n de erlerini fonksiyon
ça mlar yla
ili kilendirir.
li kilendirmelerin
yap labilmesi için, sayma i lemleri esnas nda hangi
fonksiyonun aktif oldu u bilgisi, geleneksel yaz m
ölçüm ayg tlar (software instrumentation tools)
kullan larak elde edilir. Bu çal mada, ili kilendirmeler
fonksiyonlar baz nda yap lsa da, önerilen yakla m,
daha çe itli ili kilendirme teknikleriyle de çal abilir.
Önerilen yakla m kabaca u ekilde özetlenebilir: 1)
yürütmenin ba nda ilgilenilen donan m sayac aktif
hale getirilir, 2) her fonksiyon ça
n ba nda ve
sonunda donan m sayac n de eri okunur ve aradaki
fark fonksiyon ça
yla ili kilendirilir, 3) yürütmenin
sonunda donan m sayac pasif hale getirilir.
Deney platforumunda yap lan bir çal ma, donan m
sayaçlar n de erlerinin 45 saat dönü ünde (45 clock
cycle) yap ld
göstermi tir. Donan m sayaçlar n
okunmas çok h zl olsa da, ödenmesi gereken ek
yürütme süresi yükü (runtime overhead) ayn zamanda
donan m sayaçlar n kaç kere okundu una da ba
r.
Dolay yla, veri toplama masraf daha da azaltmak
için, bu çal ma, 50 kerenin üzerinde ça lm
fonksiyonlarla, direkt ya da endirekt olarak 50’nin
üzerinde ça rma yapan fonksiyonlar monitör
etmemektedir. Bu kesme de eri, deneyler esnas nda
kobay yaz mlardan elde edilen veriler kullan larak,
monitör edilmesi gerekecek fonksiyon ca lar n
say
azaltacak ekilde elde edilmi tir. Burada dikkat
edilmesi gereken husus, donan m sayaçlar yürütme
süresince aktif oldu u için, monitör edilmeyen
fonksiyonlar n
(unprofiled
functions)
sayaç
de erlerinin, monitör edilen fonksiyonlar (profiled
functions) taraf ndan so ruldu udur.
Bu çal ma ayn zamanda programlar n kendi hatalar
tespit etti i zamanlarda ça rd klar fonksiyonlar
(error(...) ve fatal(...) gibi), yap lan analizlerin d nda
tutar. Bu tür fonksiyonlar, olu an hatalar n bir sonucu
olarak ca ld klar için, hatalar n kök sebeplerinin
anla lmas nda (ki bu yürütmelerin s fland lmas yla
elde edilmek istenen sonuçlardan biridir) önem arz
etmezler. Makalenin geri kalan k sm nda, bu filtreleme
lemlerinin tamam na “genel fonksiyon filtrelemesi”
ad verilmi tir.
3.1. Basit Bir Fizibilite Çal mas
Donan m ve yaz m tayflar
kombine ederek elde
edilen hibrid tayflar, aç k bir ekilde sadece donan m
tayflar ndan elde edilebilecek bilgiden daha fazla bilgi
içerir. Ne var ki, donan m performans sayaçlar ndan
elde edilen ölçüm ayg tlar , programlanabilir yaz m
tabanl ölçüm ayg tlar na oranla daha az esnektir.
Dolay yla, hibrid program tayflar n yürütmeleri
fland rabilir nitelikte olup olmad klar aç k de ildir.
Basit bir test olarak, socket sistem ça
kobay
olarak
kullanan
bir
fizibilite
çal mas
gerçekle tirilmi tir. Socket fonksiyonu, ileti im için bir
makine komutu çal ran ba ar z ça lar n, socket
fonksiyonunun hemen ba lang nda yer alan ve
desteklenmeyen parametre de erlerini tespit edip, h zl
bir ekilde hata kodu dönen basit bir kontrolden
kaynakland
anla lm r. Ba ar ça lara oranla
daha fazla komut çal ran ba ar z ça lar n bu
davran lar n sebebi ise, hatalar olu duktan sonra
letim sistemi çekirde inin o ana kadar ayr lm olan
kaynaklar serbest b rakmas olarak belirlenmi tir.
Ba ar
ça larda, soketler için ayr lan kaynaklar
ancak soket kapat ld nda serbest b rak r.
Bu basit fizibilite çal mas n sonuçlar hiçbir ekilde
nihai olmamas na ra men, donan m sayaçlar
yard yla toplanan program tayflar n, ba ar z
yürütmelerin güvenilir bir ekilde ay rt edilmesinde
kullan labilece ine dair hipotezi destekler niteliktedir.
4. Deneyler
ekil 1: Ba ar
say
ve ba ar z ça
mlarda yürütülen komut
uç nokta yarat r. Bu fizibilite çal mas nda, socket
fonksiyonun girdi olarak ald
iki parametre
kullan lm r. Bu parametreler domain ve type’t r.
Domain parametresi ileti im alan belirler (INET ve
INET6 gibi). Type parametresi ileti imin türünü
belirler (ba lant temelli ve ba lant z gibi). Bu
parametreler s ras yla 11 ve 6 de ik de er al r.
Deneylede kullan lmak üzere tüm parametre
de erlerinin kombinasyonlar
içeren 66 tane test
girdisi olu turuldu. Her girdi kombinasyonu için,
fonksiyon yürütmesi esnas nda çal
lan makine
komutlar n
say
ölçüldü.
Tüm
girdi
kombinasyonlar , deneylerin çal
platform üzerinde
desteklenmedi i için, test girdilerinden 51 tanesi
ba ar z oldu.
ekil 1, elde edilen ölçümleri
özetlemektedir. Yatay eksen, çal
lan makine
komutlar n say
, dikey eksen ise, ba ar z ve
ba ar yürütmelerden elde edilen verilerle birlikte
toplanan bütün veriyi gösterir.
Bu basit donan m tayf kullan larak, talep edilen
soketin yarat lmas n ba ar z oldu u yürütmelerin
fland p s fland lamayaca sorguland . ekil
1’de de görülebildi i gibi, sadece bir tane donan m
sayac kullan ld halde, ba ar ve ba ar z ça lar
aras ndaki fark aç kt r; hatal ça lar, ba ar ça larla
yasland nda ya daha az ya da daha çok makine
komutu yürütmektedir. Elde edilen veriler üzerinde
otomatik bir s fland rma modeli olu turmak ve bu
modeli daha önceden görülmemi yürütmeler üzerinde
namak (Weka’n n J48 algoritmas
kullanarak),
hatal ça lar tahmin etmede 0.98’lik bir F-ölçüsü
sa lad .
Socket
fonksiyonunun
kodunun
incelenmesi
sonucunda, ba ar ça lara nazaran daha az say da
Ba ar z yürütmeleri ba ar yürütmelerden ay rmada
donan m
tayf n
ba ar
ve
etkinli ini
de erlendirmek için, dört aç k kaynak kodlu gerçek
uygulama üzerinde bir dizi deneyler yap ld .
4.1. Ba ms z De ken
Bu deneylerde bir tane ba ms z de ken kullan ld ;
program tayf tipi. Bu de ken alt farkl seviyeye
sahiptir. lk üç program tayf , donan m performans
sayaçlar kullanarak toplanm r.
TOT_INS: Yürütülen makine komutlar
sayar.
BRN_TKN: Al nan dallar sayar.
LST_INS: Bellek yükleme ve bellek depolama
komutlar (load and save) sayar.
Geriye kalan üç program tayf ise geleneksel yaz m
ölçüm ayg tlar kullan larak toplanm r.
CALL_SWT: Ça lan fonksiyon kümesini
kaydeder.
STMT_FREQ: Kaynak kod deyimlerinin kaç
kere çal
ld
sayar.
TIME: Fonksiyonlar n çal ma zamanlar
nano saniyeler seviyesinde ölçer.
Literatürde çok say da yaz m tabanl program tayf
önerilmi olmas na ra men, deneylerde sadece bu üç
tip tayf n kullan lmas n birçok sebebi vard r. lk
olarak, bahsi geçen her bir program tayf , literatürde
benzer amaçlar için ba ar bir ekilde kullan lm r
[24, 13, 21, 6]. kinci olarak, ek yürütme zaman yükü
aç ndan, bu tayflar n her biri çe itli program tayf
tiplerinin temsilcisidir. Örne in, CALL_SWT ve
STMT_FREQ tayflar n ek yürütme yükü, (s ras yla)
fonksiyonlar seviyesinde basit ve kaynak kod deyimleri
seviyesinde detayl veri toplayan tayflar için bir alt
r olarak görülebilir. Benzer ekilde, TIME tayf n
ek yürütme yükü, fonksiyonlar seviyesinde basit
yürütme verisi toplayan ve çe itli nedenlerden dolay
içerik de imi (context switch) gerektiren tayflar için
yaz m
grep
flex
sed
gcc
sat r
say
10068
10459
14427
fonksiyon
say
146
162
255
versiyon
say
5
19
15
toplam
testler
3050
11417
5455
ba ar
testler
2346
8399
4454
ba ar z
testler
704
3018
1001
222196
2214
1
7701
7494
207
Tablo 1: Deneylerde kullan lan kobay yaz mlar hakk nda bilgi
alt s r olarak de erlendirelebilir. Bu çal mada,
yürütme zaman
hesaplamak için sistem ca lar
kullan lm r.
4.2. Kobay Uygulamalar
Deneylerde dört tane aç k kaynak kodlu uygulama
kullan lm r. Bunlar grep, flex, sed ve gcc’dir. Geni
çapl bir kullan
taban olan bu uygulamalar
(s ras yla) bir deseni e leyen sat rlar yazar, h zl bir
ekilde sözdizimsel çözümleyici üretir, bir ak editörü
olarak metinleri dönü türür, C programlar
derler.
Tablo 1 bu uygulamalar için baz istatistikler içerir.
lk üç uygulama, SIR [9] ad verilen bir yaz m
hatalar ambar ndan al nm r. Bu ambar, bahsi geçen
uygulamalar n
çe itli
versiyonlar
ve
bu
versiyonlardaki bilinen hatalar derler. Deneylerde
kullan lan gcc uygulamas ise GNU Compiler
Collection versiyon 2.95.2’nin resmi sürümüdür.
Deneylerde, söz konusu olan bütün uygulamalar, kendi
test havuzlar ve test kahinleriyle (test oracles) birlikte
kullan lm r.
4.3. Operasyonel Model
Deneyleri gerçekle tirebilmek için, söz konusu
uygulamalar n test havuzlar ndaki bütün testler
çal
ld ve yürütmlerden program tayflar toplad .
Her bir yürütme için ek yük ölçüldü. Test havuzlar ile
birlikte gelen test kahinleri kullan larak her bir
yürütmenin ba ar veya ba ar z oldu unu belirlendi.
Program versiyonlar n ve program tayf tiplerinin her
kombinasyonu için, be katmanl çapraz do rulama
tekni i ile Weka’n n J48 s fland rma algoritmas
kullan larak s fland rma modelleri olu turuldu ve
de erlendirildi. Di er bir de le; elde edilen
modellerin de erlendirilmesi, önceden görülmemi
yürütmeler kullan larak gerçekle tirildi.
Ek yürütme zaman yükü, bir program n ölçüm ayg tl
çal ma süresiyle orijinal çal ma süresi aras ndaki
fark n, orijinal çal ma süresine bölünmesi ile
hesapland .
fland rma modellerinin ba ar
de erlendirmek
için ise, s kl kla kullan lan precision ve recall
ölçülerine e it a rl k verilmek suretiyle hesaplanan Fölçüsü kullan ld .
4.4. Deneysel Ayarlar
Fonksiyon ça lar yla donan m sayaç de erlerini
ili kilendirmede kullan lan yaz m ölçüm ayg tlar ,
GNU’nun C Extension Framework’ü kullan larak
geli tirildi. Ayn yöntem, TIME ve CALL_SWT
tayflar
toplamada da kullan ld . Öte yandan
STMT_FREQ tayf , GNU’nun gcov test kapsam arac
yard myla topland . Kapsam bilgisinin, sadece istenilen
fonksiyonlar ad na hesaplanabilmesi için gcov
uygulamas de tirilmi tir.
Ayr ca, ek yükü hesaplamak için gerekli olan yürütme
süreleri, nano saniye cinsinden ve K-best ölçüm
yöntemi [5] kullan larak elde edildi. Tüm deneyler
CentOS 5.2 i letim sistemi çal ran ve 2GB haf zaya
sahip olan bir Intel çift i lemcili makine üzerinde
gerçekle tirildi.
Deneylerde
kullan lan
veriler,
kobay
uygulamalar
n 39 kusurlu versiyonu üzerinde
çal
lan toplam 19,922 testten elde edilmi tir (Tablo
1). Bu 39 kusurlu versiyon, ba ar z yürütmelerin
ba ar yürütmelere oran n 0.05 ile 1.50 aras nda
olmas kriteri göz önünde tutularak toplam 166 kusurlu
versiyon kümesinden seçilmi tir. Bu kriterin
uygulanmas ndaki temel sebep ise, otamatik
fland rma problemlerinde, bir s
n di erinden
çok daha yayg n olmas durumunda, varolan
tekniklerin genellikle ya kusurlu olarak çal mas ya da
özel iyile tirmeye ihtiyaç duymas r. Bu makalenin
amac
s fland rma tekniklerini de erlendirmek
olmad
için, analizlerde sadece bahsi geçen kritere
uygun kusurlu versiyonlar kullan lm r.
5. Veri ve Analizi
zleyen bölümler elde edilen sonuçlar sunmakta ve
tart maktad r.
5.1. Donan m ve Yaz m Tabanl Program Tayflar
lk çal mada, sadece donan m ve sadece yaz m
tabanl
program tayflar
taraf ndan sa lanan
fland rma ba ar ve ek yük incelendi. Donan m
tabanl tayflar elde etmek için, ilgili donan m sayac
aktif hale getirildi ve bu sayac n de eri yürütmenin
ba nda ve sonunda olmak üzere toplamda sadece iki
defa okunup, aradaki fark yürütmeyle ili kilendirildi.
Bu deney setinde ölçülen ek yük de erleri, Tablo 2’de
yürütme tabanl ili kilendirme sat rlar ndan okunabilir.
Bu sat rlardaki ‘-’ karakteri, kar k gelen deneyin
amaçlara uygun olmad için yap lmad
ifade eder.
Yaz m tabanl tayflar toplamak içinse, genel
fonksiyon filtresi aktif hale getirildi ve filtrelenmemi
her fonksiyon için gerekli veri yürütmelerden topland .
yaz m
grep
yürütme
fonksiyon
flex
yürütme
fonksiyon
sed
yürütme
fonksiyon
CALL_SWT
STMT_FREQ
TIME
TOT_INS
BR_TKN
LST_INS
0.0112
0.0763
0.0821
0.0031
0.0125
0.0036
0.0125
0.0037
0.0132
0.0152
0.1303
0.2448
0.0060
0.0169
0.0058
0.0168
0.0060
0.0167
0.0192
0.2701
0.2278
0.0075
0.0152
0.0096
0.0152
0.0083
0.0161
Tablo 2: Ek yürütme zaman yükleri
Bu deney seti için gözlemlenen ek yük de erleri, Tablo
2’de
fonksiyon
tabanl
ili kilendirme
sat rlar ndanokunabilir. Deneylerde, genel fonksiyon
filtresinin monitör edilmesi gereken fonksiyon
ça lar n say
ortalama olarak %98 oran nda
azaltt gözlemlendi.
Tablo 2’nin son üç sütunu, donan m tabanl tayflar n
sebebiyet verdi i ek yükleri göstermektedir. Bu
tablodan da anla laca üzere, donan m tayflar
toplaman n ek yükü 0.0031-0.0096 aral nda
olmu tur. Di er bir de le, sadece donan m
performans sayaçlar n aktive edilmesinin getirdi i ek
yük %1’in alt ndad r. Tablo 2’nin ilk üç sütunu ise,
yaz m tabanl tayflar taraf ndan kaynaklanan ek yükü
göstermektedir. Ça lan fonksiyonlar n listesini
kaydeden CALL_SWT tayf , yakla k olarak %1-%2
aral nda bir ek yüke sebebiyet vermi tir. Geriye kalan
yaz m tabanl tayflar n ek yükü ise, yakla k olarak
%7.6-%27 aral ndad r.
ekil 2 ise, bu çal mada elde edilen s fland rma
ba ar
n F-ölçümlerini sergilemektedir. Bu ekildeki
her kutu, bir tayf tipinden elde edilen F-ölçümlerinin
da
gösterir. Kutular n en alt ve en üst kenarlar ,
toplanan verilerin birinci ve üçüncü kartillerini
göstermektedir. Kutular n içindeki yatay çubuklar
ortanca de erleri, içi dolu daireler ise ortalama
de erleri ifade etmektedir. Ortalama de erler ayn
zamanda kutular n alt nda say ile verilmi tir.
ekilden de anla laca üzere, donan m tayflar n, az
masrafl
olmalar na
ra men
yürütmeleri
fland rmada etkili olmad klar gözlemlendi. Bu
tayflardan olu turulan s fland rma modelleri sadece
0.46’l k bir F-ölçümüyle hatal yürütmeleri tahmin
edebildi. Öte yandan, yaz m tayflar ndan elde edilen
F-ölçümlerinin genellikle daha yüksek oldu u
görülmektedir. F-ölçümlerinin ortalama de eri,
CALL_SWT için 0.58, TIME için 0.78 ve
STMT_FREQ için 0.83’tür. Sonuç olarak, donan m
sayaçlar ndan elde edilen tayflar n, az masrafl fakat
fland rmada ba ar z oldu u gözlemlendi. Yaz m
tayflar içinde bir tek CALL_SWT tayf , hem göreceli
olarak az masrafl hem de göreceli olarak makul
fland rma ba ar na sahipti. Geriye kalan yaz m
tayflar daha ba ar fakat çok daha fazla masrafl yd .
ekil 2: Donan m ve yaz m tabanl tayflar n s
ba ar
fland rma
5.2. Fonksiyon Ça lar le Veriyi li kilendirme
Yap lan ikinci çal ma, ölçüm ayg tlar n ek yükünü
rland rken s fland rma ba ar
art rmak için,
donan m ve yaz m ölçüm ayg tlar
birle tirmeyi
hedeflemektedir.
Buradaki
fikir,
donan m
sayaçlar ndan elde edilen veriyi belirli program
eleriyle ili kilendirmektir.
Bu fikri s namak için deney prosedürlerinde birçok
de iklik yap lm ve daha sonra önceki çal ma tekrar
edilmi tir. lk de iklik, fonksiyon ça lar yla
donan m sayaçlar ndan gelen verileri ili kilendiren
yaz m tabanl ölçüm ayg tlar kullanmak olmu tur.
Geli tirilen ayg tlar, ilgilenilen fonksiyon ça lar n
ba nda ve sonunda takip edilen donan m sayac n
de erini okuyarak, aradaki fark fonksiyon ça
ile
lemektedir. Bir yürütmeden toplanan hibrid program
tayf , bir sayaç de erleri vektörü olarak dü ünülebilir.
Bu vektördeki her bir de er, kar k gelen fonksiyonun
içinde toplamda (bütün yürütme boyunca) kaç tane
gözlemlenen donan m olay n meydana geldi ini ifade
eder.
CALL_SWT
F-ölçüsü
ek yük
0.59
0.0136
Tablo 3: gcc için s
ekil 3: Yaz m tabanl ve hibrid tayflar n s
ba ar
fland rma
Tablo 2’nin son üç sütununda, fonksiyon tabanl
ili kilendirme sat rlar olarak i aretlenen veriler, bu
çal mada gözlemlenen ek yükü ifade etmektedir. Bu
tablodan da görülece i üzere, hibrid yaz m ve
donan m yakla
ndan kaynaklanan ek yük, %1,25%1,50 aral ndad r.
Donan m tabanl tayflar
toplaman n ek yükü bir önceki çal maya göre 2-4 kat
aras artsa da, bu ek yük ço u geleneksel yaz m
tayf n ek yüküne oranla çok daha azd r (Tablo 2).
ekil 3’te elde edilen F-ölçümleri görülmektedir. lk
gözlemlenen sonuç, fonksiyon ça lar yla donan m
sayaçlar n
ili kilendirilmesinin
s fland rma
ba ar
önemli ölçüde art rd
r. F-ölçümü bir
önceki çal maya göre 0.46’dan 0.85’e yükselmi tir.
yaslanabilir ek yük seviyeleri için, hibrid tayflar,
ba ar z yürütmeleri belirlemede yaz m tayflar ndan
önemli bir ekilde daha iyi oldu u gözlemlenmi tir.
Örne in, ortalama ek yükün (%1,5) hemen hemen ayn
oldu u CALL_SWT tayf ile k yasland nda, hibrid
tayflar n s fland rma ba ar
daha yüksektir;
ortalama F-ölçümü CALL_SWT için 0.58 iken bu
de er hibrid tayflar için 0.85’tir.
Alternatif olarak, k yaslanabilir ba ar seviyeleri için,
hibrid tayflar önemli bir ekilde daha az masrafl
oldu u gözlemlenmi tir. Örne in, hibrid tayflar ve
STMT_FREQ tayflar benzer F-ölçümlerine sahipler;
ortalama F-ölçümü, STMT_FREQ ve hibrid tayflar
için s ras yla 0.83 ve 0.85’tir. Bununla birlikte hibrid
tayflar n ortalama ek yükü %1,5 iken, bu yük
STMT_FREQ tayf için %15,9’dur.
5.5 gcc le Yineleme
u ana kadar yap lan çal malarda orta büyüklükte
kobay uygulamalar kullan lm r. Bu çal mada ise,
önerilen yakla m çok daha büyük bir ugulama olan
STMT_FREQ
0.82
1.2424
fland rma ba ar
TIME
0.59
0.5766
TOT_INS
0.81
0.0138
ve ek yük
GNU derleyicisi (gcc v2.95.2) üzerinde denenmektedir.
Analizlerin gerçekle ebilmesi için, bahsi geçen
uygulamadan CALL_SWT, STMT_FREQ, TIME ve
TOT_INS tayflar topland ve bu tayflar ba ar ve
ba ar z yürütmeleri s fland rmak için kullan ld .
Deneylerde, derleyicinin sadece cc1 bile eni için veri
topland . Bu bile en gcc derleyicisinin çekirdek
bile enidir ve kaynak kodunu makine koduna
derlemekten sorumludur. Toplamda,
7701 test
çal
ld ve bu testlerden 207’si ba ar z olurken
7494’ü ba ar oldu.
Deneylerde ilk olarak genel fonksiyon filtreleme ad
gerçekle tirildi (bkz. Bölüm 3). Bu monitör edilmesi
gereken fonksiyon ça lar n say
%99 oran nda
azaltt . Önceki çal malarda da oldu u gibi, yaln zca
bir iç hata tespit edildikten sonra ça lan fonksiyonlar
da ay kland .
Tablo 3, bu çal mada gözlemlenen ek yükleri ve Fölçümlerini göstermektedir. Genelde bu sonuçlar,
önceki çal malarda kullan lan daha küçük çapl
uygulamalar üzerinde elde edilen sonuçlarla
uyumludur. Ek yük verisine bakarak, bu çal mada
TOT_INS tayf n ek yükü di er çal malarda elde
edilen maliyetlere benzerken, STMT_FREQ tayf n
son derece daha yüksek bir ek yüke sahip oldu u
görülmektedir. Manüel yap lan bir çal ma sonucunda,
ek yükteki sapmalar n bir nedeninin, gcc
uygulamas n, di er uygulamalara k yasla fonksiyon
ça
ba na daha fazla komut çal rmas oldu u
anla lm r.
Tablo 3’ten de görülece i üzere, TOT_INS tayf ,
STMT_FREQ tayf na göre, benzer s fland rma
ba ar
çok daha az masrafl bir
ekilde
gerçekle tirmi tir. TOT_INS tayf için ortlama Fölçümü 0.81 ve ortalama ek yük %1,4 iken, ayn
de erler STMT_FREQ tayf için s ras yla 0.81 ve
%124’tür. Alternatif olarak, ek yük maliyetinin benzer
oldu u (%1,4 civar nda) CALL_SWT tayf ile
yasland nda, TOT_INS tayf çok daha iyi bir
fland rma
ba ar
göstermi tir;
F-ölçümü
TOT_INS için 0.81 iken CALL_SWT için sadece
0.59’dur.
6.Sonuç
Birçok ara rmac , program tayflar ndan yaz m
sistemlerinin davran sal özelliklerini belirlemenin
yollar üstünde çal
r. Bu konuda yap lan
çal malardan al nan sonuçlar ümit vericidir [24, 13,23,
22, 12, 18, 15]. Fakat, önerilen yakla mlar n ek yük
masraflar üzerinde çok durulmam r. Bu makale,
program yürütmelerini güvenilir ve etkili (az masrafl )
bir ekilde s fland rmak için yeni bir yöntem
önermi tir. Bu yakla m, dü ük ek yük masrafl
donan m tayflar , az say da ama daha yüksek masrafl
yaz m ölçüm ayg tlar yla birle tirmektedir. Önerilen
yakla m di er temsili yakla mlarla kar la rmal
olarak deneysel yöntemlerle s nanm r.
Tüm deneysel çal malar n iç ve d geçerlili ine
ili kin tehlikelerden muzdarip oldu unu hat rlatmakta
fayda
vard r.
Bu
çal man n
sonuçlar n
genelle tirilme yetisini k tlad
için, d geçerlili e
ili kin tehlikeler daha fazla önem arz etmektedir. Bir
tehlike, deneylerde kullan lan kobay uygulamalar n
temsil edilebilirlili i ile ilgilidir. Kobaylar n tümü
gerçek uygulamalar olmas na ra men, bu kobaylar
sadece dört veri noktas temsil ederler. Alakal ba ka
bir tehlike ise, deneylerde kullan lan hatalar n temsil
edilebilirlili i ile ilgilidir. Grep, flex ve sed
uygulamalar literatürdeki pek çok benzer çal ma
taraf ndan s kl kla kullan lm
olmas na ve gcc
uygulamas çok kullan lan bir derleyici olmas na
ra men, bu uygulamalardaki hatalar, bütün potansiyel
hatalar n sadece k tl bir alt kümesini temsil eder.
Bu k tlamalar ak lda tutarken, elde edilen deney
sonuçlar n, temel hipotezimizi destekledi ine
inanmaktay z: Hibrid program tayflar , dü ük ek
yürütme zaman yüküne sahip oldu u halde, ba ar z
program yürütmelerini, ba ar
yürütmelerden
güvenilir bir ekilde ay rt etme yetisine sahiptir.
Önerilen yönteminin orijinal ve ilginç oldu una
inan yoruz. Bu nedenle, hibrid donan m ve yaz m
tayflar n, hata yerini saptama, hata tahmini, güvenlik
güvencesi gibi çe itli yaz m kalite güvence
yakla mlar nda, program yürütmlerini soyutlama
mekanizmas olarak kullanmay planl yoruz.
7. Onaylar
Bu ara rma 7. Avrupa Birli i Çerçeve Program
içerisinde Marie Curie International Reintegration
Grant
(FP7-PEOPLE-IRG-2008),
TÜB TAK
(109E182) ve US NSF (CCF-0811284) taraf ndan
desteklenmi tir.
8. Kaynaklar
[1] H. Agrawal, J. Horgan, S. London, and W. Wong. Fault
localization using execution slices and dataflow tests. In
ISSRE Conference Proceedings, 1995.
[2] J. M. Anderson, L. M. Berc, J. Dean, S. Ghemawat, M. R.
Henzinger, S.-T. A. Leung, R. L. Sites, M. T.
Vandevoorde,C. A. Waldspurger, and W. E. Weihl.
Continuous profiling: where have all the cycles gone? ACM
Trans. Comput. Syst.,15(4):357{390, 1997.
[3] J. F. Bowring, J. M. Rehg, and M. J. Harrold. Active
learning for automatic classification of software behavior. In
Proc. Of the Int'l Symp. on Software Testing and Analysis
(ISSTA 2004), sayfalar 195-205, Temmuz 2004.
[4] Y. Brun and M. D. Ernst. Finding latent code errors via
machine learning over program executions. In Proc. of the
Int'l Conf. on SW Eng. (ICSE 2004), sayfalar 480-490, 2004.
[5] R. E. Bryant and D. R. O'Hallaron. Computer Systems:
AProgrammer's Perspective. Prentice Hall, 2002.
[6] M. Y. Chen, E. Kiciman, E. Fratkin, A. Fox, and E.
Brewer. Pinpoint: Problem determination in large, dynamic
internet services. Dependable Systems and Networks,
InternationalConference on, 0:595-604, 2002.
[7] W. Dickinson, D. Leon, and A. Podgurski. Pursuing
failure: the distribution of program failures in a profile space.
In Proc. Of the 9th ACM SIGSOFT international symposium
on Foundations of Soft. Eng., sayfalar 246-255, Eylül 2001.
[8] W. Dickinson, D. Leon, and A. Podgursky. Finding
failures by cluster analysis of execution profiles. In Proc. of
the Int'l Conf. on Soft. Eng., sayfalar 339-348, 2001.
[9] H. Do, S. Elbaum, and G. Rothermel. Supporting
controlled experimentation with testing techniques: An
infrastructure and its potential impact. Empirical Soft. Eng.,
10(4):405-435, 2005.
[10] M. Hall, E. Frank, G. Holmes, B. Pfahringer, P.
Reutemann, and I. H. Witten. The weka data mining
software.SIGKDD Explorations, 11(1):10-19, 2009.
[11] M. Haran, A. Karr, A. Orso, A. Porter, and A. Sanil.
Applying classification techniques to remotely-collected
program execution data. SIGSOFT Softw. Eng. Notes,
30(5):146-155, 2005.
[12] G. Hoglund and G. McGraw. Exploiting software: How
to break code. Addison-Wesley Publishing Company.
[13] J. A. Jones, M. J. Harrold, and J. Stasko. Visualization
of test information to assist fault localization. In ICSE
Conference Proceedings, sayfalar 467-477, 2002.
[14] D. Leon, A. Podgurski, and L. J. White. Multivariate
visualization in observation-based testing. In ICSE, sayfalar
116-125, 2000.
[15] B. Liblit, A. Aiken, A. X. Zheng, and M. I. Jordan. Bug
isolation via remote program sampling. SIGPLAN Not.,
38(5):141-154, 2003.
[16] B. Liblit, A. Aiken, A. X. Zheng, and M. I. Jordan. Bug
isolation via remote program sampling. In PLDI, sayfalar
141-154, 2003.
[17] B. Liblit, M. Naik, A. X. Zheng, A. Aiken, and M. I.
Jordan. Scalable statistical bug isolation. In PLDI, 2005.
[18] A. Podgurski, D. Leon, P. Francis, W. Masri, M. Minch,
J. Sun, and B. Wang. Automated support for classifying
software failure reports. In ICSE, sayfalar 465-475, 2003.
[19] A. Podgurski, D. Leon, P. Francis, W. Masri, M. M.
Sun, and B. Wang. Automated support for classifying sw
failure reports. In ICSE 2003, sayfalar 465-474, May s 2003.
[20] M. Renieris and S. P. Reiss. Fault localization with
nearest neighbor queries. In ASE Conference Proceedings.
[21] R. Santelices, J. A. Jones, Y. Yanbing, and M. J.
Harrold. Lightweight fault-localization using multiple
coverage types. In ICSE, sayfalar 56-66, 2009.
[22] S. Singer, K. Gross, J. Herzog, S. Wegerich, and W.
King. Model-based nuclear power plant monitoring and fault
detection: theoretical foundations. In Proceedings of the
International Conference on Intelligent Systems Applications
to Power Systems, sayfalar 60-65, 1997.
[23] R. Vilalta and S. Ma. Predicting rare events in temporal
domains. In ICDM Proceedings, sayfalar 474-481, 2002.
[24] C. Yilmaz, A. Paradkar, and C. Williams. Time will tell:
fault localization using time spectra. In ICSE, 81-90, 2008.

Benzer belgeler