Bu Cyberciti makalesindeschedutils
açıklandığı şekilde programınızı bir çekirdeğe kilitleyebilirsiniz :
sudo apt-get install schedutils
sudo taskset -c 3 -p 13545 # Lock PID 13545 to core 3
Yine de diğer süreçler aynı çekirdek üzerinde programlanabilir. Bu nedenle yapılacak ikinci şey, nice komutunu kullanarak komutunuzun en yüksek önceliğe sahip olduğundan emin olmaktır (bu, Linux çekirdeğine gerekirse diğer işlemlerin önceden uygulanması gerektiğini söyler ). Programınızı şu şekilde başlatın:
nice -n -20 your-program
Zamanlama sorunlarınızın başka olası nedenleri de vardır. Bunlar hakkında bir şey yapmak o kadar kolay değil:
- Python'da programlama yapıyorsanız, bazen kullanılmayan belleği boşaltmak için programınızı duraklatan bir çöp toplayıcı vardır.
- Kesmeler, CPU'nun istediğinizden başka bir şey yapmasını sağlar. Örneğin, ağ paketleri veya diğer giriş / çıkışlar.
- Programınız çok uyuyorsa CPU önbelleklerini dolduran başka işlemler de olabilir (L1 / L2 önbellek). Bu sizi RAM erişimini beklemeye zorlar.
- RAM'in dolu olması durumunda daha da kötüsü, SD kartlar sloooow olduğu için işleminizin diske değiştirilmesini sağlar.
İşleminizi gerçek zamanlı yapmanın yolları vardır , bu da belirli zamanlama garantileriyle çalışacağı anlamına gelir. Bununla ilgili sorun, her şeyin daha yavaş olabileceği ve karmaşık bir konudur. Bu tavşan deliğinden aşağı inmek istiyorsanız , Linux'ta gerçek zamanlı süreçleri okumaya başlamanızı öneririm .