เป็นไปได้หรือไม่ที่จะ จำกัด กระบวนการ Linux เพื่อให้สามารถทำงานบนแกนประมวลผลเฉพาะบนเครื่องใดเครื่องหนึ่งโดยเฉพาะ?


10

สมมุติว่าฉันมีกล่องสี่เหลี่ยมสี่แกนและกระบวนการที่เหมือนกันสี่กระบวนการแต่ละอันมีสิบเธรด เป็นไปได้ไหมที่ว่า Linux จะอนุญาตให้ทำงานบน CPU 0 เท่านั้นกระบวนการ B อนุญาตให้ทำงานบน CPU 1 และอื่น ๆ เท่านั้น

คำตอบ:


16
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 เท่านั้น)

tasksetshedutilsมักจะอยู่ในแพคเกจที่เรียกว่า

แก้ไข: เกือบลืม ... หากคุณต้องการตั้งค่าความสัมพันธ์ของคำสั่งใหม่แทนที่จะเปลี่ยนเป็นกระบวนการที่มีอยู่ให้ใช้:

taskset <mask> <program> [<arg1>]...[<argN>]

1

การใช้งาน 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

คุณสามารถเพิ่มประสิทธิภาพเซิร์ฟเวอร์ของคุณได้ตามต้องการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.