Gerçekten daha az çalıştırmak için bir süreç elde edemezsiniz . Daha nice
düşük bir öncelik vermek için kullanabilirsiniz , ancak bu diğer süreçlerle ilgilidir. Bir işlem çalışırken CPU soğutucusunu çalıştırmanın yolu usleep(3)
, işlemi çalışma durumundan belirli bir süre zorlamak için kullanmaktır , ancak bu ya çok fazla kullanan yamalı bir işlev sağlamak için yamayı tar
ya da LD_PRELOAD
mekanizmayı kullanmayı içerir tar
(ör. fopen(3)
).
En iyi geçici çözümlerinizin SuperUser'da bahsettiğiniz donanımlar olduğundan şüpheleniyorum: dizüstü bilgisayarı serin tutmak ve / veya CPU saatini düşürmek.
Can sıkıcı ama muhtemelen uygulanabilir bir çözüm (gerçekten bir çamur) 'makroskopik' seviyede çalışır. tar
Her 200ms'de 100ms koşmak yerine , her iki saniyede bir saniye çalıştırabilirsiniz. Not: Bu korkunç, korkunç bir çamurdur. Ama hey, işe yarayabilir!
tar cjf some-file.tar.bz2 /some-directory &
while true; do
sleep 1 # Let it run for a second
kill -STOP $! 2>/dev/null || break
sleep 1 # Pause it for a second
kill -CONT $! 2>/dev/null || break
done
Birincisi sleep
uyku süresini, ikincisi çalışma zamanını ayarlar. Şu an olduğu gibi,% 50 görev döngüsüne sahip. Sıcaklığı düşük tutmak için, görev döngüsünü belki de% 25 veya daha düşük bir değere düşürmeniz gerekecektir (1 saniye çalışma, 3 saniye uyku = her 4 saniyede 1 =% 25 görev döngüsü). Kabuk komutu sleep
bu arada kesirli zamanlar alabilir. Böylece söyleyebilirsin sleep 0.1
. Emin olmak için 0.001'in üzerinde tutun ve komut dosyası yürütmenin de zamana eklendiğini unutmayın.