Prosesor multicore sudah tidak asing tetapi aplikasi yang umumnya dikembangkan biasanya hanya terdiri dari satu thread. Sejak dahulu ternyata sudah ada Win32 API untuk menentukan afinitas proses/thread ke prosesor tertentu. Kode di bawah menggunakan delphi 7.
Mendapatkan Jumlah core/Prosesor
var sinfo : TSystemInfo; begin GetSystemInfo(sinfo); { jumlah prosesor ada di field dwNumberOfProcessors } showmessage(inttostr(sinfo.dwNumberOfProcessors));
Menentukan Afinitas ke core tertentu
Afinitas ke core menggunakan bit vector. Tiap 1 bit diasosiasikan ke core tertentu mulai dari LSB. karena tipe data yang dilemparkan ke fungsi tsb adalah 32 bit unsigned integer maka mungkin maksimum prosesor yang bisa diakses sejumlah 32.
berikut ini contoh kode agar aplikasi yang sedang berjalan hanya menggunakan core pertama (cpu0) saja.
SetProcessAffinityMask(GetCurrentProcess, 1);
berikut ini contoh kode agar aplikasi yang sedang berjalan hanya menggunakan core pertama (cpu0) dan kedua (cpu1).
SetProcessAffinityMask(GetCurrentProcess, 3);
sedangkan berikut ini contoh kode agar aplikasi yang sedang berjalan hanya menggunakan core kedua (cpu0) saja.
SetProcessAffinityMask(GetCurrentProcess, 2);
Wah keren, saya belum sampai ke menggunakan sistem multicore secara langsung. Biasanya pakai saja aplikasi yang memang sudah support multicore. (Apache, mysql, dsb)
gimana caranya spy saya bisa masuk ke (SetProcessAffinityMask(GetCurrentProcess, 1)
(SetProcessAffinityMask(GetCurrentProcess, 3)
(SetProcessAffinityMask(GetCurrentProcess, 2)
apa yg harus saya jalanin utk bisa setting tsb?
terima kasih