Beberapa Prosesor
Komputer dengan beberapa prosesor biasanya dirancang untuk salah satu dari dua arsitektur: akses memori non-seragam (NUMA) atau multiproses konten (SMP).
Dalam komputer NUMA, setiap prosesor lebih dekat ke beberapa bagian memori daripada yang lain, membuat akses memori lebih cepat untuk beberapa bagian memori daripada bagian lain. Di bawah model NUMA, sistem mencoba menjadwalkan utas pada prosesor yang dekat dengan memori yang digunakan. Untuk informasi selengkapnya tentang NUMA, lihat Dukungan NUMA .
Dalam komputer SMP, dua prosesor atau inti yang identik atau lebih terhubung ke satu memori utama bersama. Di bawah model SMP, utas apa pun dapat ditetapkan ke prosesor apa pun. Oleh karena itu, menjadwalkan utas pada komputer SMP mirip dengan menjadwalkan utas di komputer dengan satu prosesor. Namun, penjadwal memiliki kumpulan prosesor, sehingga dapat menjadwalkan utas untuk berjalan secara bersamaan. Penjadwalan masih ditentukan oleh prioritas utas, tetapi dapat dipengaruhi oleh pengaturan afinitas utas dan prosesor ideal utas, seperti yang dibahas dalam topik ini.
Afinitas Utas
Afinitas utas memaksa utas berjalan pada subset prosesor tertentu. Mengatur afinitas utas umumnya harus dihindari, karena dapat mengganggu kemampuan penjadwal untuk menjadwalkan utas secara efektif di seluruh prosesor. Hal ini dapat mengurangi perolehan performa yang dihasilkan oleh pemrosesan paralel. Penggunaan afinitas utas yang sesuai adalah menguji setiap prosesor.
Sistem mewakili afinitas dengan bitmask yang disebut masker afinitas prosesor. Masker afinitas adalah ukuran jumlah maksimum prosesor dalam sistem, dengan bit diatur untuk mengidentifikasi subset prosesor. Awalnya, sistem menentukan subset prosesor dalam masker.
Anda dapat memperoleh afinitas utas saat ini untuk semua utas proses dengan memanggil fungsi GetProcessAffinityMask. Gunakan fungsiSetProcessAffinityMask untuk menentukan afinitas utas untuk semua utas proses. Untuk mengatur afinitas utas untuk satu utas, gunakan fungsiSetThreadAffinityMask. Afinitas utas harus merupakan subset dari afinitas proses.
Pada sistem dengan lebih dari 64 prosesor, masker afinitas awalnya mewakili prosesor dalam satu grup prosesor. Namun, afinitas utas dapat diatur ke prosesor dalam grup yang berbeda, yang mengubah masker afinitas untuk proses tersebut. Untuk informasi selengkapnya, lihat Grup Prosesor .
Prosesor Ideal Utas
Saat Anda menentukan prosesor ideal utas , penjadwal menjalankan utas pada prosesor yang ditentukan jika memungkinkan. Gunakan fungsisetThreadIdealProcessoruntuk menentukan prosesor pilihan untuk utas. Ini tidak menjamin bahwa prosesor ideal akan dipilih tetapi memberikan petunjuk yang berguna untuk penjadwal. Pada sistem dengan lebih dari 64 prosesor, Anda dapat menggunakan fungsiSetThreadIdealProcessorEx untuk menentukan prosesor pilihan dalam grup prosesor tertentu.
Topik terkait