Wednesday 30 December 2015

Perancangan, implementasi dan pengembangan klaster PC untuk Komputasi Paralel

PERANCANGAN, IMPLEMENTASI DAN PENGEMBANGAN KLASTER PC UNTUK KOMPUTASI PARALEL. Kami telah merancang, membangun, dan mengembangkan klaster sejumlah komputer pribadi (PC) yang berfungsi sebagai pengolah paralel dengan menggunakan sistem operasi Linux, message passing MPI, dan penyeimbang beban proses Mosix. Makalah ini akan menjelaskan mengenai disain dan implementasi perangkat keras yang diperlukan untuk klaster tersebut. Juga akan dibahas dalam makalah ini berbagai persoalan komunikasi yang berperan amat penting bagi kinerja klaster tersebut.
Kata kunci : cluster, message-passing, load-balancing

1. Pendahuluan
Dalam paper ini kami akan membahas cara membangun dan mengembangkan klaster komputer (computer cluster) untuk digunakan dalam memecahkan permasalahan yang kompleks sebagai alternatif dari komputer super yang mahal harganya. Bila kita menggunakan sebuah komputer pribadi (PC) untuk memecahan suatu problem yang akan membutuhkan waktu lama, maka bila kita menggabungkan beberapa buah PC dan membentuk suatu sistem komputer paralel / klaster maka problem tersebut akan terselesaikan lebih cepat. Jadi pengertian dari klaster PC adalah sekumpulan PC yang terhubung satu sama lain dengan menggunakan sistem jaringan komputer yang bekerja secara bersama-sama untuk memecahkan problem yang kompleks. Dengan demikian
klaster PC dapat menyelesaikan persoalan tersebut dengan lebih cepat dibandingkan jika dikerjakan oleh sebuah PC saja.
Dalam tulisan ini akan dijelaskan bagaimana cara memilih perangkat keras dan pemasangannya, mempersiapkan lingkungan atau tempat penyimpanan komputer, instalasi perangkat lunak dan pengujian dengan program MPI yang sederhana.

2. Perancangan dan pembangunan komputer cluster
2.1 Pemilihan perangkat keras
Perangkat keras yang digunakan terdiri atas beberapa PC, perangkat untuk jaringan komputer serta perangkat lain yang mendukung seperti sistem pendingin udara (air conditioner / AC). Klaster ini dapat menggunakan semua jenis arsitektur komputer yang ada (Intel, SunSparc, PowerPC, StrongARM dan alpha) [1], berprosesor tunggal atau multi, serta jenis sistem operasi (Unix, Linux, Microsoft Windows, Solaris) yang berjalan diatasnya. PC yang dimiliki perorangan atau suatu lembaga pendidikan umumnya menggunakan arsitektur prosesor Intel. Klaster komputer yang kami bangun disini juga menggunakan prosesor buatan Intel. Kita dapat membangun jaringan klaster komputer dari komputer bekas (lama) atau yang sama sekali baru sesuai dengan dana yang tersedia. Apabila mempunyai dana terbatas dan hanya mempunyai komputer bekas atau yang sudah tidak terpakai maka komputer tersebut masih dapat digunakan selama komputer tersebut masih bekerja dengan baik. Jika dana yang tersedia cukup untuk membeli komputer yang baru, hendaknya perlu diperhatikan beberapa hal yang penting dalam pembelian komputer baru agar dapat diperoleh kinerja klaster yang optimal.
Perangkat komputer yang sering kali kita sebut CPU ( central processing unit) itu sebenarnya hanya berupa sebuah prosesor, tetapi kebanyakan orang menyebut CPU itu adalah sebuah kotak (casing) komputer yang didalamnya terdapat komponen-komponen seperti mainboard, prosesor, memori dan perangkat keras lainnya. Komponen yang paling utama dari sebuah komputer adalah mainboard, yang merupakan tempat untuk meletakkan komponen-komponen komputer lainnya. Kestabilan dan kompatibilitas mainboard merupakan suatu keharusan, bila tidak kita akan mengalami kesulitan untuk memasang komponen lainnya karena mainboard yang kita miliki tidak mendukungnya. Prosesor merupakan komponen penting lainnya, semakin tinggi kecepatan prosesor semakin baik, dan sudah pasti harganya pun semakin mahal. Komponen lain yang dianggap memiliki pengaruh besar dalam penyelesaian perhitungan adalah RAM atau memori. Sebaiknya kita memiliki memori yang cukup untuk melakukan perhitungan.
Selanjutkan kita memerlukan kartu jaringan atau ethernet card yang mempunyai fungsi penting dalam membangun jaringan komunikasi antar komputer anggota klaster. Pada saat ini tersedia berbagai jenis kartu jaringan, mulai dari kecepatan yang rendah sampai kecepatan transfer yang tinggi. Orde kecepatan transfer yang tersedia adalah mulai dari kecepatan 10Mbps (Mega bit per-second), 100Mbps dan Gigabit ethernet (1000Mbps). Sedangkan untuk komponen lainnya dapat menggunakan komponen standar yang sudah ada di pasaran. Walaupun klaster dapat terdiri dari puluhan komputer namun cukup digunakan sebuah monitor saja untuk mengendalikannya.
Selain perangkat untuk komputer dan jaringan, perangkat yang dianggap penting lainnya adalah sistem pendingin udara (air conditioner /AC). Sebab komputer yang kita jadikan klaster ini digunakan untuk waktu yang cukup lama, maka panas yang dihasilkan oleh komputer sebaiknya cepat dibuang agar udara di sekitarnya tidak menjadi panas yang dapat menyebabkan kerusakan pada komputer. Kemudian juga memerlukan UPS (Uninterrupable Power Supply) untuk tenaga listrik cadangan bila aliran listrik dari PLN terputus.


2.2 Instalasi perangkat keras
Kami telah membangun jaringan klaster komputer dengan menggunakan sistem operasi Linux, Mosix dan message-passing MPI. Dengan menggunakan empat (4) buah komputer yang saling terhubung melalui sebuah switching hub dan kabel UTP (Unshielded Twisted Pair) katagori 5. Gambar 1 dibawah ini adalah topologi jaringan klaster komputer yang kami bangun.
Gambar 1 Konfigurasi jaringan klaster komputer.
Selain bentuk topologi diatas masih banyak lagi bentuk topologi lainnya yang dapat diimplementasikan pada jaringan klaster komputer. Topologi yang cukup dikenal luas adalah all-to-all ring, mesh, tree, hypercube. Masing-masing memiliki kelebihan dan kekurangannya. Topologi jaringan seperti pada gambar 1 digunakan karena merupakan topologi yang paling sederhana dan mudah dalam pemasangannya. Pemasangan kabel UTP untuk menyambungkan semua komputer ke switching hub dilakukan sebagaimana biasanya dilakukan pada jaringan lokal (LAN). Pada gambar tampak bahwa kami hanya memerlukan satu buah monitor saja untuk mengontrol seluruh komputer anggota klaster.

2.3 Instalasi perangkat lunak
Kami menggunakan sistem operasi Linux karena merupakan sistem operasi yang gratis dan dapat di-download melalui internet. Linux merupakan klon dari Unix yang dikembangkan pertama kali oleh Linus Torvalds dan dikembangkan lagi oleh banyak organisasi di dunia. Linux yang kami gunakan adalah versi Linux Mandrake 8.1 [2] menggunakan kernel 2.4.17. Mosix-1.5.7 [3] untuk kernel 2.4.17 merupakan perangkat lunak yang membuat sistem komputer dengan prosesor terdistribusi seolah-olah menjadi sistem komputer multiprosesor yang terintegrasi menjadi satu kesatuan. Mosix mampu menyeimbangkan beban kerja (load-balancing) yang diterima prosesor, sehingga semua prosesor anggota jaringan mendapat bagian beban yang sama besarnya jika semua prosesornya identik. Bila ada prosesor yang tidak identik maka pekerjaan akan ditangani oleh prosesor yang paling cepat dan ketika prosesor tersebut sudah mencapai beban kerja yang tinggi maka sistem akan otomatis memindahkan proses atau pekerjaan ke prosesor yang idle (belum menerima beban atau pekerjaan). Selanjutnya perangkat lunak yang dibutuhkan adalah message-passing MPI versi MPICH [4] yang berguna sebagai lingkungan pemrograman paralel. Setelah perangkat keras terpasang dengan baik kemudian dilanjutkan dengan instalasi semua perangkat lunak yang dibutuhkan.
Langkah-langkah yang dilakukan dalam instalasi perangkat lunak setelah semua perangkat keras terpasang adalah:
1. Instalasi sistem operasi Linux Mandrake lengkap dengan development tools, compiler gcc untuk program yang ditulis dalam bahasa C++ dan g77 untuk bahasa Fortran, X-windows (untuk tampilan grafis), LAPACK, JDK, serta beberapa aplikasi server yang diperlukan.
2. Instalasi Mosix dengan versi kernel Linux yang sesuai.
3. Instalasi MPI versi MPICH terbaru
4. Instalasi Upshot (sudah terintegrasi pada MPICH) dan Mosixview [5] untuk visualisasi dan manajemen proses message-passing.

Semua komputer anggota klaster hendaknya memiliki konfigurasi dan versi program yang sama. Jika hal ini tidak dipenuhi maka akan timbul permasalahan pada komunikasi klaster atau pada kompilasi program di klaster tersebut. Kami memberi nama komputer pertama dengan nama Node-1 dengan IP address 10.0.0.1 dan seterusnya hingga komputer keempat dengan nama node-4 yang memiliki IP address 10.0.0.4.

3. Pengujian Instalasi perangkat keras dan lunak
Untuk mengetahui apakah komputer yang dipasang tersebut terhubung dengan baik, dapat diuji dengan perintah ping, dari salah satu komputer ke komputer lainnya. Dengan menjalankan perintah ping kemudian dilanjutkan dengan IP address tujuan. Setelah dipastikan bahwa semua komputer terpasang dengan baik maka selanjutnya kita lakukan pengujian pada instalasi program untuk sistem klaster ini.
Mengingat secara fisik sumber daya (resource) komputer itu terpisah, dan agar kita dapat mengakses semua sumber daya tersebut dari jauh atau remote, maka kita harus melakukan remote login ke komputer yang dituju dengan menggunakan remote shell. Kami menggunakan rsh (remote shell) dalam hubungan antar node. Dengan rsh kami dapat melakukan remote login ke suatu komputer dan tanpa harus memasukkan password serta dapat mengakses semua resource komputer yang dituju bila
kita menggunakan login root. Selain rsh ada program untuk remote shell lainnya yaitu, ssh. Prinsip kerja ssh sama dengan rsh; pada ssh kita dapat juga melakukan remote login ke suatu komputer tanpa harus memasukkan password setelah dilakukan beberapa perubahan konfigurasi tertentu.
Untuk mengecek apakah koneksi rsh antar node bisa berjalan, dari node-1 kita lakukan rsh ke node-2. Bila tidak dimintakan password dan langsung masuk ke sistem, berarti koneksi rsh yang kita pasang sudah berjalan dengan baik seperti dapat dilihat pada gambar 2.
Gambar 2 Koneksi rsh dari node-1 ke node-2.
Pengecekan kinerja Mosix dapat dilakukan sebagai berikut, tentunya pada tahapan instalasi harus dipastikan terlebih dahulu bahwa Mosix sudah terinstal dengan baik sesuai dengan petunjuk instalasi. Bila sudah terinstal, pengecekan dapat dilakukan dengan perintah mon yang merupakan utilitas dari Mosix untuk memonitor node cluster yang terhubung. Dengan menggunakan 4 buah komputer (node) maka yang tampak pada layar adalah empat 4 buah node yang aktif seperti terlihat pada gambar 3.
Gambar 3 Tampilan monitoring node.
Dengan menggunakan utilitas mon ini kita dapat melihat berapa beban kerja (load) masing-masing node, serta dapat melihat apakah semua node tersebut terhubung pada jaringan dan dalam keadaan hidup (on) atau tidak.
Langkah selanjutnya adalah proses penalaan (tuning) Mosix. Guna dari penalaan adalah untuk mengkalibrasi parameter kernel Mosix yang optimal untuk prosesor dan jaringan. Ada dua macam penalaan yaitu untuk komunikasi Mosix dan MFS (Mosix File System). Agar penalaan dapat berjalan dengan baik tanpa ada proses lain yang bekerja, terlebih dahulu sistem operasi dijalankan pada single mode. Panduan untuk tuning Mosix ini bisa dilihat pada bagian dokumentasi Mosix yang terdapat pada source code Mosix. Setelah selesai penalaan komunikasi dan MFS akan dihasilkan file hasil kalibrasi parameter kernel Mosix. Salin file tersebut sesuai dengan manual pada dokumentasi Mosix.
Berikutnya kita akan melakukan instalasi MPI (Message-Passing Interface) versi MPICH. Setelah mendownload source code MPICH kemudian kita lakukan proses instalasi dengan mengikuti petunjuk dari dokumentasi yang tersedia pada source code tersebut.
Instalasi semua perangkat lunak harus seragam untuk semua PC, baik untuk versi maupun untuk lokasi hasil instalasi program tersebut. Bila lokasi tidak sama maka kita akan mengalami kesulitan pada waktu menjalankan program, karena lokasi file yang akan di eksekusi berbeda-beda.

4. Visualisasi dan manajemen proses
Untuk melihat proses message-passing tersebut bekerja, kita dapat memantau melalui sebuah program yang ditampilkan secara grafis. Untuk visualisasi proses message-passing, kami menggunakan program yang terdapat pada source code MPICH yaitu Upshot. Sedangkan untuk manajemen klaster, kami menggunakan program Mosixview.
Gambar 4 Tampilan Upshot.
Pada gambar 4 terlihat proses message-passing program dengan nama pingpong yang mengirimkan paket dari komputer pengirim dengan nomor identitas komputer 0 (nol) dan penerima dengan nomor 1(satu). Paket dikirimkan terus menerus dari ukuran paket data kecil hingga besar paket tertentu. Pada gambar terlihat proses send (kirim) dan receive (terima) yang saling berganti seperti halnya permainan pingpong.
Gambar 5 Tampilan Mosixview
Gambar 5 merupakan tampilan dari program Mosixview. Warna hijau pada clusternodes berarti node tersebut aktif atau terhubung dalam jaringan klaster. Bila warna merah berarti node tersebut tidak dapat diakses atau node tersebut dalam keadaan mati.

Bagian pengubah set priority/speed yang berfungsi untuk mengubah kecepatan prosesor yang bekerja, prinsipnya sama dengan overclock yaitu menaikkan kecepatan prosesor diatas standarnya. Mosix load mengindikasikan seberapa besar beban kerja mosix untuk tiap node, ditampilkan dalam persen. Semakin tinggi persentase, semakin besar beban yang diterima. Used Memory merupakan jumlah memory yang digunakan dalam mengerjakan proses yang diterima. Available memory adalah memori yang tersedia dalam satu node (PC). CPU(s) adalah jumlah prosesor yang terdapat pada satu node (PC). Kinerja load-balancing ditampilkan pada indikator load-balancing efficiency. Bila mencapai 100% pengaturan beban kerja berfungsi dengan sangat baik dan ini berarti semua node bekerja dengan beban yang hampir sama besarnya. Mosixcollector bekerja mengumpulkan dan menyimpan catatan pekerjaan serta untuk menganalisa logfile MOSIXLOAD, MOSIXMEM dan MOSIXHISTORY. Bila mosixcollector bekerja maka warna indikator adalah hijau, bila tidak akan berwarna merah.

5. Pengujian dengan contoh program MPI sederhana
Berikut ini adalah program hello world dengan menggunakan pemrograman paralel. Disini hanya untuk membuktikan bahwa semua node klaster dapat menjalankan program secara bersamaan. Program contoh ini sudah ada di dalam paket program mpich. Setelah di-compile dengan menggunakan perintah mpicc –o hello hello.c, akan dihasilkan file hello yang dapat di eksekusi. Jalankan program hello world tersebut dengan menggunakan 4 buah prosesor/komputer. Karena sistem ini merupakan sistem komputer terdistribusi maka file yang dijalankan harus sama dan berada pada directory yang sama pula. Dengan menjalankan perintah mpirun –np 4 hello maka akan muncul tampilan seperti gambar 6.
Gambar 6 Hasil keluaran program hello untuk 4 prosesor
Terlihat pada gambar 6 bahwa program hello tersebut dijalankan pada node-1 dan tampak node lainnya mengeksekusi program tersebut.

6. Kesimpulan
Dengan menggunakan beberapa buah komputer dan peralatan jaringan kita dapat membangun suatu sistem klaster komputer. Dengan bantuan klaster komputer kita dapat mengerjakan pekerjaan lebih cepat dibandingkan bila pekerjaan tersebut dikerjakan oleh satu buah komputer saja. Di samping itu dengan sistem klaster ini kita dapat memanfaatkan komputer-komputer yang sudah berkinerja rendah untuk membangun sistem klaster komputer dengan kinerja yang tinggi.

No comments:

Post a Comment