ANALISIS PERBANDINGAN WAKTU PERHITUNGAN .
ANALISIS PERBANDINGAN WAKTU
PERHITUNGAN DATA PEMILIH AKTIF PEMILU
ANTARA SINGLETHREADING DAN
MULTITHREADING DI PHP PADA SPESIFIKASI
KOMPUTER YANG BERBEDA
Esti Mulyawati
Gita Listya A
M. Nasiruddin
[email protected]
[email protected]
[email protected]
Rian Dwi P
Septri Nur Ithmam
Shelly Tamara
[email protected]
[email protected]
[email protected]
Program Studi Ilmu Komputer
Jurusan Ilmu Komputer dan Elektronika
Universitas Gadjah Mada
2013
Abstrak
Dalam perhitungan data pemilih aktif di Indonesia, terkadang dibutuhkan suatu sistem
untuk mempermudah prosesnya. Proses tersebut bergantung pada performa sistem perhitungan
yang digunakan untuk dapat bekerja secara cepat, tepat, dan akurat. Pada kesempatan kali ini
penulis mengembangkan sistem untuk menjalankan proses tersebut menggunakan bahasa
pemrograman PHP. Hal tersebut sulit dipenuhi apabila sistem yang dikembangkan menggunakan
singlethreading. Untuk mengatasi masalah tersebut, penggunaan multithreading dengan
pthreads yang terbagi dalam beberapa klaster secara parallel dan menggunakan komputer dengan
spesifikasi yang cocok merupakan suatu solusi. Maka dari itu, pada makalah ini akan dibahas
mengenai analisa perbandingan antara proses perhitungan suara menggunakan aplikasi php
singlethreading dan multithreading pada spesifikasi komputer yang berbeda, yang bertujuan
untuk mengetahui proses perhitungan suara pemilu mana dan spesifikasi seperti apa yang
dibutuhkan komputer agar dapat mengeksekusi lebih cepat dalam menghasilkan data pemilih
aktif pemilu perhitungan suara.
Kata Kunci: php, pemilu, pthreads, single threading, multithreading, spesifikasi komputer
I. Pendahuluan
Beberapa tahun terakhir ini, arsitektur
komputer cenderung berevolusi menjadi
komputer paralel. Sistem multiprocessor
modern yang dikenal sebagai multicore
sedang menjadi tren. Prosesor-prosesor
multicore sedang mendominasi pasar.
Prosesor-prosesor multicore dengan mudah
dijumpai pada komputer desktop, laptop dan
juga server. Selain itu, prosesor multicore
juga mengisi segmen pasar cluster
supercomputer.
Diadopsinya prosesor multicore pada
kebanyakan
sistem-sistem
komputer
berdampak pada bagaimana perangkatperangkat lunak harus dikembangkan.
Bahwasanya, perangkat-perangkat lunak
yang nantinya berjalan pada komputer yang
mutakhir
dianggap
harus
mampu
memanfaatkan
sistem
multiprocessor .
Artinya, perangkat lunak harus berjalan
secara multithreading. Tidak hanya perangkat
lunak saja, namun sistem yang dikembangkan
juga harus mendukung teknik pemrograman
multithreading.
Dengan pemrograman multithreading
pada sistem komputer berbasis multicore
diharapkan program yang dikembangkan
dapat meningkatkan kinerja komputasinya.
Pemrograman paralel ini sangat signifikan
manfaatnya untuk mempersingkat waktu
eksekusi
algoritma
yang
memiliki
kompleksitas tinggi. Waktu eksekusi dapat
dikurangi secara signifikan oleh komputasi
berkinerja tinggi pada sistem komputer
berbasis multicore. Komputasi yang
berkinerja tinggi dapat diperoleh jika inti-inti
(cores) pada prosesor tersebut dimanfaatkan
secara efisien untuk komputasi algoritma
yang benar-benar diperlukan. Ini artinya,
pemrograman harus dapat menekan biaya
komputasi tambahan (overhead). Jadi teknik
pemrograman paralel yang efisien harus
diterapkan.
Salah satu sistem yang potensial untuk
memanfaatkan prosesor-prosesor multicore
dan teknik pemrograman multithreading
adalah Sistem Perhitungan Data Pemilih
Aktif di Indonesia untuk keperluan pemilihan
umum (PEMILU) dalam skala kabupaten,
provinsi maupun nasional. Dengan melihat
skala permasalahan yang terbesar, penulis
melakukan pengembangan dan pengujian
Sistem Perhitungan Data Pemilih Aktif dalam
skala nasional yang datanya diklarifikasikan
berdasarkan umur, kabupaten dan provinsi.
Setiap komputer tempat pemungutan
suara (TPS) mengirimkan hasil perhitungan
data pemilih ke server KPU kecamatan
dilanjutkan ke server KPU kabupaten,
kemudian diteruskan ke server KPU provinsi
dan berakhir di KPU Pusat, yang kemudian
komputer KPU tersebut yang mengakumulasi
jumlah data pemilih di Indonesia yang masih
aktif. Jika komputer tersebut hanya
memanfaatkan
satu
core
untuk
mengakumulasi jumlah data pemilih
keseluruhan maka akan membutuhkan waktu
yang lama. Ditambah problematika terhadap
sistem yang masih mengandalkan singlethreading. Untuk itu akan dilakukan
pengujian untuk melihat waktu perhitungan
data pemilih aktif di Indonesia yang begitu
besar dengan membandingkan sistem yang
memanfaatkan
teknik
pemrograman
singlethreading dan multithreading dalam
beberapa spesifikasi komputer yang berbeda.
Teknik pemrograman multithreading
sebelumnya banyak diaplikasikan dalam
bahasa pemrograman C dan Java, akan tetapi
di sini penulis akan mengaplikasikan
pengembangan dan pengujian sistem ini
dalam bahasa pemrograman PHP. Tujuan
utama pengembangan dalam bahasa
pemrograman PHP adalah sebagai bahan
pembelajaran baru dan dengan harapan
penelitian ini akan menjadi inspirasi untuk
penelitian selanjutnya.
II. Landasan Teori
2.1 Perhitungan Data Pemilih
Pemilihan Umum untuk skala daerah,
kabupaten, maupun provinsi merupakan
agenda rutin demokrasi di Indonesia kepala
daerah bahkan presiden. Diharapkan dengan
adanya PEMILU ini dapat menghasilkan
pemimpin yang sesuai dengan keinginan
rakyat dan berkualitas serta memajukan
daerah tersebut.
Sebelum diadakannya PEMILU, KPU
tiap kabupaten harus mengumpulkan data
pemilih yang nantinya akan diakumulasi oleh
server KPU Pusat. Proses perhitungan data
pemilih awalnya dilakukan dari tiap-tiap TPS
(Tempat
Pemungutan
Suara),
hasil
perhitungan data pemilih dari tiap TPS
dikirim ke kecamatan untuk direkap
berdasarkan jumlah data pemilih yang masih
aktif dengan diklarifikasikan berdasarkan
umur di bawah kecamatan tersebut.
Kemudian hasil perhitungan data pemilih
yang masih aktif tersebut diteruskan ke server
KPU Kabupaten, yang selanjutnya akan
berakhir pada server KPU Pusat dan
disanalah perhitungan data pemilih di
Indonesia akan diakumulasi total. Proses
pengiriman rekapitulasi data pemilih yang
masih aktif di Indonesia digambarkan pada
gambar 2.1 berikut.
beragam sistem operasi. Adapun cara kerja
PHP dapat dilihat pada gambar 2.2.
Pada gambar 2.2 PHP disisipkan dalam
HTML dengan tag atau .
Keterangan gambar 2.2 adalah sebagai
berikut :
1.
Gambar 2. 1 Sistem Pengiriman
Bertahap
2.3 Singlethread dan Multithread
Singlethread adalah sebuah lightweight
process (proses sederhana) yang mempunyai
thread tunggal yang berfungsi sebagai
pengendali/ controller.
Multithread berasal dari dua kata yakni
multi (banyak) dan thread (benang atau alur).
Multithread tidak sama dengan multiproses.
Multiproses adalah melakukan beberapa
pekerjaan dalam waktu yang sama dimana
kegagalan pada satu proses tidak terlalu
mempengaruhi proses lainnya, sedangkan
multithread adalah melakukan dua pekerjaan
secara paralel dengan membagi-baginya
dalam beberapa task dimana kegagalan pada
satu task akan sangat mempengaruhi task
lainnya.
Keuntungan dari sistem yang menerapkan
multithreading adalah meningkatkan respon
dari pengguna, mengizinkan sebuah aplikasi
untuk mempunyai beberapa thread yang
berbeda dalam lokasi memori yang sama,
membagi memori dan sumber daya sehingga
lebih ekonomis, dan memberdayakan utilisasi
arsitektur multiprocessor dimana setiap
thread dapat berjalan secara paralel di atas
processor yang berbeda.
2.4 PHP
PHP Hypertext Preprocessor adalah
bahasa server-side programming yang kuat
untuk membuat halaman web yang dinamis
dan interaktif. Sintak PHP mirip dengan
bahasa Perl dan C. PHP biasanya sering
digunakan bersama web server Apache di
2.
3.
4.
5.
6.
User meminta request via web
browser ke web server .
Web server akan mengenali sebagai
file PHP (.php,.php3,.phtml).
File PHP dikirim ke engine PHP.
Output (hasil) dari proses didalam
engine PHP dalam bentuk plain
HTML (HTML biasa).
Dokumen hasil eksekusi dikirim
balik ke web server .
Web server meneruskan ke browser
sebagai respons dari request untuk
ditampilkan.
Gambar 2. 2 Cara Kerja PHP
(Sunyoto, 2007)
2.5 PECL
PECL
adalah
sebuah
tempat
penyimpanan dari ekstensi PHP yang
disediakan melalui PEAR sistem packaging.
Berikut akan dijelaskan bagaimana cara
untuk mendapatkan dan menginstal ekstensi
PECL.
Petunjuk ini mengasumsikan bahwa
phpsrcdir adalah sebuah path dari distribusi
ke PHP source dan extname adalah nama
ekstensi PECL. Petunjuk ini juga familiar
dengan PEAR command. Informasi di PEAR
manual untuk PEAR command juga berlaku
untuk PECL command.
Agar berguna, shared extention harus
dibangun, diinstal, dan di-load. Metode yang
dijelaskan di bawah menyediakan berbagai
instruksi tentang bagaimana membangun dan
menginstal ekstensi, tetapi mereka tidak
secara otomatis dapat me-load. Ekstensi
dapat di-load dengan menambahkan ekstensi
ke file php.ini atau melalui penggunaan dl()
function.
Ketika membangun modul PHP, sangat
penting untuk memiliki tools (autoconf,
automake, libtool, dll).
2.6 Posix Thread (Pthread)
Posix Thread atau lebih dikenal dengan
Pthread adalah Object Oriented API
(Application Programming Interface) yang
memungkinkan multithreading di PHP.
Pthread mencakup semua alat yang
dibutuhkan
untuk
membuat
aplikasi
multithreaded pada web atau console.
Aplikasi PHP dapat membuat (create),
membaca
(read),
menulis
(write),
mengeksekusi (execute) dan melakukan
sinkronisasi dengan Thread, Workers dan
Stackables.
A Thread Object: Pengguna dapat
mengimplementasikan
thread
dengan
memperpanjang deklarasi thread yang
disediakan oleh Pthread. Setiap anggota
dapat ditulis dan dibaca oleh setiap konteks
dengan mengacu pada thread tersebut.
Konteks apapun juga dapat melaksanakan
setiap metode atau fungsi yang bersifat publik
dan private. Jalannya metode dari
implementasi tersebut diekseskusi pada
thread yang terpisah ketika metode awal
implementasi dipanggil dari konteks (thread
atau process) yang membuatnya. Hanya
konteks yang sebuah thread tersebut yang
dapat memulai dan bergabung dengan
Pthread.
A Worker Object: A Worker Thread
memiliki keadaan yang tetap, dan akan
tersedia dari perintah untuk memulai sampai
obyek keluar dari scope, atau shutdown
secara eksplisit. Setiap konteks dapat
melewatkan obyek tipe Stackable ke Worker ,
yang akan dieksekusi oleh Worker di Thread
yang terpisah. Jalannya metode Worker
dieksekusi sebelum obyek pada tumpukan,
sehingga hal tersebut dapat menginisialisasi
sumber daya Stackables yang dibutuhkan.
A Stackable Object: A Stackable Object
dapat membaca atau menulis dan
mengeksekusi
Worker selama eksekusi
berlangsung, dan hanya menyediakan
referensi Stackables ke obyek yang sesuai
sebelum runtime. Selain itu, konteks ke
Stackable dapat membaca, menulis dan
mengeksekusi metode sebelum, selama dan
setelah eksekusi.
Stackable, Thread atau Worker Object
dapat dianggap dan harus digunakan sebagai
Threaded stdClass: Thread, Worker dan
Stackable semua memiliki cara dan konteks
yang sama. Pada setiap obyek yang
dimaksudkan untuk digunakan di bagian
aplikasi
multi-threaded ,
kita
harus
memperpanjang deklarasi Stackable , Thread
atau Worker. Yang berarti mereka harus
menjalankannya tapi mungkin tidak pernah
dieksekusi, melainkan akan sering menjadi
kasus yang obyeknya digunakan dalam multithread yang dimaksudkan untuk eksekusi.
Dengan begitu berarti konteks (Thread/
Worker/ Stackable / Process) dapat
membaca, menulis dan mengeksekusi
anggota Object Threaded sebelum, selama,
dan setelah eksekusi.
III. Metodologi Penelitian
3.1 Tahapan Penelitian
Pada penelitian ini, dijelaskan tentang
perbandingan
performansi
antara
penghitungan pemilu menggunakan single
threading dengan multithreading pada php.
Penghitungan pemilu multithreading ini
sendiri menggunakan pthread. Proses
pengerjaan tersebut digambarkan dengan
skema berikut ini.
IV. PERANCANGAN SISTEM
Studi Literatur
4.1 Topologi Sistem
Instalasi Browser, Xampp, Notepad++
Mengerjakan coding PHP single threading
Mengerjakan coding PHP multithreading
menggunakan pthread
Analisa
Kesimpulan
Pembuatan laporan
Gambar 3. 1 Tahapan Penelitian
Di
dalam
implementasi
proses
perhitungan jumlah pemilih tetap yang
dilakukan pada aplikasi PHP dengan
menggunakan multithreading dan single
threading, dapat menghasilkan masingmasing waktu yang diperoleh dari hasil
kecepatan
perhitungan
masing-masing
thread.
Perbedaan hasil dari waktu proses
perhitungan
jumlah
pemilih
tetap
menggunakan kedua metode thread yang
dilakukan menghasilkan masing-masing
waktu perhitungan. Dari hasil tersebut bisa
dibuat selisih waktu yang dihasilkan dari
waktu perhitungan kedua metode single
threading dan multithreading menggunakan
pthread.
Gambar 4.1 Topologi Perhitungan
Data Pemilih
TPS pada diagram alur sebagai slave yang
berperan sebagai eksekutor yang melakukan
proses pengeksekusian input data. Sedangkan
yang berlaku sebagai node master adalah
KPU Desa, karena berperan untuk
menyampaikan data dari TPS menuju server
di KPU Kecamatan.
Penelitian ini terpusat pada server pusat
KPU karena pada server pusat ini terdapat
proses penyimpanan dan pengeksekusian
data. Proses penyimpanan data melibatkan
data provinsi, kabupaten, kelompok umur dan
jumlah data pemilih yang aktif di seluruh
Indonesia.
4.2 Perancangan Proses
Sistem ini digunakan untuk melakukan
pengujian perhitungan data pemilih aktif di
Indonesia. Penulis menguji sistem ini dengan
melakukan
perbandingan
dengan
menggunakan phtread dan menerapkan
metode singlethreading dan multithreading,
serta
mengimplementasikannya
pada
sejumlah komputer dengan spesifikasi yang
berbeda.
Tabel
Tipe
Ukur
an
Keterangan
Id_pro
v
Integ
er
11
Kunci
Primer,
Auto Increment
Nama_
prov
Varch
ar
255
Nama-nama
provinsi
Indonesia
Tabel 4.1 Tabel Provinsi
Langkah pertama yang dilakukan adalah
membuat sekumpulan dummy data dengan
pengelompokkan provinsi,
kabupaten,
kelompok umur, dimana satu provinsi terdiri
dari beberapa kabupaten dengan masingmasing data pemilih yang dikelompokan lagi
berdasarkan kelompok umur. Sementara itu
data yang diujicobakan masih berupa dummy
data karena data pemilu bersifat private dan
rahasia.
Langkah
kedua
adalah
mengimplementasikan dua sistem dengan
menggunakan metode yang berbeda yakni
singlethreading dan multithreading untuk
diuji
perbandingannya.
Thread
ini
diaplikasikan dengan bahasa pemrograman
PHP.
Selain perbandingan threading, dilakukan
juga analisis sistem perhitungan data pemilih
aktif yaitu dengan menguji sistem pada
beberapa komputer dengan spesifikasi
berbeda dan hasil yang didapat dapat
membuktikan apakah spesifikasi komputer
dapat mempengaruhi kecepatan komputasi
perhitungannya.
4.3 Perancangan Basis Data
a.
Tabel Provinsi
Tabel
provinsi
digunakan
untuk
menyimpan data daftar provinsi di Indonesia.
Keterangan tabel provinsi ditunjukkan pada
tabel berikut:
Berikut ini adalah beberapa isi tabel
provinsi :
Gambar 4.1 Tabel Provinsi
b.
Tabel Kabupaten
Tabel kabupaten digunakan untuk
menyimpan data daftar kabupaten di
Indonesia. Keterangan tabel kabupaten
ditunjukkan pada tabel berikut:
di
Tabel
Tipe
Ukur
an
Keterang
an
Id_kab
Integer
11
Kunci
Primer,
Auto
Increment
Prov_i
d
Integer
11
Foreign
Key, id
provinsi
255
Namanama
kabupaten
di
Indonesia
Nama_
kab
Varchar
Tabel 4.2 Tabel Kabupaten
Tabel kel_umur digunakan untuk
menyimpan range/kelompok umur pemilih.
Keterangan tabel kel_umur ditunjukkan pada
tabel berikut :
Tabel
Tipe
Ukur
an
Keterangan
Id_kelo
mpok
Intege
r
11
Kunci Primer, Auto
Increment
Kelom
pok_u
mur
Varch
ar
20
Range
pengelompokan
umur pemilih
Tabel 4.2 Tabel Kabupaten
Berikut ini adalah isi tabel kel_umur :
Berikut ini adalah beberapa isi tabel
kabupaten :
Gambar 4.3 Tabel Kelompok Umur
d.
Tabel Suara
Tabel suara digunakan untuk menyimpan
data jumlah pemilih di Indonesia. Keterangan
tabel suara ditunjukkan pada tabel berikut:
Gambar 4.2 Tabel Kabupaten
c.
Tabel Kelompok Umur (kel_umur)
Tabel
Tipe
Ukur
an
Keterangan
Id_suara
Integer
11
Kunci
Primer, Auto
Increment
Prov_id
Integer
11
Foreign Key,
id provinsi
Kab_id
Integer
11
Foreign Key,
id kabupaten
Kel_id
Integer
11
Foreign Key,
id kelompok
umur
2.
Copy file pthreadVC2.dll pada folder
xampp/php dan file php_pthreads.dll
pada folder xampp/php/ext.
Jumlah
Integer
11
Jumlah
pemilih
3.
Pada file php.ini yang berada pada
folder
xampp/php
aktifkan
extension=php_pthreads.dll
jika
sudah ada. Jika belum, maka
tambahkan ekstensi tersebut untuk
mengaktifkan pthread pada XAMPP
yang digunakan.
4.
Restart Apache pada XAMPP.
Tabel 4.4 Tabel Suara
Berikut ini adalah beberapa isi tabel suara:
4.5 Perancangan Singlethreading dan
Multithreading
Sistem yang akan dikembangkan pada
penelitian ini
adalah
sistem
yang
memanfaatkan dua jenis thread yaitu
singlethreading dan multithreading . Waktu
komputasi atau running time yang dibutuhkan
untuk
sistem
atau
aplikasi
yang
memanfaatkan multithreading dianggap lebih
cepat
dibandingkan
dengan
yang
memanfaatkan singlethreading.
Pengujian ini akan lebih memperkuat
konsep tersebut dengan mengembangkan
sistem perhitungan data pemilih aktif di
Indonesia
dengan
mengaplikasikan
keduanya, agar dapat dilihat seberapa
berpengaruh multithreading pada lamanya
komputasi
dibandingkan
dengan
singlethreading.
Gambar 4.4 Tabel Suara
4.4 Instalasi Pthread pada PHP
Sebelum mengaplikasikan multithreading
dan
singlethreading
pada
bahasa
pemrograman PHP, diperlukan instalasi
pthread sebagai library yang mendukung
threading. Instalasi pthread pada PHP
dijabarkan pada poin-poin berikut ini.
1.
Download library pthread dengan
versi yang disesuaikan dengan versi
XAMPP yang digunakan pada
komputer.
Pengaplikasian singlethreading dilihatkan
pada gambar berikut ini.
PERHITUNGAN DATA PEMILIH AKTIF PEMILU
ANTARA SINGLETHREADING DAN
MULTITHREADING DI PHP PADA SPESIFIKASI
KOMPUTER YANG BERBEDA
Esti Mulyawati
Gita Listya A
M. Nasiruddin
[email protected]
[email protected]
[email protected]
Rian Dwi P
Septri Nur Ithmam
Shelly Tamara
[email protected]
[email protected]
[email protected]
Program Studi Ilmu Komputer
Jurusan Ilmu Komputer dan Elektronika
Universitas Gadjah Mada
2013
Abstrak
Dalam perhitungan data pemilih aktif di Indonesia, terkadang dibutuhkan suatu sistem
untuk mempermudah prosesnya. Proses tersebut bergantung pada performa sistem perhitungan
yang digunakan untuk dapat bekerja secara cepat, tepat, dan akurat. Pada kesempatan kali ini
penulis mengembangkan sistem untuk menjalankan proses tersebut menggunakan bahasa
pemrograman PHP. Hal tersebut sulit dipenuhi apabila sistem yang dikembangkan menggunakan
singlethreading. Untuk mengatasi masalah tersebut, penggunaan multithreading dengan
pthreads yang terbagi dalam beberapa klaster secara parallel dan menggunakan komputer dengan
spesifikasi yang cocok merupakan suatu solusi. Maka dari itu, pada makalah ini akan dibahas
mengenai analisa perbandingan antara proses perhitungan suara menggunakan aplikasi php
singlethreading dan multithreading pada spesifikasi komputer yang berbeda, yang bertujuan
untuk mengetahui proses perhitungan suara pemilu mana dan spesifikasi seperti apa yang
dibutuhkan komputer agar dapat mengeksekusi lebih cepat dalam menghasilkan data pemilih
aktif pemilu perhitungan suara.
Kata Kunci: php, pemilu, pthreads, single threading, multithreading, spesifikasi komputer
I. Pendahuluan
Beberapa tahun terakhir ini, arsitektur
komputer cenderung berevolusi menjadi
komputer paralel. Sistem multiprocessor
modern yang dikenal sebagai multicore
sedang menjadi tren. Prosesor-prosesor
multicore sedang mendominasi pasar.
Prosesor-prosesor multicore dengan mudah
dijumpai pada komputer desktop, laptop dan
juga server. Selain itu, prosesor multicore
juga mengisi segmen pasar cluster
supercomputer.
Diadopsinya prosesor multicore pada
kebanyakan
sistem-sistem
komputer
berdampak pada bagaimana perangkatperangkat lunak harus dikembangkan.
Bahwasanya, perangkat-perangkat lunak
yang nantinya berjalan pada komputer yang
mutakhir
dianggap
harus
mampu
memanfaatkan
sistem
multiprocessor .
Artinya, perangkat lunak harus berjalan
secara multithreading. Tidak hanya perangkat
lunak saja, namun sistem yang dikembangkan
juga harus mendukung teknik pemrograman
multithreading.
Dengan pemrograman multithreading
pada sistem komputer berbasis multicore
diharapkan program yang dikembangkan
dapat meningkatkan kinerja komputasinya.
Pemrograman paralel ini sangat signifikan
manfaatnya untuk mempersingkat waktu
eksekusi
algoritma
yang
memiliki
kompleksitas tinggi. Waktu eksekusi dapat
dikurangi secara signifikan oleh komputasi
berkinerja tinggi pada sistem komputer
berbasis multicore. Komputasi yang
berkinerja tinggi dapat diperoleh jika inti-inti
(cores) pada prosesor tersebut dimanfaatkan
secara efisien untuk komputasi algoritma
yang benar-benar diperlukan. Ini artinya,
pemrograman harus dapat menekan biaya
komputasi tambahan (overhead). Jadi teknik
pemrograman paralel yang efisien harus
diterapkan.
Salah satu sistem yang potensial untuk
memanfaatkan prosesor-prosesor multicore
dan teknik pemrograman multithreading
adalah Sistem Perhitungan Data Pemilih
Aktif di Indonesia untuk keperluan pemilihan
umum (PEMILU) dalam skala kabupaten,
provinsi maupun nasional. Dengan melihat
skala permasalahan yang terbesar, penulis
melakukan pengembangan dan pengujian
Sistem Perhitungan Data Pemilih Aktif dalam
skala nasional yang datanya diklarifikasikan
berdasarkan umur, kabupaten dan provinsi.
Setiap komputer tempat pemungutan
suara (TPS) mengirimkan hasil perhitungan
data pemilih ke server KPU kecamatan
dilanjutkan ke server KPU kabupaten,
kemudian diteruskan ke server KPU provinsi
dan berakhir di KPU Pusat, yang kemudian
komputer KPU tersebut yang mengakumulasi
jumlah data pemilih di Indonesia yang masih
aktif. Jika komputer tersebut hanya
memanfaatkan
satu
core
untuk
mengakumulasi jumlah data pemilih
keseluruhan maka akan membutuhkan waktu
yang lama. Ditambah problematika terhadap
sistem yang masih mengandalkan singlethreading. Untuk itu akan dilakukan
pengujian untuk melihat waktu perhitungan
data pemilih aktif di Indonesia yang begitu
besar dengan membandingkan sistem yang
memanfaatkan
teknik
pemrograman
singlethreading dan multithreading dalam
beberapa spesifikasi komputer yang berbeda.
Teknik pemrograman multithreading
sebelumnya banyak diaplikasikan dalam
bahasa pemrograman C dan Java, akan tetapi
di sini penulis akan mengaplikasikan
pengembangan dan pengujian sistem ini
dalam bahasa pemrograman PHP. Tujuan
utama pengembangan dalam bahasa
pemrograman PHP adalah sebagai bahan
pembelajaran baru dan dengan harapan
penelitian ini akan menjadi inspirasi untuk
penelitian selanjutnya.
II. Landasan Teori
2.1 Perhitungan Data Pemilih
Pemilihan Umum untuk skala daerah,
kabupaten, maupun provinsi merupakan
agenda rutin demokrasi di Indonesia kepala
daerah bahkan presiden. Diharapkan dengan
adanya PEMILU ini dapat menghasilkan
pemimpin yang sesuai dengan keinginan
rakyat dan berkualitas serta memajukan
daerah tersebut.
Sebelum diadakannya PEMILU, KPU
tiap kabupaten harus mengumpulkan data
pemilih yang nantinya akan diakumulasi oleh
server KPU Pusat. Proses perhitungan data
pemilih awalnya dilakukan dari tiap-tiap TPS
(Tempat
Pemungutan
Suara),
hasil
perhitungan data pemilih dari tiap TPS
dikirim ke kecamatan untuk direkap
berdasarkan jumlah data pemilih yang masih
aktif dengan diklarifikasikan berdasarkan
umur di bawah kecamatan tersebut.
Kemudian hasil perhitungan data pemilih
yang masih aktif tersebut diteruskan ke server
KPU Kabupaten, yang selanjutnya akan
berakhir pada server KPU Pusat dan
disanalah perhitungan data pemilih di
Indonesia akan diakumulasi total. Proses
pengiriman rekapitulasi data pemilih yang
masih aktif di Indonesia digambarkan pada
gambar 2.1 berikut.
beragam sistem operasi. Adapun cara kerja
PHP dapat dilihat pada gambar 2.2.
Pada gambar 2.2 PHP disisipkan dalam
HTML dengan tag atau .
Keterangan gambar 2.2 adalah sebagai
berikut :
1.
Gambar 2. 1 Sistem Pengiriman
Bertahap
2.3 Singlethread dan Multithread
Singlethread adalah sebuah lightweight
process (proses sederhana) yang mempunyai
thread tunggal yang berfungsi sebagai
pengendali/ controller.
Multithread berasal dari dua kata yakni
multi (banyak) dan thread (benang atau alur).
Multithread tidak sama dengan multiproses.
Multiproses adalah melakukan beberapa
pekerjaan dalam waktu yang sama dimana
kegagalan pada satu proses tidak terlalu
mempengaruhi proses lainnya, sedangkan
multithread adalah melakukan dua pekerjaan
secara paralel dengan membagi-baginya
dalam beberapa task dimana kegagalan pada
satu task akan sangat mempengaruhi task
lainnya.
Keuntungan dari sistem yang menerapkan
multithreading adalah meningkatkan respon
dari pengguna, mengizinkan sebuah aplikasi
untuk mempunyai beberapa thread yang
berbeda dalam lokasi memori yang sama,
membagi memori dan sumber daya sehingga
lebih ekonomis, dan memberdayakan utilisasi
arsitektur multiprocessor dimana setiap
thread dapat berjalan secara paralel di atas
processor yang berbeda.
2.4 PHP
PHP Hypertext Preprocessor adalah
bahasa server-side programming yang kuat
untuk membuat halaman web yang dinamis
dan interaktif. Sintak PHP mirip dengan
bahasa Perl dan C. PHP biasanya sering
digunakan bersama web server Apache di
2.
3.
4.
5.
6.
User meminta request via web
browser ke web server .
Web server akan mengenali sebagai
file PHP (.php,.php3,.phtml).
File PHP dikirim ke engine PHP.
Output (hasil) dari proses didalam
engine PHP dalam bentuk plain
HTML (HTML biasa).
Dokumen hasil eksekusi dikirim
balik ke web server .
Web server meneruskan ke browser
sebagai respons dari request untuk
ditampilkan.
Gambar 2. 2 Cara Kerja PHP
(Sunyoto, 2007)
2.5 PECL
PECL
adalah
sebuah
tempat
penyimpanan dari ekstensi PHP yang
disediakan melalui PEAR sistem packaging.
Berikut akan dijelaskan bagaimana cara
untuk mendapatkan dan menginstal ekstensi
PECL.
Petunjuk ini mengasumsikan bahwa
phpsrcdir adalah sebuah path dari distribusi
ke PHP source dan extname adalah nama
ekstensi PECL. Petunjuk ini juga familiar
dengan PEAR command. Informasi di PEAR
manual untuk PEAR command juga berlaku
untuk PECL command.
Agar berguna, shared extention harus
dibangun, diinstal, dan di-load. Metode yang
dijelaskan di bawah menyediakan berbagai
instruksi tentang bagaimana membangun dan
menginstal ekstensi, tetapi mereka tidak
secara otomatis dapat me-load. Ekstensi
dapat di-load dengan menambahkan ekstensi
ke file php.ini atau melalui penggunaan dl()
function.
Ketika membangun modul PHP, sangat
penting untuk memiliki tools (autoconf,
automake, libtool, dll).
2.6 Posix Thread (Pthread)
Posix Thread atau lebih dikenal dengan
Pthread adalah Object Oriented API
(Application Programming Interface) yang
memungkinkan multithreading di PHP.
Pthread mencakup semua alat yang
dibutuhkan
untuk
membuat
aplikasi
multithreaded pada web atau console.
Aplikasi PHP dapat membuat (create),
membaca
(read),
menulis
(write),
mengeksekusi (execute) dan melakukan
sinkronisasi dengan Thread, Workers dan
Stackables.
A Thread Object: Pengguna dapat
mengimplementasikan
thread
dengan
memperpanjang deklarasi thread yang
disediakan oleh Pthread. Setiap anggota
dapat ditulis dan dibaca oleh setiap konteks
dengan mengacu pada thread tersebut.
Konteks apapun juga dapat melaksanakan
setiap metode atau fungsi yang bersifat publik
dan private. Jalannya metode dari
implementasi tersebut diekseskusi pada
thread yang terpisah ketika metode awal
implementasi dipanggil dari konteks (thread
atau process) yang membuatnya. Hanya
konteks yang sebuah thread tersebut yang
dapat memulai dan bergabung dengan
Pthread.
A Worker Object: A Worker Thread
memiliki keadaan yang tetap, dan akan
tersedia dari perintah untuk memulai sampai
obyek keluar dari scope, atau shutdown
secara eksplisit. Setiap konteks dapat
melewatkan obyek tipe Stackable ke Worker ,
yang akan dieksekusi oleh Worker di Thread
yang terpisah. Jalannya metode Worker
dieksekusi sebelum obyek pada tumpukan,
sehingga hal tersebut dapat menginisialisasi
sumber daya Stackables yang dibutuhkan.
A Stackable Object: A Stackable Object
dapat membaca atau menulis dan
mengeksekusi
Worker selama eksekusi
berlangsung, dan hanya menyediakan
referensi Stackables ke obyek yang sesuai
sebelum runtime. Selain itu, konteks ke
Stackable dapat membaca, menulis dan
mengeksekusi metode sebelum, selama dan
setelah eksekusi.
Stackable, Thread atau Worker Object
dapat dianggap dan harus digunakan sebagai
Threaded stdClass: Thread, Worker dan
Stackable semua memiliki cara dan konteks
yang sama. Pada setiap obyek yang
dimaksudkan untuk digunakan di bagian
aplikasi
multi-threaded ,
kita
harus
memperpanjang deklarasi Stackable , Thread
atau Worker. Yang berarti mereka harus
menjalankannya tapi mungkin tidak pernah
dieksekusi, melainkan akan sering menjadi
kasus yang obyeknya digunakan dalam multithread yang dimaksudkan untuk eksekusi.
Dengan begitu berarti konteks (Thread/
Worker/ Stackable / Process) dapat
membaca, menulis dan mengeksekusi
anggota Object Threaded sebelum, selama,
dan setelah eksekusi.
III. Metodologi Penelitian
3.1 Tahapan Penelitian
Pada penelitian ini, dijelaskan tentang
perbandingan
performansi
antara
penghitungan pemilu menggunakan single
threading dengan multithreading pada php.
Penghitungan pemilu multithreading ini
sendiri menggunakan pthread. Proses
pengerjaan tersebut digambarkan dengan
skema berikut ini.
IV. PERANCANGAN SISTEM
Studi Literatur
4.1 Topologi Sistem
Instalasi Browser, Xampp, Notepad++
Mengerjakan coding PHP single threading
Mengerjakan coding PHP multithreading
menggunakan pthread
Analisa
Kesimpulan
Pembuatan laporan
Gambar 3. 1 Tahapan Penelitian
Di
dalam
implementasi
proses
perhitungan jumlah pemilih tetap yang
dilakukan pada aplikasi PHP dengan
menggunakan multithreading dan single
threading, dapat menghasilkan masingmasing waktu yang diperoleh dari hasil
kecepatan
perhitungan
masing-masing
thread.
Perbedaan hasil dari waktu proses
perhitungan
jumlah
pemilih
tetap
menggunakan kedua metode thread yang
dilakukan menghasilkan masing-masing
waktu perhitungan. Dari hasil tersebut bisa
dibuat selisih waktu yang dihasilkan dari
waktu perhitungan kedua metode single
threading dan multithreading menggunakan
pthread.
Gambar 4.1 Topologi Perhitungan
Data Pemilih
TPS pada diagram alur sebagai slave yang
berperan sebagai eksekutor yang melakukan
proses pengeksekusian input data. Sedangkan
yang berlaku sebagai node master adalah
KPU Desa, karena berperan untuk
menyampaikan data dari TPS menuju server
di KPU Kecamatan.
Penelitian ini terpusat pada server pusat
KPU karena pada server pusat ini terdapat
proses penyimpanan dan pengeksekusian
data. Proses penyimpanan data melibatkan
data provinsi, kabupaten, kelompok umur dan
jumlah data pemilih yang aktif di seluruh
Indonesia.
4.2 Perancangan Proses
Sistem ini digunakan untuk melakukan
pengujian perhitungan data pemilih aktif di
Indonesia. Penulis menguji sistem ini dengan
melakukan
perbandingan
dengan
menggunakan phtread dan menerapkan
metode singlethreading dan multithreading,
serta
mengimplementasikannya
pada
sejumlah komputer dengan spesifikasi yang
berbeda.
Tabel
Tipe
Ukur
an
Keterangan
Id_pro
v
Integ
er
11
Kunci
Primer,
Auto Increment
Nama_
prov
Varch
ar
255
Nama-nama
provinsi
Indonesia
Tabel 4.1 Tabel Provinsi
Langkah pertama yang dilakukan adalah
membuat sekumpulan dummy data dengan
pengelompokkan provinsi,
kabupaten,
kelompok umur, dimana satu provinsi terdiri
dari beberapa kabupaten dengan masingmasing data pemilih yang dikelompokan lagi
berdasarkan kelompok umur. Sementara itu
data yang diujicobakan masih berupa dummy
data karena data pemilu bersifat private dan
rahasia.
Langkah
kedua
adalah
mengimplementasikan dua sistem dengan
menggunakan metode yang berbeda yakni
singlethreading dan multithreading untuk
diuji
perbandingannya.
Thread
ini
diaplikasikan dengan bahasa pemrograman
PHP.
Selain perbandingan threading, dilakukan
juga analisis sistem perhitungan data pemilih
aktif yaitu dengan menguji sistem pada
beberapa komputer dengan spesifikasi
berbeda dan hasil yang didapat dapat
membuktikan apakah spesifikasi komputer
dapat mempengaruhi kecepatan komputasi
perhitungannya.
4.3 Perancangan Basis Data
a.
Tabel Provinsi
Tabel
provinsi
digunakan
untuk
menyimpan data daftar provinsi di Indonesia.
Keterangan tabel provinsi ditunjukkan pada
tabel berikut:
Berikut ini adalah beberapa isi tabel
provinsi :
Gambar 4.1 Tabel Provinsi
b.
Tabel Kabupaten
Tabel kabupaten digunakan untuk
menyimpan data daftar kabupaten di
Indonesia. Keterangan tabel kabupaten
ditunjukkan pada tabel berikut:
di
Tabel
Tipe
Ukur
an
Keterang
an
Id_kab
Integer
11
Kunci
Primer,
Auto
Increment
Prov_i
d
Integer
11
Foreign
Key, id
provinsi
255
Namanama
kabupaten
di
Indonesia
Nama_
kab
Varchar
Tabel 4.2 Tabel Kabupaten
Tabel kel_umur digunakan untuk
menyimpan range/kelompok umur pemilih.
Keterangan tabel kel_umur ditunjukkan pada
tabel berikut :
Tabel
Tipe
Ukur
an
Keterangan
Id_kelo
mpok
Intege
r
11
Kunci Primer, Auto
Increment
Kelom
pok_u
mur
Varch
ar
20
Range
pengelompokan
umur pemilih
Tabel 4.2 Tabel Kabupaten
Berikut ini adalah isi tabel kel_umur :
Berikut ini adalah beberapa isi tabel
kabupaten :
Gambar 4.3 Tabel Kelompok Umur
d.
Tabel Suara
Tabel suara digunakan untuk menyimpan
data jumlah pemilih di Indonesia. Keterangan
tabel suara ditunjukkan pada tabel berikut:
Gambar 4.2 Tabel Kabupaten
c.
Tabel Kelompok Umur (kel_umur)
Tabel
Tipe
Ukur
an
Keterangan
Id_suara
Integer
11
Kunci
Primer, Auto
Increment
Prov_id
Integer
11
Foreign Key,
id provinsi
Kab_id
Integer
11
Foreign Key,
id kabupaten
Kel_id
Integer
11
Foreign Key,
id kelompok
umur
2.
Copy file pthreadVC2.dll pada folder
xampp/php dan file php_pthreads.dll
pada folder xampp/php/ext.
Jumlah
Integer
11
Jumlah
pemilih
3.
Pada file php.ini yang berada pada
folder
xampp/php
aktifkan
extension=php_pthreads.dll
jika
sudah ada. Jika belum, maka
tambahkan ekstensi tersebut untuk
mengaktifkan pthread pada XAMPP
yang digunakan.
4.
Restart Apache pada XAMPP.
Tabel 4.4 Tabel Suara
Berikut ini adalah beberapa isi tabel suara:
4.5 Perancangan Singlethreading dan
Multithreading
Sistem yang akan dikembangkan pada
penelitian ini
adalah
sistem
yang
memanfaatkan dua jenis thread yaitu
singlethreading dan multithreading . Waktu
komputasi atau running time yang dibutuhkan
untuk
sistem
atau
aplikasi
yang
memanfaatkan multithreading dianggap lebih
cepat
dibandingkan
dengan
yang
memanfaatkan singlethreading.
Pengujian ini akan lebih memperkuat
konsep tersebut dengan mengembangkan
sistem perhitungan data pemilih aktif di
Indonesia
dengan
mengaplikasikan
keduanya, agar dapat dilihat seberapa
berpengaruh multithreading pada lamanya
komputasi
dibandingkan
dengan
singlethreading.
Gambar 4.4 Tabel Suara
4.4 Instalasi Pthread pada PHP
Sebelum mengaplikasikan multithreading
dan
singlethreading
pada
bahasa
pemrograman PHP, diperlukan instalasi
pthread sebagai library yang mendukung
threading. Instalasi pthread pada PHP
dijabarkan pada poin-poin berikut ini.
1.
Download library pthread dengan
versi yang disesuaikan dengan versi
XAMPP yang digunakan pada
komputer.
Pengaplikasian singlethreading dilihatkan
pada gambar berikut ini.