Bagaimana Anda mengatur afinitas prosesor di Snow Leopard pada MacBook Pro? Saya tahu di Windows Anda bisa mengaktifkannya di Task Manager.
Bagaimana Anda mengatur afinitas prosesor di Snow Leopard pada MacBook Pro? Saya tahu di Windows Anda bisa mengaktifkannya di Task Manager.
Jawaban:
OS X telah mendukung API afinitas utas sejak versi 10.5. Berikut adalah beberapa materi yang relevan dari halaman web yang saya tautkan.
Set afinitas adalah kumpulan utas yang berbagi sumber daya memori dan ingin berbagi cache L2. Set afinitas yang berbeda mewakili afinitas yang terpisah — yaitu, utas yang berasal dari set yang berbeda harus menggunakan cache L2 yang terpisah dan karenanya dijalankan pada prosesor logis yang berbeda.
Set afinitas diidentifikasi oleh "tag". Utas diberikan ke set afinitas tertentu dengan memberinya tag yang mengidentifikasi set itu. Sebuah thread dapat dimiliki paling banyak satu set afinitas; yaitu, ia memiliki satu tag afinitas.
Misalnya, aplikasi yang ingin menjalankan 2 utas pada cache L2 yang terpisah akan menetapkan utas dengan tag afinitas yang berbeda. Pada mesin dual core, afinitas ini secara efektif akan diabaikan. Namun, pada MacPro 4-inti, penjadwal akan mencoba menjalankan utas pada paket terpisah. Demikian pula, pada MacPro 8-inti, penjadwal akan mencoba menjalankan utas ini pada dies yang terpisah (yang mungkin atau mungkin tidak ada dalam paket CPU fisik yang sama).
Aplikasi yang ingin menempatkan utas pada setiap prosesor yang tersedia akan melakukan hal berikut:
- Dapatkan jumlah prosesor pada sistem menggunakan sysctl (3).
- Buat jumlah utas itu.
- Atur setiap utas dengan tag afinitas yang berbeda.
- Mulai semua utas.
Utas dengan kebijakan afinitas default akan dijadwalkan lebih bebas pada prosesor apa pun. Utas ini akan dimigrasikan secara istimewa untuk dijalankan pada prosesor yang menganggur. Utas dengan tag afinitas akan cenderung tetap di tempatnya.
Konsultasikan dengan sumber untuk daftar kode, dan informasi tentang berbagi tag afinitas antara proses induk dan anak, mendapatkan konfigurasi cache CPU, dan banyak lagi.
http://developer.apple.com/mac/library/releasenotes/Performance/RN-AffinityAPI/
Mac OS X tidak mengekspor antarmuka yang mengidentifikasi prosesor atau mengontrol penempatan utas — utas eksplisit ke pengikatan prosesor tidak didukung . Sebagai gantinya, kernel mengelola semua penempatan thread. Aplikasi berharap bahwa penjadwal akan, dalam sebagian besar keadaan, menjalankan utasnya menggunakan penempatan prosesor yang baik sehubungan dengan afinitas cache.
Dari http://images.apple.com/macosx/docs/OSX_for_UNIX_Users_TB_July2011.pdf
• Utas kernel yang efisien. Setiap thread POSIX di-antri ke CPU tertentu, meningkatkan afinitas dan skalabilitas prosesor sekaligus mengurangi pertikaian kunci. Utas sesuai dengan POSIX (1c), termasuk dukungan untuk pembatalan dan mutex bersama.
Tampaknya seperti iklan bagi saya, iMac saya yang menjalankan Lion terlihat sangat menghormati sebagian besar waktu, tetapi tidak melakukan proses pin to a core.
Saya tidak dapat menemukan API untuk mengontrol afinitas proses untuk darwin.