Kami memiliki pekerjaan reguler yang du
merangkum sejumlah subdirektori, memilih pelaku terburuk, dan menggunakan output untuk menemukan jika ada hal-hal yang dengan cepat meningkat untuk menemukan masalah potensial. Kami menggunakan diff
terhadap snapshot untuk membandingkannya.
Ada direktori tingkat atas, dengan sejumlah (beberapa ratus) subdirektori, yang masing-masing mungkin berisi 10 dari ribuan file masing-masing (atau lebih).
" du -s
" Dalam konteks ini bisa sangat agresif IO, menyebabkan server kami men-cache cache dan kemudian lonjakan IO besar-besaran yang merupakan efek samping yang sangat tidak diinginkan.
Strategi apa yang dapat digunakan untuk mendapatkan data yang sama, tanpa efek samping yang tidak diinginkan?
disk-usage
io
limit
Danny Staple
sumber
sumber
Jawaban:
Lihatlah
ionice
. Dariman ionice
:Untuk menjalankan
du
dengan kelas I / O "idle", yang merupakan prioritas terendah yang tersedia, Anda dapat melakukan sesuatu seperti ini:Ini harus berhenti
du
mengganggu proses lain 'I / O. Anda mungkin juga ingin mempertimbangkan mengganti program untuk menurunkan prioritas CPU-nya, seperti:Anda juga dapat melakukan keduanya pada waktu inisialisasi:
sumber
renice
alih-alihnice
. Untuk mulaidu
dengan kedua ionice dan bagus, Anda dapat rantai kedua program:nice -n19 ionice -c3 du
.nice
itu sendiri juga mempengaruhi prioritas I / O scheduler, bukan hanya CPU.nice
hanya berdampak pada kebaikan CPU (yang secara tidak langsung dapat mempengaruhi I / O, tetapi seharusnya tidak mempengaruhi prioritas penjadwal I / O). Di mana Anda melihat perilaku ini? Apakah ini didokumentasikan di suatu tempat?nice
, dan hanya berbicara tentang kuantum waktu dasar CPU. Apakah Anda tahu di mana di dalam buku itu? Aku akan tertarik untuk membaca sumber otoritatif bahwa negara-negara itu, tidak disebutkan dalamman nice
,man 2 nice
,man 2 setpriority
,info nice
atauinfo 'nice invocation'
sejauh yang saya tahu, yang aneh karena beberapa go ini ke cukup sedikit detail tentang bagaimananice
karya panggilan dan apa fungsinya.Jika Anda memiliki banyak file dalam satu direktori, ini dapat menyebabkan lonjakan I / O, karena banyak sistem file tidak menangani pohon file besar dalam satu direktori dengan baik. Membagi menjadi lebih banyak subdirektori dapat membantu di sana. Jika Anda memiliki lebih dari 10k file dalam satu dir dan itu menyebabkan masalah, Anda mungkin harus membaginya.
Adapun untuk melacak penggunaan disk, Anda bisa melihat dulu
df
, jika nilai penggunaan di sana tidak naik dengan cepat maka subdirer tidak baik dan Anda bisa melewatkandu
semuanya.Alternatif lain mungkin sistem kuota disk yang terus melacak penggunaan, jika sistem file Anda mendukungnya.
sumber
df
tidak akan bekerja - masalahnya adalah kita memang sudah membersihkan skrip, jadi kita mungkin tidak melihat perubahan, tetapi telah melewatkan peringatan awal untuk pekerjaan otomatis yang secara agresif mengambil ruang disk. Kami menggunakan zabbix untuk memantau penggunaan disk secara keseluruhan, tetapi mengetahui direktori individu di mana segala sesuatu berjalan sedikit gila sangat penting.Selain itu
ionice
Anda dapat mencoba membuat akses disk lebih efisien. Ini bisa dicoba dengan mengeksekusipertama (mungkin melalui
ionice
juga). Ini tidak akan berfungsi jika ada terlalu banyak file. Berapa banyak terlalu banyak tergantung pada jumlah RAM gratis.sumber