Vol .15, No. 2, 74-83, January 2019

## SIFAT-SIFAT ROLLBACK RECOVERY MENGGUNAKAN UNCOORDINATED CHECKPOINTING BERBASIS
CAUSALITY STRENGTH
Junianto Sesa*

## Abstract
Fault tolerance approach is the most popular computing application on computer devices in which depends on checkpoint uncoordinated. This alternative approach is based on checkpoint uncoordinated and logging message requiring all records, imposing  works,  memories and overhead becomes significant to communication. Recent studies have found that many applications on computer are send-determinism which can possibly design a new fault tolerance protocol. Thus, this research uses checkpoint uncoordinated protocol based causality strength , a send-determinism feature to record one part of the messages without restarting the process systematically when the error occurs. By drawing the protocol and proving its validity are required as the effective methods of this research. With this alternative approach, the protocol can functionally work where the only small portion of the message is recorded and domino effect does not occur.
Keywords : Causality Strength, Domino Effect, Rollback Recovery, Uncoordinated Checkpointing

## Abstrak
Pendekatan  toleransi  kesalahan  yang  paling  populer  untuk  aplikasi  komputasi  pada  perangkat  komputer bergantung  pada checkpoint  uncoordinated .  Alternatif  pendekatan  tersebut  berdasarkan  pada checkpoint uncoordinated dan logging pesan  mengharuskan  pencatatan  semua  pesan,  memaksakan  pekerjaan memori/penyimpanan tinggi dan overhead yang signifikan pada komunikasi. Baru-baru ini telah diamati bahwa banyak  aplikasi  pada  komputer  bersifat send-determinism yang  memungkinkan  untuk  mendesain  protokol toleransi  kesalahan  baru.  Sehingga  penelitian  ini  menggunakan  protokol checkpoint  uncoordinated berbasis causality strength yang bersifat send-determinism yang  hanya  mencatat satu bagian dari pesan dan tidak perlu me-restart  secara  sistematis  semua  proses  ketika  kegagalan  terjadi.  Untuk  menunjukkan  bahwa  penelitian  ini berjalan  sesuai  dengan  metode  yang  digunakan  yaitu  dengan  menggambarkan  protokol  dan  membuktikan kebenarannya.  Dengan  menggunakan  pendekatan  tersebut,  dapat  ditunjukkan  bahwa  protokol  ini  benar-benar berhasil dimana hanya mencatat sebagian kecil dari pesan dan tidak terjadi efek domino.
Kata kunci : Causality Strength , Efek Domino, Rollback Recovery , Uncoordinated Checkpointing

## 1. Pendahuluan
Perkembangan  teknologi  yang  sangat  pesat  di  era  globalisasi  saat  ini  telah  memberikan banyak  manfaat  dalam  kemajuan  diberbagai  aspek,  Hampir  semua  aspek  kegiatan  manusia  saat  ini bergantung pada komputer. Seperti dalam kegiatan perkantoran, perbankan, perdagangan, pendidikan, bisnis,  dan  sebagainya.  Namun  demikian,  dengan  berkembangnya  teknologi  tentu  tidak  lepas  dari beberapa  kekurangan  yang  terus  menjadi  perhatian  peneliti  dibidang  komputasi.  Salah  satu    yang sering menjadi perhatian peneliti yaitu masalah sistem terdistribusi.
Sistem terdistribusi adalah suatu sistem jaringan komputer yang saling terhubung sedemikian sehingga  seolah-olah  menjadi  sebuah  komputer yang  digunakan  oleh  satu  pengguna.  Sebuah  sistem yang  terdiri  dari  beberapa  komponen  software  atau  hardware  yang  saling  bebas  dimana berkomunikasi  dan  berkoordinasi  melalui message baik  terhubung  maupun  tidak  terhubung  yang
terlihat  satu  kesatuan  dan  dirancang  untuk  menghasilkan  fasilitas  komputasi  terintegrasi.  Perintah yang  efisien  untuk Pesan sederhana  dalam  sistem  komputasi mobile .  Perintah  ini  membutuhkan sumber daya minimal pada hosts mobile dan jaringan nirkabel. Perintah ini bersifat terskala dan dapat dengan  mudah  menangani  perubahan  dinamis  dan  jumlah hosts  seluler yang  berpartisipasi  dalam sistem  serta  menawarkan  penundaan  yang  tidak  perlu,  kinerja Pesan yang  rendah  dan  pengeluaran biaya yang optimal [1].
Perhatian  utama  dalam  sistem  terdistribusi  adalah  memastikan  tingkat  keandalan  dan ketersediaan yang telah ditentukan. Sistem ini cenderung gagal karena tingginya kompleksitas. Oleh karena itu fault tolerance menjadi isu utama diatasi dalam merancang sistem ini [6]. Terdapat model yang  dirancang  untuk  aplikasi  serial  atau  solusi  berbasis coordinated  checkpoint .  Model  ini  di skenario  berdasarkan uncoordinated  checkpointing dikombinasikan  dengan message  logging . Diperkenalkan dua poin kunci untuk meminimalkan fault tolerance overhead untuk aplikasi paralel, yang  pertama  adalah  penggunaan factor mewakili  hubungan  ketergantungan  antar  proses,  kedua adalah  menggunakan  interval  checkpoint  khusus  untuk  masing-masing  proses.  Percobaan menunjukkan  bahwa  model  tersebut  berkinerja  dengan  baik  seperti  penelitian  sebelumnya  untuk aplikasi  serial  atau coordinated  checkpointing sambil  menjalankan  aplikasi  paralel  dengan menggunakan uncoordinated checkpoint  dikombinasikan  dengan messages  logging ,  Model  interval checkpoint  ini  secara  efektif  meminimalkan overhead .  Bahkan,  kesalahan  prediksi overhead lebih kecil dari 5% untuk semua aplikasi yang diuji [4].

## 2. Konsep Dasar Pesan
Lamport mendefinisikan hubungan klasik “terjadi sebelum”, dilambangkan dengan " ". Definisi 2.1 ( Yoshida, 2001 )
Dua kejadian a dan b memiliki relasi jika dan hanya jika memenuhi salah satu syarat berikut :
1. Jika a dan b kejadian pada objek yang sama dan a terjadi sebelum b.
2. Jika a adalah kejadian pengiriman Pesan pada satu objek dan b adalah kejadian menerima Pesan yang sama dari objek yang lain.
3. Terdapat kejadian c sedemikian sehingga
dan
Dua kejadian a dan b dikatakan bersamaan jika
dan dan dinotasikan dengan .
Takaichi Yoshida mendefinisikan peristiwa pemesanan kausal yang mana terkait dengan yang terjadi sebelum hubungan. Peristiwa pemesanan kausal didefinisikan sebagai berikut:
Definisi 2.2 ( Yoshida, 2001 )
Jika ,  dan memiliki  tujuan  objek  yang  sama,  maka harus dipenuhi. Dimana dinotasikan sebagai kejadian pengiriman dari Pesan , dan dinotasikan sebagai kejadian penerimaan Pesan .
Definisi  ini  mengatakan  bahwa  jika  kejadian  pengiriman Pesan "terjadi  sebelum" peristiwa  pengiriman Pesan ,  objek  tujuan  dari  kedua Pesan ini  harus  menerima Pesan sebelum Pesan .

## Junianto Sesa
Gambar 2.1 Kejadian konvensional pengurutan kausal
Mengirim Pesan berarti menghubungkan Pesan ke antrian dari tujuan objek, sedangkan menerima Pesan berarti  mengambil Pesan dari  antrian Pesan ke  objek  tujuan  dan  mulai  memprosesnya. Objek tidak dapat mengontrol urutan penerimaan, bagaimanapun kejadiannya.
Karena  tidak  dapat  melihat  kejadian  internal  apapun  dalam  suatu  objek,  maka  dibatasi  dari peristiwa  eksternal,  yaitu  peristiwa  yang  sesuai untuk  pengiriman,  dan  penerimaan Pesan .  Sehingga didefinisikan hubungan causality strength antar Pesan sebagai berikut:
Definisi 2.3 ( Yoshida, Takaichi. 2001 )
1. Jika terjadi segera setelah pada objek yang sama maka . 2. Jika terjadi segera setelah pada objek yang sama maka . 3. Jika dan maka 4. Jika dan maka
Gambar 2.2 Struktur pohon relasi causality strength
Definisi  2.4 Eksekusi  yang  valid  dalam  pengiriman  pesan  deterministik  adalah  eksekusi  di  mana setiap  proses  mengirim  urutan    pesan  yang  valid  dan  kausalitas  diperhitungkan  dalam  pengiriman pesan.
Definisi  2.5 (Interval checkpoint dan Round ):  Interval checkpoint adalah  himpunan  peristiwa antara dan . adalah nomor Round dari interval checkpoint .
Definisi  2.6 Misalkan menjadi  himpunan  pesan  yang  di rollback dari  proses . jika  dan hanya  jika dan dengan .  Dilambangkan  dengan subhimpunan pesan dalam yang diterima di saluran .
Definisi 2.7 Misalkan merupakan himpunan pesan yang di log dari suatu proses . jika dan
hanya  jika  untuk  proses , dan dengan .  Dilambangkan dengan subhimpunan pesan di yang dikirim pada saluran
.
Definisi  2.8 Misalkan menjadi  himpunan  pesan  yang  diputar  ulang  dari  proses . jika  dan hanya  jika dan dengan .  Dilambangkan  dengan subhimpunan pesan dalam yang dikirim pada saluran . Perlu dicatat bahwa
. Date saat ini  pada  proses di log dengan .  Tanggal  dari  suatu  peristiwa adalah
ketika terjadi.
Definisi 2.9 Misalkan menjadi kumpulan pesan OrStan , dan pesan di saluran
. jika dan  hanya  jika (       ) dan (          ) . Dilambangkan dengan subhimpunan pesan di diterima di saluran . Perlu dicatat bahwa .
dan . Definisi 2.10 Misalkan merupakan Stage dari proses . Misalkan menjadi rangkaian
kejadian pada proses dalam Stage . Kejadian
jika dan hanya jika
ketika
terjadi.
Definisi 2.11 Stage pesan di mana . Definisi 2.12 Misalkan adalah himpunan pesan tidak stabil dalam Stage . Pesan jika dan hanya jika . Kami mendefinisikan (atau operator lain) sebagai himpunan proses
yang OrStan dalam Stage yang lebih rendah dari atau sama dengan .
Definisi 2.13 Misalkan adalah himpunan pesan yang di rollback dalam Stage .
jika dan hanya jika .

## 3. Rollback Recovery
Rollback  recovery menghidupkan  kembali  sistem  ke  keadaan  yang  konsisten  setelah mengalami  kegagalan,  membuat  toleransi  kesalahan  dengan  menyimpan  secara  berkala  keadaan proses  selama  eksekusi  bebas  kegagalan,  dan  memperlakukan  aplikasi  sistem  terdistribusi  sebagai kumpulan proses yang berkomunikasi melalui jaringan.
Ketergantungan dapat memaksa beberapa proses yang tidak gagal dilepaskan, fenomena ini disebut "efek domino“. Jika setiap proses mengambil checkpoint secara bebas, maka sistem tidak dapat menghindari efek domino, skema ini disebut uncoordinated checkpoint.
 : Checkpoint secara umum ke pada proses .
 : Sebuah proses dengan mengambil sebuah checkpoint sebelum mulai dieksekusi.

## 4. Hasil dan Pembahasan
Protokol  yang  tidak  terkoordinasi  akan  mengalami  efek  domino  karena  proses  perlu  di rollback dan efek domino dapat memaksa beberapa proses untuk memulai kembali dari awal eksekusi. apabila  protokol  tidak  rollback  proses  orphan,  maka  proses  tersebut  tidak  mengalami  efek  domino. Namun,  karena  protokol  rollback  proses  pengiriman  pesan  yang  orphan,  maka  dapat  menciptakan efek domino. Pesan yang dikirim kembali sebelum checkpoint memaksa pengirim untuk  rollback ke checkpoint sebelumnya. Untuk mengidentifikasi pesan-pesan ini, protokol menggunakan round .
Gambar 4.1 Skenario Simulasi
Jika  proses gagal,  ia  akan  kembali  ke checkpoint terakhirnya
(2  sebagai  nomor checkpoint ). Proses dan harus rollback untuk memutar ulang pesan dan . Pesan dan merupakan pesan yang dirollback. Ketika rollback, pesan menjadi orphan. Namun, proses tidak perlu melakukan rollback karena akan diputar ulang terlepas dari urutan penerimaan dan selama eksekusi ulang (kausal kuat).
Gambar  4.2  berisi  tentang  protokol  yang  dieksekusi  oleh  proses  aplikasi.  Gambar  4.3 menyajikan proses khusus, yang disebut proses recovery , yang digunakan untuk recovery .
Local Variables: 1: Status i
Running // Status dari proses, Running, Blok atau RolledBack 2: TS i 1; Round i 1; Stage i 1 // TS dari kejadian saat ini, nomor Round dan nomor stage pada proses P i 3: NonAck i ; // daftar pesan yang dikirim oleh proses P i dan belum dijawab 4: Logs i ; // daftar pesan yang dicatat pada P i 5: SPR i // Data tentang  pesan (sent per round). SPR i [Round send ]. TS adalah TS P i pada awal dari Round send . 6: RPS i // Data tentang pesan (received per stage) 7: RL i // RL i [j]. round di mana P j harus rollback setelah kegagalan; RL i [j]. TS adalah TS yang sesuai 8: OrphCount i // OrphCount i [stage] adalah jumlah proses yang akan mengirim ulang pesan orphan ke P i dalam stage stage 9: OrphStages i ; // Stage di mana pesan orphan telah diterima oleh P i 10: LogStages i ; // Stage di mana P i telah mencatat pesan untuk diputar ulang
P 0
P 1
P 2 P 3 P 4 𝐶 𝐶 𝐶 𝐶 𝐶 𝐶 𝐶 3 𝐶 3 𝐶 4 𝐶 4 r=1 r=2 r=1 r=1 r=1 r=1 r=2 r=2 r=2 r=2 m 1 m 2 m 3 m 4 m 5 m 6 m 7 m 8 m 9 m 10
11: ReplayLogged i // ReplayLogged i [stage] adalah daftar pesan yang dicatat oleh P i untuk diputar ulang dalam stage stage 12: 13: Upon sending message msg to 14: wait until Status i = Running 15: TS i TS i + 1 16: NonAck i NonAck i [ ( , Round i , TS i ,msg) 17: Send (msg, TS i , Round i , Stage i ) to process 18: 19: Upon receiving (msg, TS send , Round send , Stage send ) from 20: if TS send >  RPS i [Stage i ][j].TS then // msg diterima untuk pertama kalinya 21: if Round send <  Round i then // dicatat 22: Stage i Max(Stage i , Stage send + 1 23: else 24: Stage i Max(Stage i , Stage send ) 25: TS i TS i + 1 26: RPS i [Stage i ][j].TS TS send 27: Send (Ack, Round i , TS send ) to 28: Deliver msg to the application 29: else if stage such that TS send = RPSi[stage][j].TS then // pesan terakhir dari satu stage
30: OrphCount i [stage] OrphCount i [stage] -1 31: if OrphCount i [stage] = 0 then // Proses menerima semua pesan duplikat untuk stage ini 32: Send (NoOrphanStage, stage) to the recovery process 33: 34: Upon receiving ( Ack, Round recv , TS send ) from 35: Remove ( , Round send , TS send , msg ) from NonAck i 36: if Round send < Round recv then // mencatat 37: Logs i Logs i [ ( , Round send , TS send , Stage send , Round recv ,  msg ) 38: else 39: SPR i [Round send ][ ].round recv Round recv 40: 41: Upon checkpoint 42: Save ( Round i , ImagePs i , ReceivedPerStage i , SentPerRound i , Logs i , Stage i , TS i ) on stable storage 43: Round i Round i + 1 44: Stage i Stage i + 1 45: SPR i [Round i ].TS TS i 46: 47: Upon failure of process 48: Get last ( Round i , ImagePs i , RPS i , SPR i , Logs i , Stage i , TS i ) from stable storage 49: Restart from ImagePs i 50: Status i RolledBack 51: Send ( Rollback, Round i , TS i ) to all application processes and to the recovery process 52: Send SPR i to the recovery process 53: 54 : Upon receiving ( Rollback, Round rb , TS rb ) from 55: Status i Blocked 56: Send SPR i to the recovery process 57: 58: Upon receiving ( RL recov ) from the recovery process 59: if RL recov [i].round < Round i then // yang akan di rollback 60: Get ( RL recov [i].round, ImagePs i , RPS i , SPP i , Logs i , Stage i , TS i ) from stable storage 61: Status i RolledBack
62: for all stage such that RPS i [stage][j].TS > RL recov [j].TS do // Mencari stage yang memiliki pesan orphan 63: OrphStages i OrphStages i stage
64:
OrphCount i [stage] OrphCount i [stage] + 1 65: for all ( , Round send , TS send , Stage send , Round recv , msg ) in Logs i such that Round recv RL recov [j].round do //Looking for logged messages to be replayed 66:
LogStages i LogStages i Stage send 67: ReplayLogged i [Stage send ] ReplayLogged i [Stage send ] [ ( , Round send , TS send , Stage send , Round recv , msg ) 68: Send ( Orphan, Status i , Stage i , OrphStages i , LogStages i ) to the recovery process 69: 70: Upon receiving ( ReadyStage, Stage ) from the recovery process 71: if ReplayLogged i [Stage]
then // Kirim pesan yang sudah dicatat jika ada 72: Replay msgs ReplayLogged i [Stage] 73: if ( Status i = RolledBack Stage i = Stage+ 1 ) ( Status i = Blocked Stage i = Stage ) then 74: Status i = Running

## Gambar 4.2 Algoritma Proses
Local Variables: 1: DependencyTable //DependencyTable[j][Round send ][k].round recv adalah SPR dari proses j 2: RolledBackStage // RolledBackStage[stage] berisi daftar proses rollback yang diblok dalam stage stage 3: BlockedStage // berisi daftar proses yang tidak Rollback dan pesan yang dicatat diblok dalam stage stage 4: NbOrphanStage // NbOrphanStage[stage] adalah jumlah proses yang memiliki setidaknya satu pesan orphan dalam stage stage
5: 6: Upon receiving ( Rollback, Round rb , TS rb ) from 7: RL recov [j].round Round rb 8: RL recov [j].TS TS rb 9: wait until DependencyTable is complete 10: RL tmp 11: repeat 12: for all such that RL tmp [j] RL recov [j] do 13: RL tmp [j] RL recov [j] 14: for all such that DependencyTable i [k][Roundsend][j].Round recv RLrecov[j].round do
15: RL recov [k].round (RL recov [k].round, Round send ) // Jika Round send diambil, RL recov [k].TS juga diperbaharui 16: until RL recov = RL tmp 17: Send RL recov to all application processes 18: 19: Upon receiving SPR j from 20: DependencyTable[j] SPR j 21: 22: Upon receiving ( OrphanNotification, Status j ,Stage j ,OrphStages j , LogStages j ) from 23: if Status j = Rolled-back then 24: RolledBackStage[Stage j ] RolledBackStage[Stage j ] 25: else 26: BlockedStage[Stage j ] BlockedStage[Stage j ] 27: for all stage LogStages j do 28: BlockedStage[stage] BlockedStage[stage]
29: for all stage OrphStages j do 30:
NbOrphanStage[stage] NbOrphanStage[stage] + 1 31: if OrphanNotification has been received from all application processes then 32:
Start NotifyStages 33: 34: Upon receiving ( NoOrphanStage, Stage ) from 35: NbOrphanStage[Stage] NbOrphanStage[Stage] - 1 36: Start NotifyStages 37: 38: NotifyStages 39: for all stage such that NbOrphanStage[stage’] do // pemberitahuan untuk stage yang tidak bergantung pada pesan orphan 40:
Send ( ReadyStage, stage ) to all processes in BlockedStage[stage] 41: Send ( ReadyStage, stage ) to all processes in RolledBackStage[stage+ 1]
Gambar 4.2 Algoritma Recovery
Lemma  4.1 Misal  diberikan  2  proses dan , mengirim  pesan  di  saluran
.  Jika  proses rollback maka . Bukti  : Misal )  dan checkpoint kembali  pada  proses .  Karena )  dan di mana . Jika dan di mana , maka
berdasarkan definisi pesan yang di log .
Proposisi  4.1 Misalkan dan merupakan  dua  pesan.  Jika
maka
( ) .
Proposisi  4.2 Misalkan dan merupakan  dua  pesan.  Jika
maka
( ) .
Proposisi 4 . 3 (Mengirim  kondisi  pesan  yang  diputar ulang):  Misalkan . dikirim  jika  dan
hanya jika . Proposisi 4.4 (Mengirim kondisi pesan yang tidak diputar ulang): Misalkan dikirim jika
dan hanya jika .
Sekarang diberikan kondisi untuk memutar ulang pesan yang di rollback dari stage :
Lemma 4.2 , dikirim kembali jika, dan hanya jika, . Bukti : Berdasarkan Lemma 4.1 jika maka atau . 1) Jika , (Baris  24  Gambar  4.18), dikirim  jika .  menurut
Proposisi 3.

## Junianto Sesa
2) Jika , dikirim  jika . menurut  Proposisi  4.4.  Karena dan maka (sebagai  stage  penerima  selalu  lebih  besar  dari  salah  satu pesan yang terekam  yang diterima: baris 21-22 gambar 4.18). Jadi dikirim jika
. Lemma 4.3 Semua pesan yang dirollback  akhirnya dikirim ulang.
Bukti : Misalkan adalah himpunan pesan orphan dengan stage terendah. Jadi
, dikirim  menurut  Lemma  2.  Dan , dikirim  sesuai  dengan Proposisi  3.  Kemudian ;  dan , terkirim.  Dan  seterusnya
sampai dan .
Sekarang akan dibuktikan bahwa kausalitas diperhitungkan pada pengiriman pesan. Kausalitas rusak  jika  untuk  dua  pesan dan , , diterima  sebelum selama recovery .  Jika semua proses kembali dalam keadaan yang tidak tergantung pada , kondisi ini dijamin karena tidak  dapat  dikirim  sebelum diputar  kembali.  Kami  pertama  kali  menunjukkan  bahwa,  jika aplikasi  dalam  keadaan  di  mana dan keduanya  dapat  dikirim,  terdapat  pesan orphan di kausalitas antara dan
Lemma 4.4 Misalkan dua pesan dan
, sedemikian sehingga . Jika dan keduanya dapat dikirim, maka sedemikian sehingga . Bukti : Karena dan keduanya dapat dikirim kemudian . dapat dikirim jika telah  diterima.  Pengirim rollback maka atau  bukan.  Jika , diterima. Kemudian merupakan orphan atau bukan. Dan seterusnya
sampai dapat  dikirim  jika adalah orphan atau  bukan.  Karena
,  dan  pengirim tidak rollback (jika tidak akan berhenti di
), maka
.
Selanjutnya hubungan antara stage suatu pesan orphan dan yang diputar ulang.
Lemma 4.5 Misalkan dan merupakan dua pesan sedemikian sehingga . Jika dan maka ( ) .
Bukti : Jika menurut Proposisi 1, maka
( ) . Untuk membuktikan bahwa ( ) akan  dibuktikan  bahwa ( ) mengarah  ke  kontradiksi.  Jadi diasumsikan  bahwa
( ) .  Menurut  baris  21  dan  44  pada  Gambar  4.18,  tidak  ada checkpoint  dan  tidak  ada  pesan  yang  masuk  pada  jalur  kausalitas  dari ke (karena  kedua kejadian  ini  adalah  satu  -  satunya  yang  meningkatkan  stage).  Kemudian  sesuai  dengan  baris  10 sampai 16 pada Gambar 4.19, jika
, . Ini tidak mungkin karena dan
. Sehingga dibuktikan bahwa pesan yang tergantung pada pesan orphan tidak dapat dikirim sebelum pesan orphan dikirim.
Lemma 4.6 Jika dan merupakan dua pesan sedemikan sehingga dan , maka tidak dapat dikirim sebelum dikirim.
Bukti : Jika , dikirim jika dan hanya jika . (Proposisi 4.3). Jika , dikirim  jika  dan  hanya  jika . (Proposisi  4.4). . Karena , ( ) menurut Lemma 4.1. 1) Jika ( ) maka .  Menurut  Lemma  4.5,  karena ( ) , . 2) Jika ( ) maka .
Teorema  4.1 Setelah  kegagalan,  eksekusi  valid  dan  asumsi  send-determinism  dipenuhi,  maka rollback recovery pada proses  berhasil.
Bukti. Berdasarkan Lemma 4.1 dan 4.3 membuktikan bahwa setelah kegagalan, semua proses dapat mengirim  urutan  pesan  valid.  Lemma  4.6  menunjukkan  bahwa  protokol  memberlakukan  perintah kausal dalam pengiriman pesan.

## 5. Kesimpulan
Penelitian  ini  menyajikan  sifat-sifat  rollback  recovery  menggunakan  uncoordinated checkpointing berbasis causality strength dengan prinsip protokol send-determinism. Protokol ini memberikan  alternatif  untuk  dikoordinasikan  antara  checkpointing  dan  logging  pesan.  Sehingga diperoleh  bahwa  tidak  terjadi  efek  domino,  dan  hanya log sebagian  kecil  dari  pesan  yang dieksekusi.

## DAFTAR PUSTAKA
[1].  Chakarat  S.,  Neeraj  M.,  and  Vijay  K.  Garg.,  1999.  A  lightweight  Algorithm  for  Causal  Pesan Ordering in Mobile Computing Systems. Departement Electrical and Computer Engineering .
[2]. Guermouche, Amina, et al., 2011. "Uncoordinated checkpointing without domino effect for send- deterministic  mpi  applications." Parallel  &  Distributed  Processing  Symposium  (IPDPS),  2011 IEEE International . IEEE.
[3].  L.  Lamport.,  1978.  Time,  clock  and  the  ordering  of  event  in  a  distributed  system. Communications of the ACM, 21 (7):558 - 565.
[4] Leonardo Fialho_, Dolores Rexachs and Emilio Luque. 2007. Defining the Checkpoint Interval for Uncoordinated  Checkpointing  Protocols. Department  of  Computer  Architecture  and  Operating System, University Autonoma of Barcelona, Spain .
[5]. S. Veerapandi,  S. Gavaskar, StD, dan A. Sumithra, StD., 2017. A Hybrid Fault Tolerance System for Distributed Environment using Check Point Mechanism and Replication. Research Scholar School of information Technology Madurai Kamaraj University .
[6]. Shwethashree A, dan Swathi D V., 2017. A Brief Review Of Approaches For Fault Tolerance In Distributed Systems. Institute of Technology and Management, Ballari, Karnataka, India.
[7].  Yoshida,  Takaichi.,  2001.  Pesan  ordering  based  on  the  strength  of  a  causal  relation. In: Information Networking, Proceedings. 15th International Conference on . IEEE. p. 915-920.