Affinity dan Load Ballancing

Affinity

Data yang paling sering diakses oleh beberapa proses akan memadati cache pada prosesor, sehingga akses memori yang sukses biasanya terjadi di memori cache. Namun, jika suatu proses berpindah dari satu prosesor ke prosesor lainnya akan mengakibatkan isi dari cache memori yang dituju menjadi tidak valid, sedangkan cache memori dari prosesor asal harus disusun kembali populasi datanya. Karena mahalnya invalidating dan re-populating dari cache, kebanyakan sistem SMP mencoba untuk mencegah migrasi proses antar prosesor sehingga menjaga proses tersebut untuk berjalan di prosesor yang sama. Hal ini disebut afinitas prosesor (processor affinity).

Ada dua jenis afinitas prosesor, yakni:

~ Soft affinity: yang memungkinkan proses berpindah dari satu prosesor ke prosesor yang lain, dan

~ Hard affinity: yang menjamin bahwa suatu proses akan berjalan pada prosesor yang sama dan tidak berpindah. Contoh sistem yang menyediakan system calls yang mendukung hard affinity adalah Linux.

Load Balancing

Load balancing adalah usaha untuk menjaga workload terdistribusi sama rata untuk semua prosesor dalam sistem SMP. Dalam sistem SMP, sangat penting untuk menjaga keseimbangan workload (banyaknya task yang harus diselesaikan oleh prosesor) antara semua prosesor untuk memaksimalkan keuntungan memiliki multiprocessor. Jika tidak, mungkin satu atau lebih prosesor idle disaat prosesor lain harus bekerja keras dengan workload yang tinggi.. Perlu diperhatikan bahwa load balancing hanya perlu dilakukan pada sistem dimana setiap prosesor memiliki antrian tersendiri (private queue) untuk proses-proses yang berstatus ready. Pada sistem dengan antrian yang biasa (common queue), load balancing tidak diperlukan karena sekali prosesor menjadi idle, prosesor tersebut segera mengerjakan proses yang dapat dilaksanakan dari antrian biasa tersebut. Perlu juga diperhatikan bahwa pada sebagian besar sistem operasi kontemporer mendukung SMP, jadi setiap prosesor bisa memiliki private queue.

Ada dua jenis load balancing, yakni:

~ Push migration, pada kondisi ini ada suatu task spesifik yang secara berkala memeriksa load dari tiap-tiap prosesor. Jika terdapat ketidakseimbangan, maka dilakukan perataan dengan memindahkan( pushing) proses dari yang kelebihan muatan ke prosesor yang idle atau yang memiliki muatan lebih sedikit.

~ Pull migration, kondisi ini terjadi saat prosesor yang idle menarik (pulling) proses yang sedang menunggu dari prosesor yang sibuk.

Kedua pendekatan tersebut tidak harus mutually exclusive dan dalam kenyataannya sering diimplementasikan secara paralel pada sistem load-balancing. Keuntungan dari affinity berlawanan dengan keuntungan dari load balancing, yaitu keuntungan menjaga suatu proses berjalan pada satu prosesor yang sama dimana proses dapat memanfaatkan data yang sudah ada pada memori cache prosesor tersebut berkebalikan dengan keuntungan menarik atau memindahkan proses dari satu prosesor ke prosesor lain. Dalam kasus system engineering, tidak ada aturan tetap keuntungan yang mana yang lebih baik. Walaupun pada beberapa sistem, prosesor idle selalu menarik proses dari prosesor nonidle sedangkan pada sistem yang lain, proses dipindahkan hanya jika terjadi ketidakseimbangan yang besar antara prosesor.

2 responses to “Affinity dan Load Ballancing

  1. Assalam muallaikum,
    Tolong Dong kalau bisa materi kuliah untuk kelas MI/C, Teknik Riset Operasi & Pemrograman Internet, terus di masukin di blognya, kalau bisa tiap minggu, biar bisa di downlod untuk bahan belajar di rumah,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s