• Tidak ada hasil yang ditemukan

Pengujian Algoritme-Algoritme Penyeimbang Beban Statis

N/A
N/A
Protected

Academic year: 2017

Membagikan "Pengujian Algoritme-Algoritme Penyeimbang Beban Statis"

Copied!
36
0
0

Teks penuh

(1)

PENGUJIAN ALGORITME-ALGORITME

PENYEIMBANG BEBAN STATIS

HANIF AMAL ROBBANI

DEPARTEMEN ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR

(2)
(3)

PERNYATAAN MENGENAI SKRIPSI DAN

SUMBER INFORMASI SERTA PELIMPAHAN HAK CIPTA*

Dengan ini saya menyatakan bahwa skripsi berjudul Pengujian Algoritme-Algoritme Penyeimbang Beban Statis adalah benar karya saya dengan arahan dari komisi pembimbing dan belum diajukan dalam bentuk apa pun kepada perguruan tinggi mana pun. Sumber informasi yang berasal atau dikutip dari karya yang diterbitkan maupun tidak diterbitkan dari penulis lain telah disebutkan dalam teks dan dicantumkan dalam Daftar Pustaka di bagian akhir skripsi ini.

Dengan ini saya melimpahkan hak cipta dari karya tulis saya kepada Institut Pertanian Bogor.

Bogor, Juli 2013

Hanif Amal Robbani

(4)

ABSTRAK

HANIF AMAL ROBBANI. Pengujian Algoritme-Algoritme Penyeimbang Beban Statis. Dibimbing oleh HENDRA RAHMAWAN.

Pada penelitian ini dibuat sebuah prototipe program penyeimbang beban. Program tersebut dapat dijalankan menggunakan salah satu dari empat buah algoritme penyeimbang beban, yaitu algoritme round robin, randomized, central manager, dan threshold. Keempat algoritme tersebut diuji dan dibandingkan kinerjanya berdasarkan ukuran kecepatan waktu eksekusi dan kemerataan distribusi beban. Adapun indikator beban yang digunakan untuk algoritme central manager dan threshold adalah CPU, memori, dan I/O harddisk. Pengujian keempat algoritme dilakukan terhadap tiga jenis program dengan dominasi berbeda pada beban instruksi CPU, akses memori, dan akses I/O harddisk. Dari hasil analisis pengujian dapat ditarik kesimpulan secara umum bahwa tidak ada algoritme yang dominan. Algoritme central manager, round robin, dan

randomized bergantian muncul sebagai algoritme terbaik pada skenario percobaan yang berbeda. Hasil pengujian juga menunjukkan bahwa algoritme threshold tidak dapat mendistribusikan beban semerata ketiga algoritme lainnya.

Kata kunci: algoritme penyeimbang beban statis, indeks beban, MPI.NET, penyeimbangan beban robin, randomized, central manager, and threshold. The four algorithms were tested and their performance were compared based on the measurement of execution time and load distribution evenness. Load indices to compare the central manager and threshold algorithms were CPU, memory, and harddisk I/O. Three types of programs with different domination in CPU instruction load, memory access, and harddisk I/O were used for testing purposes. The results showed that there was no dominant algorithm. Round robin, randomized, and central manager algorithms emerged alternately as the best algorithms in different test scenarios. It was also found that threshold algorithm was unable to distribute load as even as the other three algorithms.

(5)

Skripsi

sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer

pada

Departemen Ilmu Komputer

PENGUJIAN ALGORITME-ALGORITME

PENYEIMBANG BEBAN STATIS

HANIF AMAL ROBBANI

DEPARTEMEN ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR

(6)
(7)
(8)

Judul Skripsi : Pengujian Algoritme-Algoritme Penyeimbang Beban Statis Nama : Hanif Amal Robbani

NIM : G64080098

Disetujui oleh

Hendra Rahmawan, SKom, MT Pembimbing

Diketahui oleh

Dr Ir Agus Buono, MSi, MKom Ketua Departemen

(9)

PRAKATA

Segala puji bagi Allah subhanahu wa-ta'ala atas segala rahmat dan karunia-Nya sehingga penulis dapat menyelesaikan penelitian ini. Penulis juga menyampaikan terima kasih kepada semua pihak yang telah membantu dalam penyelesaian tugas akhir ini, yaitu:

1 Ayahanda H Rosihan Anwar, Ibunda Ani Kartika, serta adik-adik Sahla Sahlima, Muhammad Zia Al-Banna, Bilqis Khoirul Untsa, dan Miski Nusrotillah atas segala bentuk dukungan, motivasi, serta doa yang diberikan kepada penulis selama ini.

2 Bapak Hendra Rahmawan, SKom, MT selaku dosen pembimbing yang telah memberikan banyak ide, masukan, serta bantuan bagi penulis selama mengerjakan penelitian ini.

3 Bapak Endang Purnama Giri, SKom, MKom dan Ibu Karlisa Priandana, ST, MEng selaku dosen penguji yang telah memberikan masukan serta saran pada penelitian dan tugas akhir penulis.

4 Rekan-rekan di PT Navcore Nextology, Karimul Makhtidi, Oki Maulana, Retno Larasati, Fania Karimah, Fandi Rahmawan, dan Alif Kurniawan yang telah membantu proses percobaan.

5 Rekan-rekan satu bimbingan, Bambang Wijonarko, Irvan Ahadi, dan Melki Hasali yang telah berjuang bersama, bertukar pikiran, berbagi suka dan duka selama mengerjakan penelitian.

6 Rekan-rekan seperjuangan di Ilmu Komputer IPB angkatan 45 atas segala kebersamaan, bantuan, dukungan, serta kenangan bagi penulis selama menjalani masa studi. Semoga kita bisa berjumpa kembali kelak sebagai orang-orang sukses.

Penulis berharap penelitian ini dapat memberikan manfaat.

Bogor, Juli 2013

(10)

DAFTAR ISI

DAFTAR TABEL vi

DAFTAR GAMBAR vi

DAFTAR LAMPIRAN vi

PENDAHULUAN 1

Latar Belakang 1

Tujuan Penelitian 1

Manfaat Penelitian 1

Ruang Lingkup Penelitian 2

TINJAUAN PUSTAKA 2

Penyeimbangan Beban 2

Algoritme Penyeimbang Beban Statis 2

Algoritme Central Manager 2

Algoritme Randomized 3

Algoritme Round Robin 3

Algoritme Threshold 4

Message Passing Interface (MPI) 4

Implementasi MPI 4

METODE 6

Perancangan dan Implementasi Penyeimbang Beban 6

Perancangan dan Implementasi Perangkat Sistem Pengujian 6

Perancangan Percobaan 6

Percobaan dan Analisis Hasil Percobaan 8

HASIL DAN PEMBAHASAN 8

Perancangan dan Implementasi Penyeimbang Beban 8

Parameter Masukan 9

File Konfigurasi Cluster 9

File Daftar Pekerjaan 10

Pengukuran Beban Awal Cluster 10

Proses Distribusi Pekerjaan 11

(11)

Program Pengukur Beban 11

Program Simulator Pekerjaan 12

Perancangan Percobaan 13

Percobaan 14

Analisis Hasil Pengujian 14

SIMPULAN DAN SARAN 17

Simpulan 17

Saran 17

DAFTAR PUSTAKA 17

LAMPIRAN 19

(12)

DAFTAR TABEL

1 Kategorisasi kondisi host 4

2 Kode indikator beban 9

3 Kode algoritme 9

4 Ringkasan hasil uji sebaran beban berdasarkan perhitungan algoritme 15 5 Ringkasan hasil uji sebaran beban berdasarkan pengukuran real-time 15

6 Ringkasan hasil uji waktu eksekusi 15

DAFTAR GAMBAR

1 Diagram alir algoritme central manager 3

2 Diagram alir algoritme randomized 3

3 Diagram alir algoritme threshold 5

4 Diagram alir metode penelitian 7

5 Alur program penyeimbang beban 8

6 Alur program pengukur beban 12

DAFTAR LAMPIRAN

1 Daftar peringkat algoritme pada setiap skenario pengujian berdasarkan

kecepatan waktu eksekusi program 19

2 Daftar peringkat algoritme pada setiap skenario pengujian berdasarkan

kemerataan sebaran beban 20

(13)
(14)

PENDAHULUAN

Latar Belakang

Penyeimbangan beban merupakan salah satu teknik utama yang dikenali dalam bidang komputasi paralel. Penyeimbangan beban bertujuan untuk meminimalkan, baik waktu eksekusi maupun response time rata-rata dari sebuah program paralel. Tujuan ini dicapai dengan mengupayakan penjadwalan task

dengan tepat untuk setiap prosesor yang terlibat. Secara spesifik algoritme penyeimbang beban berusaha mendistribusikan beban komputasi sedemikian sehingga masing-masing prosesor bertanggung jawab terhadap beban yang sama besar pada saat eksekusi program (Xu dan Lau 1997).

Algoritme penyeimbang beban dikategorikan ke dalam dua kelompok besar, yaitu statis dan dinamis. Algoritme-algoritme penyeimbang beban statis memiliki kecepatan tinggi, menyebabkan waktu tunda yang kecil, dan relatif mudah untuk diimplementasikan (Sharma et al. 2008). Pada kondisi tertentu, algoritme penyeimbang beban statis menjadi satu-satunya pilihan, misalnya ketika ukuran

task terlalu besar sehingga pemindahan task ke prosesor lain pada saat run-time

dihindari (Xu dan Lau 1997).

Pada penelitian sebelumnya (Rahmawan dan Gondokaryono 2009) telah dilakukan simulasi empat algoritme penyeimbang beban statis, yaitu algoritme

round robin, randomized, central manager, dan threshold. Indikator beban yang digunakan adalah panjang antrian CPU, jumlah memori terpakai, dan panjang antrian I/O harddisk. Dari penelitian tersebut dihasilkan paparan analisis perbandingan kinerja keempat algoritme dalam sebuah lingkungan simulasi, dengan indikator kinerja waktu eksekusi program dan sebaran beban.

Penelitian ini merupakan lanjutan dari penelitian Rahmawan dan Gondokaryono (2009), dengan membuat sebuah prototipe program penyeimbang beban menggunakan empat algoritme penyeimbang beban statis, kemudian menguji kinerja masing-masing algoritme tersebut dalam lingkungan pengujian riil.

Tujuan Penelitian

Tujuan penelitian ini adalah membandingkan kinerja algoritme-algoritme penyeimbang beban statis dalam lingkungan riil (bukan simulasi).

Manfaat Penelitian

(15)

2

Ruang Lingkup Penelitian

1 Algoritme penyeimbang beban yang diuji adalah algoritme randomized, round robin, central manager, dan threshold.

2 Indikator beban yang digunakan adalah persentase CPU terpakai, persentase memori terpakai, dan panjang rata-rata antrian I/O harddisk.

3 Sistem paralel yang digunakan merupakan cluster homogen, dengan jumlah komputer pekerja tiga buah.

4 Beban awal cluster diasumsikan seragam.

5 Program paralel yang digunakan tidak memiliki overhead komunikasi.

6 Ada tiga jenis program paralel yang digunakan, yaitu program paralel CPU-bound, memory-CPU-bound, dan I/O harddisk-bound.

7 Hanya ada satu program paralel yang dieksekusi oleh cluster dalam satu waktu.

TINJAUAN PUSTAKA

Penyeimbangan Beban

Penyeimbangan beban adalah proses meningkatkan kinerja sebuah sistem paralel dan sistem terdistribusi melalui pendistribusian ulang beban di antara prosesor di dalam sistem (Sharma et al. 2008).

Algoritme Penyeimbang Beban Statis

Algoritme penyeimbang beban statis melakukan proses penyeimbangan beban sebelum eksekusi pekerjaan dilakukan. Beban prosesor-prosesor dalam sistem paralel diukur sebelum terjadi eksekusi program. Selanjutnya prosesor master akan mendistribusikan pekerjaan berdasarkan ukuran beban prosesor tersebut. Prosesor pekerja kemudian akan melakukan pekerjaan yang telah ditugaskan oleh prosesor master, dan apabila telah selesai, prosesor pekerja akan mengembalikan hasil pemrosesan ke prosesor master (Sharma et al. 2008).

Algoritme Central Manager

Pada algoritme ini, prosesor utama memilih sebuah host untuk mengeksekusi proses baru. Program akan didelegasikan kepada host dengan beban terkecil (minimal) untuk dieksekusi di sana. Prosesor dengan beban minimal ditentukan berdasarkan ukuran beban masing-masing host saat proses dibuat. Prosesor utama memilih host untuk proses-proses yang baru sedemikian rupa sehingga sedapat mungkin beban di tiap prosesor tetap sama. Proses penjadwalan seperti di atas dapat dilakukan berdasarkan informasi beban cluster.

(16)

3 Algoritme Randomized

Algoritme randomized merupakan sebuah algoritme yang menggunakan bilangan-bilangan acak untuk memilih prosesor yang akan ditugaskan. Prosesor-prosesor pekerja dipilih secara acak berdasarkan bilangan-bilangan acak yang dihasilkan dengan mengikuti distribusi tertentu (Sharma et al. 2008). Diagram alir algoritme randomized dinyatakan pada Gambar 2.

Algoritme Round Robin

Pada algoritme round robin, setiap pekerjaan didistribusikan ke semua prosesor secara merata. Prosesor untuk mengeksekusi setiap pekerjaan dipilih secara berurutan, dan kembali ke prosesor pertama jika pemilihan prosesor telah sampai di prosesor terakhir (Sharma et al. 2008).

Mulai

Gambar 2 Diagram alir algoritme

randomized

Gambar 1 Diagram alir algoritme

(17)

4

Algoritme Threshold

Pada algoritme ini, keadaan setiap host dinyatakan dalam tiga level:

underloaded, medium, dan overloaded. Dua buah nilai ambang (t_under, t_upper) digunakan untuk mendefinisikan ketiga level tersebut seperti tampak pada Tabel 1. Awalnya, seluruh prosesor dianggap dalam keadaan underloaded. Pekerjaan akan dialokasikan kepada prosesor pertama selama kondisinya belum overloaded. Jika kondisi prosesor tersebut telah naik ke level overloaded, pekerjaan-pekerjaan selanjutnya akan dialokasikan ke sebuah prosesor lain yang berada dalam kondisi

underloaded sampai kondisi prosesor tersebut naik ke level overloaded. Jika tidak ditemukan prosesor lain yang masih underloaded, maka pekerjaan akan tetap dieksekusi oleh prosesor yang sedang ditunjuk saat itu sampai ada prosesor lain yang turun ke kondisi underloaded atau seluruh pekerjaan habis didistribusikan (Sharma et al. 2008). Diagram alir algoritme threshold dinyatakan pada Gambar 3.

Message Passing Interface (MPI)

MPI adalah spesifikasi standar untuk membuat library program paralel dengan paradigma message passing, di mana data dapat dipindahkan dari satu proses ke proses lain melalui operasi bersama oleh setiap proses yang terlibat. Semua operasi dalam spesifikasi MPI diekspresikan dalam bentuk fungsi,

subroutine, atau method yang mengacu pada bahasa C, C++, Fortran-77, dan Fortran-95. MPI sendiri bukan merupakan bahasa pemrograman dan tidak dibuat dalam bahasa pemrograman tertentu (Balaji et al. 2012).

Implementasi MPI

Terdapat banyak varian implementasi MPI, salah satunya adalah MPICH buatan Laboratorium Nasional Argonne. MPICH adalah implementasi dari MPI standar yang difokuskan pada aspek kinerja dan portabilitas. Saat ini MPICH versi 2 (MPICH2) telah memuat semua fungsi yang tercantum dalam spesifikasi MPI versi 1 dan 2 (MPI-1 dan MPI-2), termasuk dynamic process management, one-sided operations, I/O paralel, dan fitur-fitur lainnya (MPI Forum 2008).

Varian lain dari implementasi MPI adalah MPI.NET. Ketersediaan library MPI dalam bahasa pemrograman modern seperti C# dengan dukungan teknologi .NET, memberikan kemudahan bagi para programmer untuk bisa membangun program paralel yang lebih kompleks dalam waktu singkat. Di sisi lain, juga terdapat resiko kinerja program menjadi lebih lambat karena adanya

overhead pada library yang digunakan. MPI.NET dibangun di atas MS-MPI dan Tabel 1 Kategorisasi kondisi host

Level Parameter Ambang

underloaded beban < t_under

medium t_under < beban < t_upper

(18)

5 telah diuji kinerjanya. Hasil pengujian menunjukkan bahwa MPI.NET tidak memiliki overhead yang cukup berarti dibandingkan dengan MS-MPI (Gregor dan Lumsdaine 2008).

MS-MPI sendiri merupakan varian lain dari library MPI. MS-MPI adalah implementasi native dari spesifikasi MPI yang dibuat oleh Microsoft dalam bahasa C/C++ dengan mengacu pada MPICH2.

Mulai

(19)

6

METODE

Penelitian ini akan dilakukan dalam beberapa tahap. Urutan tahap-tahap tersebut dapat dilihat pada Gambar 4.

Perancangan dan Implementasi Penyeimbang Beban

Pada tahap ini dilakukan studi pustaka untuk mengetahui karakteristik dan spesifikasi sebuah program penyeimbang beban serta strategi implementasi yang sudah ada. Setelah informasi yang diperlukan didapat, selanjutnya dilakukan perancangan strategi implementasi program penyeimbang beban yang akan diterapkan. Proses terakhir adalah implementasi program penyeimbang beban sesuai dengan strategi yang dipilih.

Perancangan dan Implementasi Perangkat Sistem Pengujian

Pada tahap ini dilakukan perancangan dan implementasi program-program selain program penyeimbang beban yang dibutuhkan dalam pengujian. Program-program pendukung pengujian tersebut adalah Program-program pengukur beban dan program simulator pekerjaan.

Program pengukur beban bertugas untuk mengukur beban komputer sesuai dengan jenis indikator beban yang dipilih. Program ini nantinya akan digunakan oleh program penyeimbang beban untuk mengukur beban awal cluster. Program pengukur beban juga akan digunakan untuk mengukur distribusi beban cluster

pada saat percobaan.

Program simulator pekerjaan digunakan untuk membuat model program paralel yang akan dieksekusi oleh cluster. Pada penelitian ini sebuah program paralel dimodelkan dengan 10 buah program simulator pekerjaan CPU-bound, memory-bound, dan I/O harddisk-bound dengan perbandingan 8:1:1. Sebagai contoh, sebuah program paralel CPU-bound dimodelkan dengan mengombinasikan 8 buah simulator pekerjaan CPU-bound, 1 buah simulator pekerjaan memory-bound, dan 1 buah simulator pekerjaan I/O harddisk-bound. Masing-masing program simulator pekerjaan tersebut merupakan program sekuensial yang tidak saling berhubungan, sehingga program paralel yang dimodelkan tidak memiliki overhead komunikasi sama sekali.

Perancangan Percobaan

(20)

7

Percobaan yang akan dilakukan bertujuan untuk mengukur dan mendapatkan perbandingan kinerja algoritme-algoritme penyeimbang beban yang diimplementasikan. Ukuran kinerja algoritme pada penelitian ini adalah waktu eksekusi dan penyebaran beban kerja (Rahmawan dan Gondokaryono 2009).

Percobaan dilakukan dengan mengukur waktu eksekusi dan sebaran beban ketika program penyeimbang beban mendistribusikan pekerjaan. Terdapat beberapa skenario eksekusi program penyeimbang beban. Skenario-skenario tersebut merupakan kombinasi dari pilihan jenis program paralel yang akan dieksekusi, jenis serta pengaturan parameter algoritme yang digunakan, dan jenis indikator kinerja yang akan diukur. Berdasarkan jenis program paralel yang dieksekusi, terdapat tiga jenis program paralel: CPU-bound, memory-bound, dan

I/O harddisk-bound.

Berdasarkan jenis algoritme yang digunakan, terdapat empat jenis algoritme: round robin, randomized, central manager, dan threshold. Untuk algoritme central manager dan threshold, dapat digunakan tiga jenis indikator beban: persentase CPU terpakai, persentase memori terpakai, dan panjang antrian rata-rata I/O harddisk.

Pada algoritme threshold perlu ditentukan nilai ambang bawah dan nilai ambang atas yang akan digunakan dalam pengujian. Agar dapat dibandingkan nilai ambang yang lebih baik, minimal dilakukan pengujian dengan menggunakan dua set nilai ambang.

Total skenario percobaan yang perlu dilakukan adalah 132 skenario, masing-masing skenario diulang sebanyak lima kali. Untuk memudahkan percobaan, dibuatlah batch file berisi perintah-perintah untuk menjalankan program penyeimbang beban dengan pengaturan-pengaturan parameter yang mewakili semua skenario tersebut.

(21)

8

Percobaan dan Analisis Hasil Percobaan

Percobaan dilakukan dengan menjalankan batch file yang telah dibuat pada tahap sebelumnya. Keluaran hasil eksekusi batch file tersebut ditampung dalam sebuah file teks. Proses selanjutnya adalah mengonversi file teks menjadi file spreadsheet untuk memudahkan proses analisis.

Analisis hasil percobaan dilakukan untuk menentukan algoritme dengan kinerja terbaik untuk setiap kategori. Analisis lebih jauh dilakukan untuk mencari algoritme yang mendominasi dalam banyak skenario, sehingga dapat direkomendasikan sebagai algoritme terbaik untuk kategori yang lebih luas.

HASIL DAN PEMBAHASAN

Perancangan dan Implementasi Penyeimbang Beban

Pada tahap ini dihasilkan sebuah program penyeimbang beban yang memiliki alur kerja seperti tampak pada Gambar 5.

Mulai

Baca parameter

masukan

Ukur beban masing-masing komputer

anggota cluster

Distribusikan pekerjaan

Penggabungan Data Tunggu semua pekerjaan selesai

dieksekusi

Selesai

(22)

9

Parameter Masukan

Parameter masukan yang dibaca oleh program adalah nama file XML konfigurasi cluster berisi daftar komputer pekerja (-c), nama file XML berisi daftar pekerjaan (-j), tipe indikator beban (-l), dan algoritme penyeimbang beban yang dipilih (-a). Contoh perintah command line untuk menjalankan program penyeimbang beban ini sebagai berikut:

LoadBalancer.exe -c Cluster5Node.xml -j cpu_intensive_idx_cpu.xml -l cpu -a min

Contoh di atas berisi perintah untuk menjalankan program penyeimbang beban menggunakan algoritme central manager (-a min) dengan indikator beban persentase penggunaan CPU (-l cpu). Kode pilihan algoritme dan jenis indikator beban lainnya dapat dilihat pada Tabel 2 dan Tabel 3.

File Konfigurasi Cluster

Sebuah file XML konfigurasi cluster terdiri dari satu buah tag <Cluster> dan beberapa tag <Node>. Setiap <Node> mewakili sebuah komputer pekerja. Setiap komputer pekerja dapat disertai dengan informasi alamat IP, nomor ID, dan beban awal komputer. Informasi utama yang diperlukan oleh program penyeimbang beban hanya alamat IP.

Tag <Load> hanya perlu diisi nilai nol. Tag tersebut awalnya digunakan pada tahap pengembangan sistem, yakni ketika program pembaca beban belum dibuat. Tujuannya agar program penyeimbang beban tetap dapat diujicoba dengan menggunakan nilai dummy sebagai nilai beban awal cluster. Contoh isi file

konfigurasi cluster adalah sebagai berikut:

Tabel 2 Kode indikator beban

Indikator Beban Kode

Persentase penggunaan CPU cpu

Persentase memori terpakai mem

Panjang rata-rata antrian I/O harddisk hd Tabel 3 Kode algoritme

Algoritme Kode

round robin rr

randomized rand

central manager (minimum) min

(23)

10

<Cluster> <Node>

<IpAddress>8.8.8.8</IpAddress> <Id>1</Id> lebih tag <Job>. Setiap tag <Job> mewakili sebuah program yang akan dieksekusi di dalam cluster. Setiap satu pekerjaan akan dieksekusi oleh salah satu komputer pekerja yang dipilih oleh program penyeimbang beban. Informasi yang harus disertakan untuk setiap pekerjaan adalah nama file executable, parameter, dan beban pekerjaan tersebut. Fileexecutable harus berupa program dengan command line interface agar bisa menerima string parameter masukan.

Pada penelitian ini, nilai beban pekerjaan didapat dengan melakukan pengukuran sederhana menggunakan program pengukur beban. Langkah-langkah yang dilakukan untuk menentukan beban pekerjaan adalah sebagai berikut:

- ukur beban komputer sebelum menjalankan pekerjaan - ukur beban komputer selama menjalankan pekerjaan - hitung selisih hasil kedua pengukuran

- ulangi langkah-langkah di atas sebanyak sepuluh kali, kemudian hitung nilai rata-ratanya.

Sebelum program pengukur beban dibuat, ujicoba penyeimbang beban dapat dilakukan dengan mengeksekusi pekerjaan yang hanya disertai nilai beban dummy. Berikut contoh isi file daftar pekerjaan:

<Jobs> <Job>

<File>Job.exe</File>

<Argument>-t hd 100</Argument> <Load>0,019382234</Load>

</Job> </Jobs>

Data Type Definition (DTD) untuk file XML konfigurasi cluster dapat dilihat di Lampiran 4.

Pengukuran Beban Awal Cluster

Beban cluster adalah beban masing-masing komputer pekerja anggota

(24)

11 tersebut akan dikembalikan ke komputer penyeimbang beban dan disimpan oleh program sebagai beban awal cluster.

Beban awal cluster ini diperlukan oleh algoritme-algoritme penyeimbang beban yang melakukan penjadwalan berdasarkan ukuran beban setiap komputer pekerja, seperti algoritme central manager dan threshold. Pada saat penjadwalan, beban komputer yang ditunjuk untuk mengeksekusi sebuah pekerjaan akan dinaikkan (incremented)sebesar beban pekerjaan yang diberikan tersebut.

Proses Distribusi Pekerjaan

Proses distribusi pekerjaan oleh program penyeimbang beban memanfaatkan library MPI.NET yang diinstal di komputer penyeimbang beban dan komputer-komputer pekerja. Dalam penelitian ini library MPI.NET digunakan untuk mengirim perintah eksekusi program ke sebuah remote computer.

Program penyeimbang beban ini juga memanfaatkan fitur multithreading

yang tersedia dalam .NET Framework. Multithreading digunakan agar penyeimbang beban dapat mengirimkan banyak perintah ke banyak komputer pekerja sekaligus. Dengan demikian pekerjaan-pekerjaan yang diberikan oleh pengguna dapat dieksekusi oleh cluster secara bersamaan (paralel).

Langkah-langkah pendistribusian pekerjaan oleh program penyeimbang beban adalah sebagai berikut:

1 Untuk setiap pekerjaan:

- pilih komputer pekerja untuk mengeksekusi pekerjaan tersebut (pemilihan dilakukan oleh algoritme penyeimbang beban yang sedang aktif),

- buat thread baru untuk mengirmkan perintah eksekusi pekerjaan ke komputer pekerja terpilih, simpan thread dalam array thread,

- jalankan thread yang telah dibuat,

- naikkan beban komputer terpilih di atas sebesar beban pekerjaan yang diberikan.

2 Setiap detik periksa array thread, jika sudah tidak ada lagi thread yang aktif, cetak keluaran program.

Perancangan dan Implementasi Sistem Pengujian

Untuk kebutuhan pengujian sistem dibuatlah program pengukur beban, program simulator pekerjaan, dan dilakukan modifikasi terhadap program panyeimbang beban yang telah dibuat sebelumnya.

Program Pengukur Beban

(25)

12

LoadCounter.exe –l cpu

pada contoh di atas program pengukur beban akan mengembalikan nilai persentase penggunaan CPU di komputer yang diukur. Alur program pengukur beban ini tampak pada Gambar 6.

Daftar tipe beban yang dapat diukur oleh program pengukur beban beserta kodenya dapat dilihat pada Tabel 2. Implementasi program pengukur beban memanfaatkan kelas PerformanceCounter yang terdapat dalam .NET Framework.

Program Simulator Pekerjaan

Program ini bertugas untuk menaikkan beban komputer sehingga menyerupai perilaku pekerjaan yang umum dieksekusi oleh cluster. Program ini dapat berjalan dalam tiga mode tergantung parameter yang dimasukkan oleh pengguna.

Mode pertama adalah simulator pekerjaan CPU-bound. Pada mode ini program akan menjalankan perintah-perintah berikut:

x = Math.PI * Math.PI * Math.PI; x = Math.Sqrt(x);

baris program di atas diulang sebanyak jumlah yang diminta pengguna. Contoh perintah eksekusi program simulator pekerjaan CPU-bound dengan ulangan sebanyak seribu kali sebagai berikut :

Job.exe –t cpu 1000

Mode yang kedua adalah simulator pekerjaan memory-bound. Pada mode ini program akan melakukan proses berikut:

- membuat variabel array integer dengan ukuran sesuai parameter masukan dari pengguna.

Mulai

Baca parameter

masukan

Inisialisasi PerformanceCounter

Lakukan pengukuran selama lima detik

Selesai

(26)

13 - mengisi array tersebut dengan nilai integer indeksnya.

- mengisi elemen ke-i dari array yang sudah dibuat dengan angka acak. i

merupakan bilangan bulat antara 0 sampai (n-1), dan i dipilih secara acak. Proses ini diulang sebanyak n kali, dengan n adalah ukuran array.

proses di atas akan diulang sesuai dengan parameter ulangan yang dimasukkan pengguna. Contoh perintah program simulator pekerjaan memory

-bound dengan ukuran array seribu byte dan ulangan sebanyak sepuluh ribu kali sebagai berikut:

Job.exe –t mem 1000 10000

Mode yang ketiga adalah simulator pekerjaan I/O harddisk-bound. Pada mode ini program akan melakukan proses berikut:

- membuat variabel array byte dengan ukuran sesuai parameter masukan dari pengguna.

- mengisi array tersebut dengan byte-byte acak.

- menyimpan dua buah file ke harddisk yang masing-masing berisi byte-byte

acak dari array byte yang telah dibuat sebelumnya. - menghapus kedua file tersebut dari harddisk.

Sama seperti dua mode sebelumnya, pada mode ini juga proses di atas akan diulang sebanyak parameter ulangan yang dimasukkan oleh pengguna. Contoh perintah untuk menjalankan program simulator pekerjaan I/O harddisk-bound

dengan ukuran file seribu byte dan ulangan sepuluh ribu kali sebagai berikut:

Job.exe –t hd 1000 10000

Perancangan Percobaan

Pada tahap ini dilakukan modifikasi terhadap program penyeimbang beban agar dapat mengembalikan output berupa ukuran indikator kinerja algoritme untuk satu kali eksekusi. Proses modifikasi ini menghasilkan dua jenis program penyeimbang beban. Program pertama adalah program penyeimbang beban yang mengembalikan output waktu eksekusi dalam milisecond. Program ini merupakan program penyeimbang beban yang telah disisipkan timer. Timer berfungsi untuk mengukur total waktu eksekusi seluruh pekerjaan yang di-submit oleh pengguna.

Timer dijalankan pada awal tahap distribusi pekerjaan dan berhenti setelah seluruh pekerjaan selesai dieksekusi di komputer pekerja.

Program kedua adalah program penyeimbang beban yang mengembalikan

(27)

14

Informasi utama yang diperlukan dari program penyeimbang beban jenis kedua ini adalah beban cluster saat eksekusi program paralel, yang didapat dari hasil pengukuran. Dari informasi beban masing-masing komputer pekerja saat proses eksekusi program paralel berlangsung tersebut, akan dihitung nilai simpangan bakunya. Nilai simpangan baku tersebut kemudian diambil sebagai indikator kinerja algoritme. Semakin kecil nilai simpangan bakunya, berarti semakin merata distribusi pekerjaan dalam cluster.

Beban cluster saat eksekusi program paralel didapat dengan memanfaatkan program simulator pekerjaan yang telah dimodifikasi. Modifikasi dilakukan dengan menambahkan perintah-perintah untuk melakukan pengukuran beban komputer seperti yang digunakan pada program pengukur beban. Pengukuran beban dilakukan selama operasi simulasi pekerjaan masih berlangsung dengan jeda antar sampling selama satu detik. Simulator pekerjaan yang telah dimodifikasi ini akan mengembalikan output berupa nilai beban komputer tempat simulator pekerjaan tersebut dieksekusi. Jika ada komputer pekerja yang tidak mendapatkan pekerjaan untuk dieksekusi, maka diasumsikan beban saat eksekusi di komputer tersebut sama dengan beban awalnya.

Percobaan

Percobaan dilakukan dalam sebuah cluster yang terdiri dari tiga komputer pekerja dan satu komputer penyeimbang beban. Komputer penyeimbang beban bertugas untuk menjalankan program penyeimbang beban dan tidak dilibatkan dalam eksekusi program paralel.

Cluster yang digunakan merupakan cluster homogen karena komputer-komputer pekerja yang menyusunnya memiliki spesifikasi sama, yaitu:

- prosesor Intel(R) Core(TM) i3-2330M CPU @ 2.20 GHz - RAM 6 GB

- Harddisk Toshiba 500 GB 5400 RPM dengan buffer 8 MB Spesifikasi perangkat lunak cluster adalah sebagai berikut: - sistem operasi Windows 7 Enterprise x64 SP1

- SDK Microsoft High Performance Cluster Pack 2008 - MPI.NET 1.0

- .NET Framework 4.0

Analisis Hasil Pengujian

Hasil uji sebaran beban cluster menunjukkan bahwa, berdasarkan perhitungan, algoritme central manager dominan menghasilkan sebaran beban terkecil seperti tampak pada Tabel 4. Khusus untuk pengujian dengan program paralel CPU-bound menggunakan indikator beban memori atau harddisk, algoritme central manager menunjukkan penurunan kinerja cukup drastis.

(28)

15

harddisk-bound adalah algoritme threshold dengan indikator beban CPU, nilai

threshold bawah 25,419 dan nilai threshold atas 31,948. Algoritme dengan distribusi beban CPU paling merata untuk program paralel bertipe CPU-bound

adalah algoritme threshold dengan indikator beban CPU, nilai threshold bawah 20, dan nilai threshold atas 40. Ringkasan hasil pengujian dapat dilihat pada Tabel 4 dan Tabel 5, sedangkan data urutan peringkat algoritme selengkapnya untuk setiap skenario pengujian dapat dilihat pada Lampiran 1 dan Lampiran 2.

Hasil pengukuran real-time distribusi beban menunjukkan bahwa, algoritme

randomized selalu menghasilkan distribusi beban harddisk paling merata untuk ketiga tipe program paralel. Hasil pengukuran juga menunjukkan bahwa algoritme

Tabel 4 Ringkasan hasil uji sebaran beban berdasarkan perhitungan algoritme

Jenis Pekerjaan Indikator Beban Algoritme Terbaik

Harddisk-bound CPU Min

Memori Min

Harddisk Min

Tabel 5 Ringkasan hasil uji sebaran beban berdasarkan pengukuran

real-time

Jenis Pekerjaan Indikator Beban Algoritme Terbaik

Harddisk-bound CPU Rr

Memori Min

Harddisk Rand

Tabel 6 Ringkasan hasil uji waktu eksekusi Jenis Pekerjaan Algoritme

(29)

16

randomized hanya cocok untuk meminimalisir simpangan baku distribusi beban

harddisk, sedangkan untuk tipe beban CPU dan memori randomized hampir selalu menghasilkan simpangan baku distribusi beban paling besar.

Untuk distribusi beban CPU, algoritme round robin berhasil dua kali keluar sebagai algoritme terbaik, yakni pada eksekusi program paralel bertipe harddisk-bound dan memory-bound. Pada eksekusi program paralel bertipe CPU-bound

dengan indikator beban CPU, algoritme round robin menghasilkan nilai simpangan baku distribusi beban terkecil kedua setelah algoritme threshold. Selisih simpangan baku beban cluster algoritme round robin terhadap algoritme

threshold tidak terpaut jauh, sehingga algoritme round robin masih menjadi algoritme yang paling direkomendasikan untuk mendistribusikan beban CPU

cluster dengan merata.

Selisih simpangan baku beban cluster algoritme round robin terhadap algoritme threshold adalah sebesar 0,593. Sebagai perbandingan, selisih simpangan baku beban cluster algoritme threshold terhadap algoritme central manager yang merupakan algoritme terbaik ketiga adalah 3,868. Sedangkan selisih simpangan baku beban cluster algoritme threshold terhadap algoritme

randomized yang merupakan algoritme dengan simpangan baku beban terbesar adalah 12,712.

Untuk distribusi beban memori, algoritme central manager dua kali keluar sebagai algoritme terbaik, yakni pada eksekusi program paralel bertipe harddisk-bound dan memory-bound. Pada eksekusi program paralel bertipe CPU-bound

dengan indikator beban memori, algoritme yang tercatat menghasilkan nilai simpangan baku terkecil adalah round robin. Pada kasus tersebut algoritme

central manager tidak menunjukkan kinerja yang cukup baik, karena menghasilkan nilai simpangan baku terbesar kedua.

Jika diperhatikan, terdapat perbedaan antara data sebaran beban cluster hasil pengukuran secara real-time dengan data sebaran beban cluster hasil perhitungan algoritme. Salah satu faktor yang dapat menyebabkan perhitungan algoritme tidak sesuai dengan hasil pengukuran adalah terdapat kemungkinan adanya proses-proses selain komponen pengujian yang sedang dijalankan oleh komputer. Beban tambahan dari proses-proses tersebut dapat menyebabkan beban komputer yang diukur lebih besar daripada perhitungan algoritme.

(30)

17

SIMPULAN DAN SARAN

Simpulan

Simpulan dari penelitian ini adalah:

1 Telah dilakukan percobaan uji kinerja empat algoritme penyeimbang beban statis.

2 Hasil percobaan tidak menunjukkan adanya algoritme yang dominan menghasilkan kinerja terbaik di semua skenario.

3 Algoritme central manager, round robin dan randomized bergantian mendominasi pada skenario percobaan yang berbeda.

4 Hasil percobaan menunjukkan bahwa algoritme threshold tidak menghasilkan kinerja terbaik. Hal ini dapat disebabkan oleh nilai ambang yang digunakan dalam percobaan kurang tepat, atau karena karakteristik algoritme yang memang kurang baik untuk mendistribusikan beban dengan merata.

5 Data hasil perhitungan sebaran beban cluster menunjukkan bahwa algoritme

central manager dominan menghasilkan sebaran beban terkecil. Berdasarkan data tersebut, khusus untuk pekerjaan bertipe CPU-bound algoritme central manager hanya cocok menggunakan indikator beban CPU.

Saran

Saran untuk penelitian selanjutnya adalah:

1 Menggunakan simulator pekerjaan paralel dan melakukan modifikasi program penyeimbang beban agar dapat mendistribusikan pekerjaan pada level proses dari simulator pekerjaan tersebut.

2 Melakukan pengujian menggunakan indikator beban baru yang merupakan kombinasi indikator-indikator beban pada penelitian ini.

DAFTAR PUSTAKA

Balaji P, Buntinas D, Butler R, Chan A, Goodell D, Gropp W, Krishna J, Latham R, Lusk E, Mercier G, Ross R, Thakur R. 2012. MPICH2 User's Guide

[Internet]. Illinois (US): Argonne National Laboratory; [diunduh 2012 Feb 22].

Tersedia pada:

http://www.mcs.anl.gov/research/projects/mpich2staging/goodell/documentatio n/files/mpich2-1.5-userguide.pdf

Gregor D, Lumsdaine A. 2008. Design and implementation of a high-performance MPI for C# and the common language infrastructure. Di dalam: ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming; 2008 Feb 20-23; Utah, Amerika Serikat. New York (US): ACM Computing Surveys. hlm 133-142.

(31)

18

Tennessee; [diunduh 2012 Jan 23]. Tersedia pada: http://www.mpi-forum.org/docs/mpi21-report.pdf

Rahmawan H, Gondokaryono YS. 2009. The simulation of static load balancing algorithms. Di dalam: Nordin MJ, Jumari K, Zakaria MS, Suwarno, editor.

2009 International Conference on Electrical Engineering and Informatics; 2009 Agu 5-7; Bangi, Malaysia. California (US): IEEE Computer Society Press. hlm 642-645.

Sharma S, Singh S, Sharma M. 2008. Performance analysis of load balancing algorithms. Di dalam: Proceedings of World Academy of Science, Engineering, and Technology [Internet]. [Waktu dan tempat pertemuan tidak diketahui]. New Mexico (US): World Academy of Science, Engineering, and Technology. hlm 269-272; [diunduh 2012 Jan 17]. Tersedia pada: http://www.waset.org/journals/waset/v14/v14-47.pdf

(32)

19 Lampiran 1 Daftar peringkat algoritme pada setiap skenario pengujian

berdasarkan kecepatan waktu eksekusi programa

Job Load Indicator 1 2 3 4 5

CPU CPU min rand tres 2 rr tres 1

9922,6 13774,2 15702,6 16991,6 17984,8

CPU MEM rand rr tres 1 tres 2 min

13774,2 16991,6 19018,6 19068,4 19943,2

CPU HD rand rr tres 2 tres 1 min

13774,2 16991,6 17924,6 19229,8 20715,6

MEM CPU rr min rand tres 2 tres 1

9684,667 13004,4 14688 15424,2 21157,6

MEM MEM rr min rand tres 1 tres 2

9684,667 12901,4 14688 20627,2 20826

MEM HD rr rand min tres 1 tres 2

9684,667 14688 15072,2 15519 17059,2

HD CPU tres 1 tres 2 min rand rr

16932,4 18378 19568,6 20056,2 26698,6

HD MEM min rand tres 2 tres 1 rr

17138,2 20056,2 25496,4 25575,4 26698,6

HD HD rand tres 1 tres 2 rr min

20056,2 23732,4 26054,2 26698,6 39789

(33)

20

Lampiran 2 Daftar peringkat algoritme pada setiap skenario pengujian berdasarkan kemerataan sebaran beban

Job Load Indicator 1 2 3 4 5

CPU CPU tres 2 rr min tres 1 rand

7,433371 8,026823 11,30182 15,66216 20,14873

CPU MEM rr tres 1 tres 2 min rand

1,640337 1,653564 1,678041 1,734249 1,870373

CPU HD rand tres 1 tres 2 min rr

0,031495 0,049961 0,078898 0,482129 0,684637

MEM CPU rr min tres 2 tres 1 rand

7,668182 8,406564 10,29962 15,0349 18,45584

MEM MEM min tres 2 tres 1 rr rand

1,231438 1,677429 1,730359 1,802192 2,7912

MEM HD rand tres 1 min tres 2 rr

0,039503 0,050209 0,059483 0,070271 0,099837

HD CPU rr min rand tres 2 tres 1

6,716403 10,78757 15,62986 16,87977 17,99362

HD MEM min tres 1 rr tres 2 rand

1,175273 1,611959 1,620976 1,726775 1,866872

HD HD rand min rr tres 1 tres 2

(34)

21 Lampiran 3 Data Type Definition (DTD) untuk file konfigurasi cluster

<?xml version="1.0"?> <!DOCTYPE Cluster [

<!ELEMENT Cluster (Node+)>

<!ELEMENT Node (IpAddress, Id, Load)> <!ELEMENT IpAddress (#PCDATA)>

<!ELEMENT Id (#PCDATA)> <!ELEMENT Load (#PCDATA)>

(35)

22

Lampiran 4 Data Type Definition (DTD) untuk file daftar pekerjaan

<?xml version="1.0"?> <!DOCTYPE Jobs [

<!ELEMENT Jobs (Job+)>

<!ELEMENT Job (File, Argument, Load)> <!ELEMENT File (#PCDATA)>

<!ELEMENT Argument (#PCDATA)> <!ELEMENT Load (#PCDATA)>

(36)

23

RIWAYAT HIDUP

Penulis dilahirkan pada tanggal 7 September 1989 di Jakarta. Penulis merupakan anak pertama dari lima bersaudara dengan ayah Rosihan Anwar dan ibu Ani Kartika. Pada tahun 2007, penulis lulus dari Sekolah Menengah Atas Islam Terpadu Rafah – Bogor dan mengajar di Pondok Pesantren Rafah selama setahun. Pada tahun 2008 penulis diterima di Departemen Ilmu Komputer Institut Pertanian Bogor melalui Jalur Seleksi Nasional Masuk Perguruan Tinggi Negeri.

Pada bulan Juli hingga Agustus 2011, penulis melaksanakan kegiatan Praktik Kerja Lapangan di PT Navcore Nextology. Selama periode akhir tahun 2011 hingga awal tahun 2012, penulis beberapa kali berkesempatan menjadi

Gambar

Gambar 1  Diagram alir algoritme
Gambar 3  Diagram alir algoritme threshold
Gambar 4  Diagram alir metode penelitian
Gambar 6  Alur program pengukur beban
+2

Referensi

Dokumen terkait