Kaynağına bakıldığında, burada açıklanan strace
klon bayrağının kullanımını buldum CLONE_IDLETASK
:
#define CLONE_IDLETASK 0x00001000 /* kernel-only flag */
Daha derinlemesine baktıktan sonra, bu bayrak içinde ele alınmamasına rağmen man clone
, çekirdeğin önyükleme işlemi sırasında çekirdek (hepsi PID 0'a sahip olmalıdır) makinedeki her bir CPU için kullanılmadığını gördüm. yani 8 CPU'lu bir makine en az 7 değere sahip olacaktır (aşağıdaki soruya bakın) bu tür işlemler "çalışıyor" (fiyat teklifi).
Şimdi, bu beni bu "boş" sürecin gerçekte ne yaptığı hakkında birkaç soruya götürüyor. Benim varsayım, zaman süresi sona erene ve çekirdek boşta işlemi bir kez daha çalıştırmak veya atamak için (CPU kullanılmıyorsa) gerçek bir süreç atayana kadar sürekli olarak NOP işlemini gerçekleştiriyor. Ancak, bu tam bir tahmin. Yani:
Örneğin, 8 CPU'lu bir makinede 7 böyle boşta işlem yaratılacak mı? (ve bir CPU kullanıcı alanı çalışması yapmazken çekirdeğin kendisi tarafından tutulacak mı?)
Boşta kalma süreci gerçekten sadece NOP operasyonlarının sonsuz bir akışı mıdır? (veya aynısını yapan bir döngü).
İşlemci kullanımı (örneğin
uptime
), boşta işlemin işlemcide ne kadar sürdüğü ve belirli bir süre içinde ne kadar süre bulunmadığı ile basitçe hesaplanıyor mu?
PS Bu sorunun büyük bir kısmının bir CPU'nun nasıl çalıştığını tam olarak anlamadığım gerçeğinden kaynaklanıyor olabilir. yani montajı, zaman çerçevelerini ve kesintileri anlıyorum ancak örneğin bir CPU'nun ne yaptığına bağlı olarak nasıl daha az ya da daha fazla enerji kullanabileceğini bilmiyorum. Biri beni de aydınlatırsa minnettar olurum.