Anda tidak dapat benar-benar mendapatkan proses untuk menjalankan lebih sedikit . Anda dapat menggunakannya nice
untuk memberikan prioritas yang lebih rendah, tetapi itu terkait dengan proses lain. Cara untuk menjalankan pendingin CPU saat proses berjalan adalah menggunakan usleep(3)
untuk memaksa proses keluar dari kondisi run sejumlah waktu tertentu, tetapi itu akan melibatkan menambal tar
atau menggunakan LD_PRELOAD
mekanisme untuk menyediakan fungsi tambalan yang tar
menggunakan banyak (misalnya fopen(3)
).
Saya menduga solusi terbaik Anda adalah perangkat keras yang Anda sebutkan di SuperUser: menjaga laptop tetap dingin dan / atau menurunkan jam CPU.
Pemecahan masalah yang menjengkelkan tetapi mungkin dapat dilakukan (kludge, benar-benar) bekerja pada level 'makroskopik'. Daripada tar
menjalankan 100ms setiap 200ms, Anda bisa membuatnya berlari satu detik dari setiap dua. Catatan: ini adalah kludge yang mengerikan dan mengerikan. Tapi hei, itu mungkin berhasil!
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
Yang pertama sleep
menyesuaikan waktu tidur, yang kedua menyesuaikan waktu kerja. Seperti yang ada sekarang, ia memiliki siklus tugas 50%. Untuk menjaga suhu turun, Anda kemungkinan besar perlu mengurangi siklus tugas menjadi mungkin 25% atau lebih rendah (1 detik berjalan, 3 detik tidur = 1 dari setiap 4 detik = 25% siklus tugas). Omong sleep
-omong perintah shell bisa menghabiskan waktu fraksional. Jadi Anda bahkan bisa mengatakannyasleep 0.1
. Simpan lebih dari 0,001 hanya untuk memastikan, dan jangan lupa bahwa eksekusi skrip menambah waktu juga.