Konkurensi dan paralelisme adalah konsep yang umum ditemui, terutama yang berkaitan dengan TI. Dalam penguraian data, keduanya membantu, antara lain, untuk memaksimalkan kinerja dan efektivitas sistem. Meskipun istilah-istilah ini sering digunakan dalam konteks yang sama, keduanya secara bersamaan mengacu pada metode yang berbeda untuk memproses data dalam jumlah besar secara efisien. Oleh karena itu, kedua istilah tersebut sama-sama relevan untuk tujuan membangun sistem yang dapat diskalakan untuk pengumpulan dan analisis data. Dalam artikel ini, kita akan membahas konkurensi vs paralelisme, perbedaannya, dan contoh penggunaannya dalam penguraian data.
Dalam penguraian, konkurensi mengacu pada kinerja beberapa tugas dalam waktu yang tumpang tindih dalam irisan waktu prosesor tunggal. Ini berarti bahwa meskipun hanya satu tugas yang dapat dieksekusi pada satu waktu, bagi sistem luar, tampak bahwa banyak tugas sedang dieksekusi secara bersamaan. Dengan kata lain, setiap eksekusi tugas bersaing untuk mendapatkan sumber daya dari prosesor tetapi tidak dapat menggunakan semuanya pada saat yang bersamaan.
Secara khusus, strategi ini bekerja paling baik dalam konkurensi terikat I/O yang mencakup segala jenis operasi di mana program mengirim atau menerima data dari perangkat lain. Salah satu dari tugas-tugas ini adalah pengikisan web. Konkurensi memungkinkan scraper untuk mengeluarkan beberapa permintaan pada saat yang sama daripada menunggu satu permintaan dipenuhi sebelum permintaan berikutnya dikeluarkan. Dalam hal ini, produktivitas meningkat karena waktu yang dibutuhkan untuk menyelesaikan permintaan berkurang.
Penting untuk dicatat, terkadang konkurensi dapat didefinisikan sebagai apa yang disebut sebagai paralelisme yang salah, tetapi pada blok berikut ini kita akan membahasnya.
Butir berfungsi sebagai blok bangunan utama dari sistem pengumpulan data yang berjalan secara bersamaan. Untuk memahami sepenuhnya cara kerja thread, kita perlu mencermati definisi proses. Sebuah proses kerja berisi sejumlah aktivitas, yang masing-masing dilakukan oleh satu thread. Jadi, sebuah thread dapat dianggap sebagai unit terkecil yang tidak dapat dibagi dari pekerjaan komputer.
Dari perspektif konkurensi, banyak thread dapat berjalan pada waktu yang kurang lebih bersamaan. Hal ini memungkinkan sistem untuk memanfaatkan sumber daya prosesor yang tersedia secara maksimal.
Bahasa pemrograman modern dan sistem operasi memungkinkan pengelolaan thread: membuat, menangguhkan, dan menyinkronkannya. Utas sangat disukai dalam tugas-tugas yang melibatkan penguraian data karena memungkinkan untuk menangani beberapa aliran data secara bersamaan, yang mengurangi waktu tunggu dan meningkatkan efisiensi.
Dalam istilah praktis, konkurensi adalah komponen dari hampir semua sistem perangkat lunak kontemporer. Fitur ini memungkinkan untuk menjalankan sejumlah besar proses dengan sumber daya yang kecil. Contoh konkurensi yang paling umum adalah melayani beberapa permintaan secara bersamaan di server web.
Sebagai ilustrasi, mari kita asumsikan sebuah pasar online di mana pengguna dapat melakukan pemesanan, mencari produk, dan memeriksa status pesanan mereka sekaligus. Server secara harfiah tidak dapat menangani semua permintaan pada saat yang sama karena jumlah prosesor yang terbatas. Namun, server dapat melakukan konkurensi yang memungkinkannya untuk berbagi waktu dengan tugas-tugas dengan beralih di antara permintaan pengguna. Misalnya, satu pengguna dapat melakukan pemesanan, dan pengguna lain dapat meminta informasi produk. Server dapat menjalankan kedua proses ini secara siklik daripada menunggu proses pertama selesai sebelum memulai proses kedua. Oleh karena itu, daya tanggap sistem menjadi lebih baik, dan sistem tampak menjalankan tugas secara paralel.
Contoh lain yang berbeda sehubungan dengan web scraping adalah jika pengguna ingin mengumpulkan data dari 100 halaman web. Tanpa konkurensi, pengunduhan akan mengikuti siklus proses menunggu-permintaan yang akan memakan waktu lama yang tidak perlu. Namun, dengan konkurensi, pengguna dapat mengirim, katakanlah, 10 permintaan sekaligus, dan kemudian ketika halaman pertama dimuat, sudah memproses data yang telah diterima. Dibandingkan dengan menunggu setiap halaman dimuat, hal ini akan menghemat lebih banyak waktu.
Dalam hal penguraian web, penggunaan konkurensi dapat meningkatkan efisiensi. Sebagai contoh, pengikis web dapat menggunakan konkurensi untuk mengambil data dari beberapa halaman web secara bersamaan, sehingga memperpendek total waktu yang dibutuhkan untuk mengumpulkan informasi. Di bawah ini adalah beberapa poin tentang bagaimana konkurensi membantu dalam mengurangi waktu proses:
Selanjutnya, konkurensi diterapkan untuk pemrosesan informasi dengan cara yang tidak memblokir utas eksekusi utama, sehingga komputer dapat digunakan tanpa penurunan kinerja.
Definisi singkat paralelisme mengacu pada penyelesaian serangkaian proses komputasi tertentu pada sumber daya komputasi yang berbeda secara bersamaan. Dalam paralelisme, sumber daya digunakan pada waktu yang sama, berbeda dengan konkurensi di mana sumber daya hanya berganti-ganti dan simulasi eksekusi simultan terjadi. Dengan kata lain, paralelisme adalah pemrosesan data secara simultan pada beberapa inti CPU atau bahkan pada beberapa server.
Mari kita bahas lebih jauh dan pertimbangkan: mengapa menggunakan paralelisme. Manfaatnya antara lain sebagai berikut:
Prosesor multi-inti modern memungkinkan pembagian tugas untuk eksekusi paralel paralel yang independen dan simultan.
Eksekusi tugas secara paralel mengurangi waktu komputasi dan melibatkan pemecahan komputasi menjadi beberapa bagian. Proses sistem dapat dieksekusi dengan cara yang tidak sinkron karena beban kerja dibagi di berbagai prosesor dan inti.
Dalam paralelisme modern, sebuah contoh dapat diamati dalam pemrosesan gambar. Misalkan filter tertentu harus diterapkan pada gambar beresolusi tinggi. Jika kita memproses setiap piksel satu per satu, maka akan membutuhkan waktu yang sangat lama untuk menyelesaikannya. Namun demikian, dengan menggunakan paralelisme, gambar dapat dibagi menjadi beberapa bagian dan masing-masing prosesor melakukan bagiannya pada waktu yang sama. Hal ini memungkinkan peningkatan maksimal dalam kecepatan aplikasi dan meningkatkan kinerjanya. Pendekatan ini juga diketahui bahwa pendekatan ini digunakan dalam pemrosesan informasi AI serta dalam permainan video.
Saat mengembangkan sistem perangkat lunak, kita harus mempelajari waktu yang tepat untuk menggunakan konkurensi dibandingkan dengan paralelisme dan memahami hubungan antara teknik-teknik ini dengan kinerja. Berikut adalah dua hal yang paling penting untuk dipahami:
Di bawah ini adalah tabel yang secara visual menggambarkan titik perbedaan antara paralelisme dan konkurensi:
Kriteria | Paralelisme | Konkurensi |
---|---|---|
Pelaksanaan tugas | Simultan | Bergantian |
Manajemen sumber daya | Beberapa prosesor/inti | Satu prosesor |
Kinerja | Mempercepat eksekusi | Meningkatkan daya tanggap |
Jenis tugas | Komputasi intensif | Operasi I/O |
Singkatnya, setiap pendekatan memiliki keunggulannya masing-masing, yang membutuhkan pemilihan berdasarkan kebutuhan sistem yang spesifik. Di bawah daya komputasi yang terbatas, konkurensi membantu dalam memanfaatkan sumber daya secara efisien, sementara paralelisme membantu mempercepat operasi dengan membagi beban di berbagai prosesor.
Meskipun konkurensi vs paralelisme dapat dipelajari sebagai fenomena yang terpisah, penggabungan keduanya sering kali sangat produktif. Dalam sistem dengan aplikasi kompleks yang membutuhkan daya tanggap tinggi, kombinasi keduanya sangat penting karena sangat meningkatkan efisiensi secara keseluruhan. Pendekatan gabungan memungkinkan penggunaan sumber daya komputasi yang optimal dan mempercepat pemrosesan data.
Contoh dari pendekatan tersebut adalah pemrosesan kumpulan data yang besar. Dalam hal ini paralelisme berhubungan dengan pembagian tugas ke beberapa prosesor, sementara konkurensi mengontrol proses pada setiap prosesor.
Manfaat dari penggabungan metode-metode ini termasuk tetapi tidak terbatas pada:
Kombinasi teknik-teknik ini memungkinkan desain sistem yang sangat kuat dan dapat diskalakan di bidang pemrosesan informasi yang besar dan tugas-tugas komputasi tugas berat.
Ketika mengekstrak informasi dari situs web, aktivitas pengguna yang menentukan apakah mereka lebih memilih konkurensi atau paralelisme, atau, bahkan, tidak keduanya. Pada kenyataannya, pendekatan konkurensi hanya praktis ketika ada waktu menganggur yang lama dalam penerbitan permintaan, atau ketika penggalian web tidak terlalu intensif CPU. Kebalikannya berlaku untuk paralelisme, yang berguna untuk situasi di mana ada tingkat pemrosesan pasca-kunjungan yang tinggi dari konten halaman, atau ada kelebihan beban yang signifikan pada prosesor karena penguraian.
Kombinasi strategi dapat dilakukan, yang secara optimal akan mengimplementasikan konkurensi dalam mengirimkan permintaan asinkron, dan paralelisme dalam memprosesnya. Yang terakhir ini memiliki satu manfaat utama: Anda dapat mengunjungi halaman secara menyeluruh dan memproses informasi dengan intensitas yang sama tingginya.
Penulisan ini telah menganalisis secara rinci konkurensi vs paralelisme, menjelaskan bagaimana masing-masing dapat beroperasi dalam keadaan dan situasi yang berbeda. Konkurensi mengacu pada seperangkat teknik untuk mengelola aktivitas yang sedang dilakukan dengan cara berpindah-pindah untuk memaksimalkan efisiensi penggunaan waktu prosesor yang tersedia. Paralelisme berarti melakukan lebih dari satu hal pada saat yang sama, seperti menggunakan beberapa prosesor atau beberapa inti dari satu prosesor. Fitur utama yang membedakan strategi ini berasal dari fakta bahwa dalam konkurensi, beberapa sumber daya menganggur saat digunakan, sementara paralelisme mengoptimalkan sumber daya yang tersedia dengan mendistribusikannya kembali.
Seperti yang kita lihat, pilihan pendekatan terbaik bergantung pada keunikan masalah: konkurensi lebih disukai untuk tugas-tugas asinkron, sementara paralelisme lebih cocok untuk perhitungan yang kompleks. Dalam beberapa situasi, menggabungkan keduanya akan memberikan hasil terbaik.
Komentar: 0