คุณจะตั้งค่าความสัมพันธ์ของตัวประมวลผลใน Snow Leopard บน MacBook Pro ได้อย่างไรฉันรู้ว่าใน Windows คุณสามารถเปลี่ยนได้ในตัวจัดการงาน
คุณจะตั้งค่าความสัมพันธ์ของตัวประมวลผลใน Snow Leopard บน MacBook Pro ได้อย่างไรฉันรู้ว่าใน Windows คุณสามารถเปลี่ยนได้ในตัวจัดการงาน
คำตอบ:
OS X ได้รองรับAPI affinity APIตั้งแต่เวอร์ชัน 10.5 นี่คือเนื้อหาที่เกี่ยวข้องจากหน้าเว็บที่ฉันเชื่อมโยง
ชุดความสัมพันธ์คือชุดของเธรดที่ใช้ทรัพยากรหน่วยความจำร่วมกันและต้องการแชร์แคช L2 ชุด affinity ที่แตกต่างแสดงถึง affinities ที่แยกจากกันนั่นคือเธรดที่อยู่ในชุดที่แตกต่างกันควรใช้แคช L2 ที่แยกต่างหากและดังนั้นจึงถูกเรียกใช้บนตัวประมวลผลเชิงตรรกะที่แตกต่างกัน
ชุดความสัมพันธ์ถูกระบุโดย "แท็ก" เธรดถูกกำหนดให้กับชุดความสัมพันธ์เฉพาะโดยกำหนดแท็กที่ระบุชุดนั้น เธรดสามารถอยู่ในชุดของความสัมพันธ์ได้สูงสุดหนึ่งชุด นั่นคือมันมีหนึ่งแท็กความสัมพันธ์
ตัวอย่างเช่นแอปพลิเคชันที่ต้องการเรียกใช้ 2 เธรดในแคช L2 แยกกันจะตั้งค่าเธรดที่มีแท็กสัมพันธ์ที่แตกต่างกัน บนเครื่องดูอัลคอร์ความสัมพันธ์นี้จะถูกละเว้นอย่างมีประสิทธิภาพ อย่างไรก็ตามใน MacPro แบบ 4 คอร์ตัวกำหนดตารางเวลาจะพยายามเรียกใช้เธรดบนแพ็คเกจแยกต่างหาก ในทำนองเดียวกันใน 8-core MacPro ตัวจัดตารางเวลาจะพยายามเรียกใช้เธรดเหล่านี้บนแม่พิมพ์แยกต่างหาก (ซึ่งอาจหรืออาจจะไม่อยู่ในแพ็คเกจ CPU จริงเดียวกัน)
แอปพลิเคชันที่ต้องการวางเธรดบนตัวประมวลผลที่มีอยู่ทั้งหมดจะทำสิ่งต่อไปนี้:
- รับจำนวนตัวประมวลผลบนระบบโดยใช้ sysctl (3)
- สร้างจำนวนเธรดนั้น
- ตั้งค่าแต่ละเธรดด้วยแท็ก affinity ที่แตกต่างกัน
- เริ่มกระทู้ทั้งหมด
เธรดที่มีนโยบายความสัมพันธ์เริ่มต้นจะถูกกำหนดเวลาอย่างอิสระมากขึ้นในโปรเซสเซอร์ใด ๆ เธรดเหล่านี้จะได้รับการโอนย้ายเพื่อให้ทำงานบนโปรเซสเซอร์ที่ไม่ทำงาน เธรดที่มีแท็กที่เกี่ยวข้องจะมีแนวโน้มที่จะอยู่กับที่
ศึกษาแหล่งที่มาของรายการรหัสและข้อมูลเกี่ยวกับการแบ่งปันความสัมพันธ์ของแท็กระหว่างกระบวนการหลักและลูกการรับการกำหนดค่าแคช CPU และอื่น ๆ
http://developer.apple.com/mac/library/releasenotes/Performance/RN-AffinityAPI/
Mac OS X ไม่ได้ส่งออกอินเตอร์เฟซที่สามารถระบุตัวประมวลผลหรือด้ายตำแหน่งอย่างชัดเจนด้ายการควบคุมการประมวลผลผูกพันไม่สนับสนุน เคอร์เนลจัดการการจัดวางเธรดทั้งหมดแทน แอปพลิเคชั่นคาดหวังว่าตัวจัดตารางเวลาจะทำงานภายใต้สถานการณ์ส่วนใหญ่โดยใช้การจัดวางโปรเซสเซอร์ที่ดีสำหรับแคชที่เกี่ยวข้อง
จนถึงตอนนี้ตัวกำหนดตารางเวลา XNU (1504.3.12) ไม่ได้ใช้ความเกี่ยวข้องของตัวประมวลผลสำหรับกระบวนการหรือเธรด
ดังนั้น MacOSX จึงไม่มีวิธีการใด ๆ
จากhttp://images.apple.com/macosx/docs/OSX_for_UNIX_Users_TB_July2011.pdf
•เธรดเคอร์เนลที่มีประสิทธิภาพ แต่ละเธรด POSIX จะถูกจัดคิวบน CPU เฉพาะปรับปรุงความสัมพันธ์ของตัวประมวลผลและความสามารถในการปรับขนาดขณะที่ลดความขัดแย้งในการล็อก เธรดเป็นไปตาม POSIX (1c) รวมถึงการสนับสนุนสำหรับการยกเลิกและ mutex ที่แชร์
ดูเหมือนโฆษณาสำหรับฉัน iMac ของฉันที่ทำงานกับ Lion ดูเหมือนจะเคารพว่าส่วนใหญ่แล้ว แต่มันไม่ได้เป็น 'กระบวนการ Pin'a สู่แกนกลาง
ฉันไม่พบ API ใด ๆ เพื่อควบคุมความสัมพันธ์ของกระบวนการสำหรับดาร์วินอยู่ดี