Saya ingin mencadangkan 1 terabyte data ke disk eksternal.
Saya menggunakan perintah ini: tar cf /media/MYDISK/backup.tar mydata
MASALAH: Laptop saya yang buruk macet dan macet setiap kali saya menggunakan 100% CPU atau 100% disk (jika Anda ingin bereaksi tentang hal ini, silakan tulis di sini ) . Jadi saya ingin tetap di sekitar 50% CPU dan 50% disk maks.
Pertanyaan saya: Bagaimana cara menekan CPU dan disk dengan tar
perintah?
Rsync memiliki opsi --bwlimit, tapi saya ingin arsip karena 1) ada banyak file kecil 2) Saya lebih suka mengelola satu file daripada pohon. Itu sebabnya saya gunakan tar
.
nice
tidak akan mencegah penggunaan CPU 100%Jawaban:
Anda dapat menggunakan
pv
untuk membatasi bandwidth pipa. Karena case use Anda sangat terikat IO, overhead CPU tambahan yang melalui pipa tidak akan terlihat, dan Anda tidak perlu melakukan pelambatan CPU.sumber
apt-get install pv
. Saya sarankan menambahkan `-b` setelah-L 1m
: dengan cara ini penghitung byte tambahan akan dicetak, diperbarui setiap detik. Dengan cara ini Anda tahu berapa banyak byte yang telah ditulis sampai sekarangtar czf
bukannyatar cf
) batas mengacu pada output terkompresi (jadi dengan-L 1m
disk Anda tulis tidak akan melebihi 1 MB / s .... tetapi pembacaan disk Anda mungkin antara 1 MB / s dan 5 MB / s, tergantung pada jenis konten Anda)Anda dapat mencoba alat cpulimit yang membatasi persentase CPU. Ini bukan alat standar, jadi Anda harus menginstalnya. Berikut ini kutipan singkat README:
Maka saya akan merekomendasikan ionice untuk membatasi penggunaan IO, meskipun itu adalah akses konkuren yang akan dibatasi, bukan throughput maksimum ... Tidak pernah-kurang di sini adalah bagaimana menggunakannya:
sumber
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 menggunakanusleep(3)
untuk memaksa proses keluar dari kondisi run sejumlah waktu tertentu, tetapi itu akan melibatkan menambaltar
atau menggunakanLD_PRELOAD
mekanisme untuk menyediakan fungsi tambalan yangtar
menggunakan banyak (misalnyafopen(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!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). Omongsleep
-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.sumber
Cara yang lebih umum untuk membatasi CPU adalah dengan menggunakan
/sys
. Ini sepertinya seperti yang Anda inginkan karena hal-hal selaintar
mampu melakukan tugas-tugas yang mahal secara komputasi, hanya saja yang Anda lihattar
paling banyak melakukannya.Cara untuk melakukan ini adalah dengan:
/sys/devices/system/cpu/cpuX/cpufreq
untuk masing-masing CPU Anda (ganticpuX
dengan masing-masing CPU).scaling_available_frequencies
untuk melihat frekuensi apa yang didukung CPU Anda.echo 1234567 > scaling_max_freq
Ini akan mencegah CPU dari melampaui frekuensi yang ditentukan.
sumber