สมมุติว่าฉันมีกล่องสี่เหลี่ยมสี่แกนและกระบวนการที่เหมือนกันสี่กระบวนการแต่ละอันมีสิบเธรด เป็นไปได้ไหมที่ว่า Linux จะอนุญาตให้ทำงานบน CPU 0 เท่านั้นกระบวนการ B อนุญาตให้ทำงานบน CPU 1 และอื่น ๆ เท่านั้น
สมมุติว่าฉันมีกล่องสี่เหลี่ยมสี่แกนและกระบวนการที่เหมือนกันสี่กระบวนการแต่ละอันมีสิบเธรด เป็นไปได้ไหมที่ว่า Linux จะอนุญาตให้ทำงานบน CPU 0 เท่านั้นกระบวนการ B อนุญาตให้ทำงานบน CPU 1 และอื่น ๆ เท่านั้น
คำตอบ:
taskset <affinity mask> -p <process>
กล่าวคือ
taskset 1 -p 12345
เพื่อตั้งค่ากระบวนการ 12345 ให้ใช้เฉพาะโปรเซสเซอร์ / คอร์ 1
bitmask สามารถเป็นรายการ (เช่น 1,3,4 เพื่อใช้คอร์ 1 3 และ 4 ของระบบแกน 4+) หรือ bitmask เป็นเลขฐานสิบหก (0x0000000D ที่ 1,3,4, 0x00000001 สำหรับแกน 1 เท่านั้น)
taskset
shedutils
มักจะอยู่ในแพคเกจที่เรียกว่า
แก้ไข: เกือบลืม ... หากคุณต้องการตั้งค่าความสัมพันธ์ของคำสั่งใหม่แทนที่จะเปลี่ยนเป็นกระบวนการที่มีอยู่ให้ใช้:
taskset <mask> <program> [<arg1>]...[<argN>]
การใช้งาน tasket (util-linux 2.13-pre7): tasket [options] [mask | รายการ cpu] [pid | cmd [args ... ]] ตั้งค่าหรือรับความสัมพันธ์ของกระบวนการ
-p, --pid ทำงานบน pid ที่กำหนดที่มีอยู่ -c, --cpu-list ที่แสดงและระบุ cpus ในรูปแบบของรายการ -h, - ช่วยแสดงความช่วยเหลือนี้ -v, - ข้อมูลเวอร์ชั่นเอาท์พุทรุ่น
พฤติกรรมเริ่มต้นคือการเรียกใช้คำสั่งใหม่: tasket 03 sshd -b 1024 คุณสามารถดึงมาสก์ของงานที่มีอยู่แล้ว: tasket -p 700 หรือตั้งค่า: tasket -p 03 700 รายการรูปแบบใช้รายการที่คั่นด้วยเครื่องหมายจุลภาคแทนที่จะเป็น mask: tasket -pc 0,3,7-11 700 ช่วงในรูปแบบรายการสามารถโต้แย้งอาร์กิวเมนต์: เช่น 0-31: 2 เทียบเท่ากับ mask 0x55555555
คุณสามารถเพิ่มประสิทธิภาพเซิร์ฟเวอร์ของคุณได้ตามต้องการ