Bạn có thể khóa chương trình của mình vào một lõi bằng cách sử dụng schedutils
như được mô tả trong bài viết này của Cyberciti :
sudo apt-get install schedutils
sudo taskset -c 3 -p 13545 # Lock PID 13545 to core 3
Các quy trình khác vẫn có thể được lên lịch trên cùng một lõi, mặc dù. Vì vậy, điều thứ hai cần làm là đảm bảo lệnh của bạn chạy với mức ưu tiên cao nhất bằng cách sử dụng lệnh đẹp (điều này sẽ cho hạt nhân Linux biết rằng các quy trình khác sẽ được xử lý trước nếu cần). Bắt đầu chương trình của bạn theo cách này:
nice -n -20 your-program
Có một số lý do có thể khác cho vấn đề thời gian của bạn. Đây không phải là dễ dàng để làm bất cứ điều gì về:
- Nếu bạn đang lập trình bằng Python, có một trình thu gom rác đôi khi tạm dừng chương trình của bạn để giải phóng bộ nhớ không sử dụng.
- Ngắt làm cho CPU xử lý một cái gì đó khác hơn bạn muốn. Ví dụ, các gói mạng hoặc đầu vào / đầu ra khác.
- Nếu chương trình của bạn ngủ nhiều, có thể có các quy trình khác lấp đầy bộ đệm CPU (bộ đệm L1 / L2). Điều này buộc bạn phải chờ truy cập RAM.
- Thậm chí tệ hơn nếu RAM của bạn đầy để quá trình của bạn bị tráo đổi ra đĩa vì thẻ SD bị chậm.
Có nhiều cách để làm cho quá trình của bạn theo thời gian thực , có nghĩa là nó sẽ chạy với các đảm bảo thời gian nhất định. Vấn đề với điều này là mọi thứ khác có thể chậm hơn, và nó là một chủ đề phức tạp. Nếu bạn muốn đi xuống lỗ thỏ này, tôi khuyên bạn nên bắt đầu đọc các quy trình thời gian thực trong Linux .