Computer >> คอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีกำหนด CPU Cores ด้วย Taskset ใน Linux

วิธีกำหนด CPU Cores ด้วย Taskset ใน Linux

การประมวลผลแบบมัลติคอร์อาจมีข้อดีและข้อเสีย และบางครั้งคุณจำเป็นต้องกำหนดคอร์ CPU ด้วยตนเองให้กับโปรแกรม (หรือที่รู้จักในชื่อ “ความเกี่ยวข้องของ CPU”) เพื่อให้ได้ประสิทธิภาพที่ดีที่สุด ภายใต้ Linux เครื่องมือหลักคือชุดงาน ฟังดูอาจน่ากลัว แต่เราจะแบ่งเป็นขั้นตอนง่ายๆ เพื่อทำให้กระบวนการง่ายขึ้น

พื้นฐานชุดงาน

การใช้ชุดงานสามารถแบ่งออกเป็นสองส่วน:ความเกี่ยวข้องของ CPU กับโปรแกรมที่จะเปิดตัวและกับโปรแกรมที่กำลังทำงานอยู่แล้ว การเปิดตัวโปรแกรมนั้นง่ายกว่าสำหรับทั้งสองโปรแกรม ดังนั้นเรามาเริ่มกันเลย คำสั่งเรียกใช้งานมีลักษณะดังนี้:

taskset -c cpu-core-number(s) application

ก่อนที่คุณจะป้อนหมายเลขของแกนประมวลผล CPU ที่คุณต้องการกำหนด อย่าลืมว่าโดยทั่วไปรูปแบบการกำหนดหมายเลข Unix จะเริ่มต้นที่ 0 ดังนั้นแกนหลักแรกของคุณจะเป็น 0 แกนหลักที่ 2 ของคุณ 1 และอื่นๆ ดังนั้น เครื่อง dual-core จะมีแกน 0 และ 1 และเครื่อง quad-core จะมีแกน 0, 1, 2 และ 3

สมมติว่าคุณต้องการรัน Audacity บนระบบ dual-core และคุณต้องการให้มันทำงานบนคอร์ที่สองของคุณ คำสั่งนั้นจะเป็น:

taskset -c 1 audacity

การใช้หลายคอร์

ในเครื่องใดเครื่องหนึ่งของเรา บางครั้ง Chrome จะวางเฟรมเมื่อสตรีมวิดีโอ แต่จะทำงานเองเมื่อกำหนดให้กับสองคอร์ หากคุณต้องการลองสิ่งเดียวกันบนระบบควอดคอร์และต้องการกำหนด Chrome ให้กับคอร์สามและสี่ คำสั่งจะเป็น:

taskset -c 2,3 google-chrome

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

taskset -c 1,5 google-chrome

คุณยังสามารถใช้เส้นประเพื่อกระจายแอปพลิเคชันบนหลายคอร์ได้อีกด้วย ตัวอย่างเช่น โปรแกรมหรือฟังก์ชันระบบที่เก่ากว่าจำนวนมากจะมีค่าเริ่มต้นในคอร์แรกของคุณ จะเป็นอย่างไรถ้าคุณต้องการปล่อยให้คอร์แรกว่างที่สุดในขณะที่กระจายแอปพลิเคชันขนาดใหญ่ไปยังคอร์อื่นๆ ทั้งหมดของคุณ

สมมติว่าคุณมีระบบแปดคอร์และต้องการเรียกใช้ Steam จากคอร์ที่สองไปจนถึงคอร์ที่แปด คำสั่งนั้นจะเป็น:

taskset -c 1-7 steam

เปลี่ยนความสัมพันธ์สำหรับโปรแกรมที่เปิดตัวไปแล้ว

ชุดงานไม่ได้จำกัดอยู่เพียงการเปิดใช้แอปพลิเคชันเท่านั้น คุณยังสามารถเปลี่ยนความสัมพันธ์ของ CPU สำหรับโปรแกรมที่กำลังทำงานอยู่ได้ อย่างไรก็ตาม ก่อนที่คุณจะสามารถเปลี่ยนความสัมพันธ์ของแอปพลิเคชันได้ ก่อนอื่นคุณต้องทราบ Process ID (หรือ PID สั้น ๆ )

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

top

ชื่อของคำสั่งที่ทำงานอยู่ทั้งหมดจะอยู่ที่ด้านขวาของหน้าจอ รหัสกระบวนการที่เกี่ยวข้องอยู่ทางด้านซ้าย

วิธีกำหนด CPU Cores ด้วย Taskset ใน Linux

จด PID ของคุณเมื่อคุณจะใช้ในอีกสักครู่ สำหรับตัวอย่างนี้ เราจะใช้ VLC ซึ่งอยู่ตรงกลางของการเล่นวิดีโอ Matroska ความละเอียดสูงบนพีซีรุ่นเก่าที่มีแกนหกคอร์ เรากำลังทดลองใช้ CPU ที่สัมพันธ์กันเพื่อบีบประสิทธิภาพที่ดีที่สุดจาก VLC

ในการเปลี่ยนความสัมพันธ์ของกระบวนการที่มีอยู่ ไวยากรณ์จะมีลักษณะดังนี้:

taskset -cp core-numbers PID

หากคุณสามารถดูภาพหน้าจอด้านบนได้ รหัสกระบวนการของ VLC คือ 20485 เราจะลองใช้ VLC บนคอร์ที่สี่ ห้า และหก ซึ่งในการกำหนดหมายเลข Unix จะเป็น 3-5 หลังจากนั้น คำสั่งจะเป็น:

taskset -cp 3-5 20485

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

taskset -cp 20485

มันแสดงให้เราเห็นว่า VLC นั้นกระจายไปทั่วทุกคอร์

วิธีกำหนด CPU Cores ด้วย Taskset ใน Linux

ลองอีกครั้งด้วยโปรแกรมอื่น สมมติว่าเราใช้ Matroska ขนาดใหญ่ด้วย SMPlayer แทน และ SMPlayer ได้เปิดตัวแล้ว ท็อปบอกว่า PID คือ 16058

วิธีกำหนด CPU Cores ด้วย Taskset ใน Linux

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

วิธีกำหนด CPU Cores ด้วย Taskset ใน Linux

ตอนนี้ เราสามารถลองกระจาย SMPlayer ไปทั่วทั้งสามคอร์เดียวกันกับการทดสอบ VLC ด้วยคำสั่ง:

taskset -cp 3-5 16058

นั่นเป็นเรื่องง่ายใช่มั้ย หากคุณต้องการเปรียบเทียบประสิทธิภาพพีซีของคุณ โปรดอ่านคำแนะนำเกี่ยวกับเครื่องมือที่มีประโยชน์ 8 อย่างในการทดสอบ CPU ของคุณ