JURNAL TEKNOLOGI INFORMASI & PENDIDIKAN VOL. 6 NO. 2 September 2013
ISSN : 2086 – 4981
ANALISA KINERJA PARALLEL COMPUTING DENGAN MENGGUNAKAN PERHITUNGAN HUKUM AMDAHL BERBASISKAN LINUX Yudhi Arta1
ABSTRACT Parallel Computing is the unification of multiple computers or servers into a single unit that can work simultaneously or processes simultaneously. Parallel computing and the process of making the program run faster as more CPUs are used. Essentially parallel computing using a network media, but that is characteristic in particular is how to resolve the problem. Problems encountered here was how to rendering an image that looks speedup PC and serial values contained by parallel computing. Keywords: Parallel Computing, Rendering, SpeedUp, Serial Value. INTISARI Parallel Computing yaitu penyatuan beberapa komputer atau server menjadi satu kesatuan sehingga dapat mengerjakan proses secara bersamaan ataupun secara simultan. Parallel computing membuat program maupun proses berjalan lebih cepat karena semakin banyak CPU yang digunakan. Pada dasarnya parallel Computing menggunakan media jaringan, tapi yang menjadi ciri khususnya adalah bagaimana menyelesaikan masalah. Masalah yang dihadapi disini adalah bagaimana me-rendering sebuah gambar sehingga terlihat speedup PC dan juga nilai serial yang dikandung oleh parallel computing. Kata Kunci : Parallel Computing , Rendering , SpeedUp , Nilai Serial.
1
Dosen Program Studi Teknik Informatika Fakultas Teknik Universitas Islam Riau
55
JURNAL TEKNOLOGI INFORMASI & PENDIDIKAN VOL. 6 NO. 2 September 2013 PENDAHULUAN Pemrosesan paralel (parallel processing) adalah penggunaan lebih dari satu CPU untuk menjalankan sebuah program secara simultan. Idealnya, parallel processing membuat program berjalan lebih cepat karena semakin banyak CPU yang digunakan. Tetapi dalam praktek, seringkali sulit membagi program sehingga dapat dieksekusi oleh CPU yang berbeda-beda tanpa berkaitan di antaranya. Komputasi paralel merupakan salah satu teknologi paling menarik yang penting sejak ditemukannya komputer elektronik pada tahun 1940an. Terobosan dalam pemrosesan paralel selalu berkembang dan mendapatkan tempat disamping teknologi-teknologi lainnya sejak Era Kebangkitan (1950-an), Era Mainframe (1960-an), Era Minis (1970-an), Era PC (1980-an), dan Era Komputer Paralel (1990-an). Dengan berbagai pengaruh atas perkembangan teknologi lainnya, dan bagaimana teknologi ini mengubah persepsi terhadap komputer, dapat dimengerti betapa pentingnya komputasi paralel itu. Inti dari komputasi paralel yaitu hardware, software, dan aplikasinya. Paralel Prosesing merupakan suatu pemrosesan informasi yang lebih mendekatkan pada manipulasi rata-rata dari elemen data terhadap satu atau lebih penyelesaian proses dari sebuah masalah. Oleh karena itu komputasi paralel dapat diartikan bahwa komputer dengan banyak prosesor yang mampu untuk melakukan paralel prosesing
ISSN : 2086 – 4981
besar (lingkungan industri, bioinformatika dan lain - lain) atau karena tuntutan komputasi yang banyak. Komputer paralel adalah komputer tunggal dengan beberapa internal prosesor atau beberapa komputer yang dihubungkan oleh suatu interconnection network (IN) Komputer paralel dapat dikelompokkan, berdasarkan pengorganisasian memorinya, ke dalam dua arsitektur dasar yaitu: sistem memori bersama (shared memory) dan sistem memori tersebar (distributed memory). Dalam sistem memori tersebar komunikasi antar proses menggunakan mekanisme pertukaran pesan (message passing). Program paralel dengan pertukaran pesan dapat ditulis menggunakan suatu bahasa pemrograman tingkat tinggi (misalnya: fortran, C/C++), dan menyertakan (atau pemanggilan) suatu pustaka pertukaran pesan MPI (Message Passing Interface) atau PVM (Parallel Virtual Machine). Pada penelitian ini digunakan digunakan pustaka MPI. Terdapat dua struktur program parallel : Single Program Multiple Data (SPMD) dan Multiple Program Multiple Data (MPMD). Dalam struktur SPMD, hanya terdapat satu sumber program dan setiap prosessor akan mengeksekusi salinan dari program ini. Sedangkan dalam struktur MPMD, terdapat beberapa sumber program dan setiap prosessor megeksekusi program yang berbeda Pemrograman parallel adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah/operasi secara bersamaan baik dalam komputer dengan satu (prosesor tunggal) ataupun banyak (prosesor ganda dengan mesin paralel) CPU. Tujuan utama dari pemrograman paralel adalah untuk meningkatkan performa komputasi. Semakin banyak hal yang bisa dilakukan secara bersamaan (dalam waktu yang sama), semakin banyak pekerjaan yang bisa diselesaikan.
PENDEKATAN PEMECAHAN MASALAH Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer independen secara bersamaan. Biasanya digunakan untuk kapasitas yang pengolahan data yang sangat
56
JURNAL TEKNOLOGI INFORMASI & PENDIDIKAN VOL. 6 NO. 2 September 2013
ISSN : 2086 – 4981
mengaktifkan semua client dengan memanggil pvm_spawn. Rutin tersebut otomatis akan menjalankan semua proses dalam sistem PVM. Cara lain untuk menjalankan proses adalah dengan memanggil rutin pvm_mytid yang mengembalikan kode task ID dari proses tersebut. Sebelum keluar dari sistem PVM, semua proses client harus dimatikan dari PVM dengan memanggil rutin pvm_exit. Komunikasi antar proses di dalam sistem PVM dilakukan secara message passing menggunakan perintah rutin PVM seperti pvm_send dan pvm_recv. Semua rutin pengiriman pesan dilakukan secara asinkron, sedangkan semua rutin penerimaan pesan dapat dilakukan secara sinkron maupun asinkron. Ada tiga tahap dalam mengirim pesan dalam PVM, yaitu : 1. Menginisialisasi buffer pengiriman dengan rutin pvm_initsend 2. Mengemas isi pesan ke dalam buffer dengan memanggil rutin pvm_pk*. Data yang dikemas dapat bertipe byte, complex, double, float, integer, dan character. Tipe tersebut dinyatakan dengan mengganti tanda “*” dan memberi tipe yang sesuai untuk tiap parameter di dalam rutin pvm_pk*. Misalnya data yang akan dikemas bertipe float, maka digunakan pvm_pkfloat. 3. Mengirim pesan ke prosesor tujuan dengan memanggil pvm_send atau pvm_mcast Proses yang menerima pesan harus membuka paket pesan pada buffer penerima sesuai dengan format pengiriman pesan. PVM juga menyediakan rutin pvm_setopt untuk mengatur pilihan dalam sistem PVM, seperti pencetakan pesan kesalahan secara otomatis, tingkat pencarian kesalahan (debugging level), dan metode
Komputasi paralel membutuhkan diantaranya algoritma, bahasa pemrograman dan compiler. PVM PVM adalah perangkat lunak yang membuat sekumpulan komputer menjadi tampak seperti sebuah sistem komputer virtual yang besar. Sekumpulan komputer yang akan terlibat dalam proses penyelesaian masalah harus didefinisikan trelebih dahulu, agar dapat menjalankan fungsinya. Komputer-komputer yang terlibat dalam komputasi bisa homogen, dengan platform yang sama, maupun heterogen, dengan platform yang berbeda, asal di antara mereka bisa saling berkomunikasi. PVM dapat menangani semua pengiriman proses, konversi data dan penjadwalan task. Sistem PVM terdiri dari dua bagian. Bagian pertama adalah daemon yang diberi nama pvmd. Pvmd diaktifkan di setiap komputer yang akan membentuk mesin virtual. Bagian kedua adalah pustaka rutin antarmuka PVM yang berisi koleksi perintah-perintah primitif untuk mengoperasikan proses-proses pustaka tersebut. Pustaka rutin ini digunakan dalam program aplikasi paralel yang ditulis dengan bahasa pemrograman C, C++, atau FORTRAN 77. Aplikasi dalam bahasa pemrograman C dan C++ dihubungkan melalui pustaka libpvm3.lib, sedangkan aplikasi dalam bahasa pemrograman FORTRAN 77 dapat mengambil rutin-rutin dalam libfpvm3.lib [1]. PVM memberi fasilitas untuk membuat sejumlah proses yang tidak tergantung dari jumlah prosesor. Setiap proses diidentifikasi menggunakan kode (task ID) dan dipetakan ke prosesor secara otomatis, atau dapat juga diatur oleh programmer. Program PVM umumnya diatur dengan model master-slave, yaitu satu proses yang dieksekusi pertama kali menjadi master dan
57
JURNAL TEKNOLOGI INFORMASI & PENDIDIKAN VOL. 6 NO. 2 September 2013 pengaturan jalur komunikasi. Contoh yang paling umum dari penggunaan pvm_setopt adalah memungkinkan jalur komunikasi langsung antar task dalam PVM. Pvm_setopt (PvmRoute, PvmRouteDirect). Dengan perintah ini otomatis bandwidth komunikasi di dalam jaringan akan digandakan.
ISSN : 2086 – 4981
Industrial Science and Technology (AIST) [7] dan MPICH-G2 yang dibuat oleh Argonne National La boratory (ANL) [8]. GridMPI adalah implementasi MPI untuk jarak antar komputer sampai dengan 500 mil yang terkoneksi dengan jaringan berkecepatan 1 sampai dengan 10 Gbps sedangkan MPICH-G2 adalah implementasi MPI dengan menggunakan Globus Toolkit (standar middleware komputasi grid) dalam lingkungan WAN.[2] Abstraksi program aplikasi yang dibuat oleh user dinyatakan pada lapisan API. Fungsi-fungsi pustaka yang tersedia pada MPI dinyatakan dalam header mpi.h. Pengaktifan MPI dimulai dengan menjalankan perintah MPI_Init(&argc, &argv); pada program utama, dilanjutkan dengan menentukan ranking dari tiap node yang menjalankan program aplikasi dengan perintah MPI_Comm_rank (MPI_COMM_WORLD, &my_rank); my_rank adalah bilangan bulat positif, bernilai nol berarti program berjalan pada komputer master, sebaliknya bernilai tidak sama dengan nol berarti program berjalan pada komputer slave. MPI_COMM_WORLD adalah konstanta yang telah terdefinisi untuk mengendalikan proses-proses yang ada pada saat MPI dimulai. Untuk mengetahui jumlah prosesor (node) yang aktif digunakan perintah MPI_Comm_size (MPI_COMM_WORLD, &p). Komunikasi dilakukan secara berurutan dari lapisan teratas sampai ke lapisan fisik, pada sisi penerima berlaku sebaliknya, yaitu dari lapisan fisik ke atas. Misalnya ada perintah MPI_Send(message, strlen(message)+1, MPI_CHAR,dest, tag, MPI_COMM_WORLD); maka pesan (message) sepanjang strlen(message)+1 dan bertipe karakter (MPI_CHAR) dikirim ke prosesor tujuan (dest). Pada lapisan ADI pesan tersebut diterima oleh Send_handle yaitu pengendali pengiriman data pada lapisan ADI,
MPI Menurut Heru (2006), Dalam implementasinya MPI menggunakan fungsi-fungsi pustaka yang dapat dipanggil dari program C, C++, atau Fortran. Hampir sama dengan PVM, MPI juga portable untuk berbagai arsitektur. Salah satu implementasi terbaru pada saat penulisan makalah ini yang berjalan pada lingkungan Windows adalah MPICH. Ditinjau dari sisi aplikasi, MPI hanya dapat digunakan dengan model single program multiple data (SPMD), sedangkan PVM dapat digunakan dengan model SPMD maupun multiple program multiple data (MPMD). Model SPMD secara fisik ditunjukkan dengan program master dan slave yang menyatu, sedangkan MPMD ditunjukkan dengan program master dan slave yang terpisah, sehingga slave dapat mengerjakan tugas yang berbedabeda antara satu node dengan node lainnya.[1]. MPI adalah teknik pemrograman yang berdasarkan data parallel dengan Single Program Multiple Data (SPMD). Maksudnya adalah setiap proses mengeksekusi program yang sama tetapi menggunakan data yang berbeda. Untuk sharing data, suatu proses secara eksplisit mengirimkan data kepada proses penerima yang juga menerima data secara eksplisit. MPI bukan merupakan bahasa pemrograman baru, tetapi MPI adalah subprogram library yang dapat dipanggil dari program C dan Fortran 77. Ada dua implementasi MPI untuk grid: GridMPI yang dibuat oleh National Institute of Advanced
58
JURNAL TEKNOLOGI INFORMASI & PENDIDIKAN VOL. 6 NO. 2 September 2013 kemudian pada lapisan Channel Device paket tersebut diterima dengan pengendali MPID_SendControl dan MPID_SendChannel. Selanjutnya, pada lapisan low level device komunikasi dilakukan dengan protocol yang tersedia. Misalnya MPICH berjalan pada Windows 2000, maka protokol yang digunakan adalah TCP/IP. Pada sisi penerima, lapisan komunikasi atau channel device interface memiliki pengendali MPID_ControlMsgAvail dan MPID_RecvAnyControl. Kedua pengendali ini meneruskan paket ke lapisan ADI. Pada lapisan ini, terdapat dua pengendali, yaitu: PostedRecv_Handles dan UnexpectedRecv_Handles, masingmasing digunakan untuk mengetahui pengiriman paket yang terkirim dengan benar dan yang salah. Selanjutnya, pada lapisan aplikasi, data diterima dengan perintah MPI_Recv (message, len, MPI_CHAR, source, tag, MPI_COMM_WORLD, &status) dan untuk mengakhiri MPI digunakan perintah MPI_Finalize.
ISSN : 2086 – 4981
dihadapi atas ketergantungan yang dihadapi olen instansi itu sendiri. Dengan adanya resource tersebut maka dapat dibangun sebuah cluster yang dapat membantu kinerja dari segi infrastruktur dan lainnya. Cluster ini sendiri juga berfungsi meningkatkan kinerja dan juga estabilitas kerja dari sistem itu sendiri. Uraian kerja akan dijelaskan di dalam kerangka kerja yang nantinya menjelaskan prosedur maupun langkah – langkah yang akn dihadapi dalam membangun cluster server ini. Tahap awal adalah menganalisa dan merancang apa – apa saja yang dibutuhkan dalam pembangunan cluster server ini. Lalu dilanjutkan dengan pengujian beserta membuat laporan hasil kinerja dari cluster tersebut dalam sebuah tabel.
Gambar 2. Kerangka Kerja Penelitian Gambar 1. Arsitektur MPICH
HASIL DAN PEMBAHASAN Pada bagian pembahasan, penulis akan menampilkan setiap artifak terkait dari setiap proses dan aktivitas yang dilakukan pada setiap fase menurut metodologi DAD. Setiap fase memiliki tujuan aktivitas proses, dimana aktivitas proses tersebut menghasilkan artifak atau dokumentasi aplikasi yang dibangun. Seperti yang disebutkan diatas, DAD membagi tahapan pengembangan
Dalam penelitian ini dapat disimpulkan bahwa permasalahan yang dihadapi adalah penggunaan resource yang tidak optimal. Metodologi yang dapat digunakan untuk meningkatkan ketersediaan sebuah server adalah dengan membuat sebuah load balancing cluster. Dengan adanya cluster server ini dapat mengatasi masalah yang
59
JURNAL TEKNOLOGI INFORMASI & PENDIDIKAN VOL. 6 NO. 2 September 2013 piranti lunak menjadi inception, construction dan transition.
ISSN : 2086 – 4981
dapat diakses dan dibantu oleh cluster secara cepat. Dari hasil rendering tersebut kita sudah mendapatkan nilai waktu render maupun alokasi penggunaan resource yang kita pakai saat rendering. Hasil tersebut dapat kita lihat pada gambar 4. :
Perancangan Topologi Untuk perancangan topologi cluster hampir sama seperti dengan topologi grid computing. Dalam hal ini, cluster mempunyai satu master dan beberapa node / client / slave yang nantinya akan di-manage oleh master cluster. Hampir keseluruhan perusahaan besar sudah menerapkan cluster sejak awal komputasi mereka dibangun. Pada gambar 3 terdapat topologi yang digunakan oleh instansi berskala enterprise untuk me-manage webserver yang merupakan jantung dari investasi mereka dalam persaingan di dunia maya. Jika kita ingin membangun parallel computing bagi coorporate, biasanya terdapat vendor - vendor yang bersedia membangunkan atau menyediakan fasilitas tersebut dengan biaya yang cukup relative tinggi. Beberapa vendor diantaranya adalah IBM, Microsoft, Dell, dan vendor besar lainnya.
Gambar 4. Hasil Timing Dari Rendering Dari beberapa hasil test nanti kita akan membuat kesimpulan dan nilainya akan kita ukur pada hukum Amdahl untuk mencari berapa nilai serial yang terdapat pada CPU yang tidak bisa diganggu gugat. Untuk hasil dari rendering tersebut, dapat kita simpulkan hasil cluster tesebut kedalam tabel 1 berikut ini : Tabel 1. Hasil Rendering Dengan 2 Node
Gambar 3. Topologi Load Balancing Untuk Enterprise Dari gambar 4 dapat dijelaskan bahwa kegunaan cluster adalah untuk membackup akses ke webserver secara cepat dana membantu node didepannya, sehingga database dan juga file sharing yang digunakan
60
JURNAL TEKNOLOGI INFORMASI & PENDIDIKAN VOL. 6 NO. 2 September 2013 Hukum Amdahl Setelah didapat hasil dari speedup yang telah kita uraikan di atas, maka kita perlu menentukan nilai serial yang tidak berpengaruh terhadap parallel procesing. Nilai serial berguna menentukan berapa persen proses yang tidak terpengaruh dari hasil parallel procesing baik dari segi hardware dan software. Adapun hukum amdahl nya adalah :
4.
5. Sp = SpeedUp yang didapat dengan P buah procesor f = Bagian dari program yang harus dieksekusi secara serial (0..1) Hukum Amdahl untuk 2 node :
1,17 f + (1,17/2) [1-f] = 1 1,17 f + 0,58 – 0,58f = 1 0,58 f = 1 – 0,58 0,58 f = 0,42 f = 0,42 / 0,58 f = 0,72 dijadikan persen : f = 0,72 *100% f = 72 %
6.
7.
KESIMPULAN Kesimpulan dari pengujian ini adalah : 1. Keseluruhan cluster sudah bisa berjalan sesuai dengan yang diinginkan. 2. Dengan hasil rendering tersebut kita mendapatkan data berapa speedup yang dibutuhkan untuk parallel procesing atau clustering. 3. Dari hasil testing 2 node atau 3 node yang ada, kita sudah mendapatkan berapa persen nilai serial yang terdapat
8.
61
ISSN : 2086 – 4981
dalam parallel procesing meskipun belum begitu valid dikarenakan keterbatasan yang ada. Dengan adanya nilai serial, maka dapat kita simpulkan masih terdapat nilai yang cukup besar untuk pemrosesan paralel yang tidak dapat diganggu gugat. Nilai serial yang terdapat ini terletak pada 2 lapisan yaitu : software dan hardware. Untuk nilai serial dalam software, terdapat beberapa instruksi yang memang tidak terpengaruh terhadap proses clustering atau parallel procesing. Bisa kita katakan seperti instruksi maupun algoritma yang diterapkan didalam parallel procesing yang tidak dapat diganggu gugat. Juga dalam sistem operasi itu sendiri dalam melakukan cluster atau parallel procesing memiliki keterbatasan untuk memberi instruksi perintah yang dijalankan. Untuk nilai serial dalam hardware bisa dikatakan seperti keterbatasan ethernet card, kabel yang digunakan dan juga beberapa faktor lainnya. Jika ingin mendapatkan hasil fraksial yang lebih signifikan atau lebih valid, maka dapat dibuktikan dengan membangun cluster dengan 10 node atau tambahan beberapa node lagi. Untuk membuktikan proses serial yang tidak bisa diganggu gugat dapat kita buktikan dengan membuka koding untuk proses cluster yang mana saja yang dianggap serial dan dapat dianalisa lebih lanjut.
JURNAL TEKNOLOGI INFORMASI & PENDIDIKAN VOL. 6 NO. 2 September 2013 DAFTAR PUSTAKA [1] Anton Dwi Laksono, A.Benny Mutiara MQN and Brahmantyo Heruseto. 2004. Analisis Perbandingan Antara Cluster Openmosix Dengan Mpi Terhadap Aplikasi Rendering Pov-Ray, 593.
ISSN : 2086 – 4981
Menggunakan Topologi Ring dan Torus. [10] Panduan Penggunaan Aplikasi Paralel Melalui in GRID Grid Portal, http://ww.povray.org/ [11] Prema S Desai and Deven M.Thakur. 2009. International Journal Of Trends In Engineering, Clustering Of Virtual Disk Design Of Clustered Servers For Storage Management, volume 1, Number 2, 267.
[2] Andria Arisal, Wiwin Suwarningsih, and Nuryani. 2010. IGNITER : Membangun Komputer Cluster Dengan Cepa”, Volume IV, Number 2, 95. [3] Chokchai Leangsuksun, et al, Highly Reliable Linux HPC : Self Awareness Approach.
[12] Said Mirza Pahlevi. 2008. Komputasi Grid Dan Paralel, 15. [13] Seminar Kudang B, et al. 2006. Uji Dan Aplikasi Komputasi Paralel Pada Jaringan Syaraf Probabilistik (PNN) Untuk Proses Klasifikasi Mutu Tomat, Jurnal Teknologi, 34.
[4] Desy Lukitasari and Ahmad Fali Oklilas. 2010. Jurnal Generic, Analisis Perbandingan Load Balancing Web Server Tunggal Dengan Web Server Custer Menggunakan Linux Virtual Server, Volume 5, Number 2, 31.
[14] Tittel, Ed. 2004. Schaum’s Outline : Computer Networking, Erlangga.
[5] Dewi Frestyani Maya Putri, Singgih Jatmiko and Benny Mutiara. Perbandingan Kinerja Cluster OpenMosix dengan Disk dan Tanpa Disk, 866.
[15] Wahana Komputer. 2011. Administrasi Jaringan dengan Linux Ubuntu 11. Andi, 2011.
[6] Fani Fatullah, A.Benny Mutiara MQN and Chandra Yulianto. 2004. Analisa Kinerja Cluster Dengan Pustaka Mpich Terhadap Perkalian Matriks, 570.
[16] Xinying Zheng and Yu Cai, International Journal Of Computer Networks (IJCN), Achieving Energy Proportionality In Server Clusters, Volume II, 23.
[7] Heru Suhartanto. 2006. Kajian Perangkat Bantu Komputasi Parallel Pada Jaringan PC, Volume 10, Number 2, 72. [8] John Shalf. 2007. The New Landscape Of Parallel Computer Architecture, Conference Series 78, 1. [9] Pandriya Sistha and Ade Jamal. 2006. Membangun PC Cluster Berbasis Interkoneksi Statis
62