คุณสามารถล็อคโปรแกรมของคุณเป็นหนึ่งคอร์โดยใช้schedutils
ตามที่อธิบายไว้ในบทความ Cyberciti นี้ :
sudo apt-get install schedutils
sudo taskset -c 3 -p 13545 # Lock PID 13545 to core 3
กระบวนการอื่น ๆ ยังคงสามารถกำหนดเวลาไว้ในแกนหลักเดียวกันได้ ดังนั้นสิ่งที่สองที่ต้องทำคือให้แน่ใจว่าคำสั่งของคุณรันด้วยลำดับความสำคัญสูงสุดโดยใช้คำสั่งnice (ซึ่งจะบอกเคอร์เนล Linux ว่ากระบวนการอื่น ๆ ควรถูกจองไว้ล่วงหน้าหากจำเป็น) เริ่มโปรแกรมของคุณด้วยวิธีนี้:
nice -n -20 your-program
มีสาเหตุอื่นที่เป็นไปได้สำหรับปัญหาเรื่องเวลาของคุณ สิ่งเหล่านี้ไม่ใช่เรื่องง่ายที่จะทำอะไรเกี่ยวกับ:
- หากคุณกำลังเขียนโปรแกรมใน Python มีตัวรวบรวมขยะที่บางครั้งจะหยุดโปรแกรมของคุณเพื่อเพิ่มหน่วยความจำที่ไม่ได้ใช้
- อินเตอร์รัปต์ทำให้ CPU จัดการอย่างอื่นที่คุณต้องการ ตัวอย่างเช่นแพ็คเก็ตเครือข่ายหรืออินพุต / เอาท์พุตอื่น ๆ
- หากโปรแกรมของคุณกำลังหลับมากอาจมีกระบวนการอื่นที่เติมแคช CPU (แคช L1 / L2) นี่เป็นการบังคับให้คุณรอการเข้าถึง RAM
- ยิ่งแย่ไปกว่านั้นถ้า RAM ของคุณเต็มเพื่อที่กระบวนการของคุณจะถูกสลับไปที่ดิสก์เพราะการ์ด SD เป็นสิ่งที่ไม่ดี
มีวิธีที่จะทำให้กระบวนการของคุณเรียลไทม์ซึ่งหมายความว่ามันจะทำงานด้วยการรับประกันเวลาที่แน่นอน ปัญหานี้คือทุกอย่างอื่นอาจช้าลงและเป็นหัวข้อที่ซับซ้อน หากคุณต้องการที่จะไปลงหลุมกระต่ายนี้ผมแนะนำให้คุณเริ่มต้นการอ่านขึ้นในกระบวนการเวลาจริงในลินุกซ์