it-swarm-id.com

ureadahead tampaknya memblokir sistem saat boot

Saya telah melihat bootcharts saya dan ada sesuatu yang salah dengan mereka. Proses ureadahead melakukan apa yang seharusnya dilakukan (utilisasi disk sebagian besar waktu adalah 100%), tetapi juga memblokir tindakan lain apa pun.

Karena saya punya harddisk laptop yang lambat, ureadahead sendiri membutuhkan waktu ~ 50-an dari waktu boot. Kemudian, sisa urutan boot yang terlihat membutuhkan 100-an lagi untuk diselesaikan, menggunakan banyak CPU, tetapi tidak memaksimalkannya dan banyak IO (lagi, 100% hampir sepanjang waktu).

Ini sepertinya aneh bagi saya. Apakah ureadahead saya salah konfigurasi? Mengapa ia memblokir tugas-tugas seperti membuka jaringan yang tampaknya mengambil banyak CPU? Haruskah ~ 50% dari waktu bootchart secara umum?

Sunting: ini adalah contoh bootchart: http://img191.imageshack.us/img191/1049/localhostkarmic20100815.png (atau ini jika yang langsung tidak berfungsi: http: //yfrog.com/f/5blocalhostkarmic20100815p/ )

5
viraptor

Memblokir boot adalah dengan desain. Maksud dari ureadahead adalah untuk melakukan preload semua data yang dibutuhkan oleh boot sebelumnya. Alasan untuk melakukan ini adalah bahwa alasan utama untuk kelambatan disk adalah mencari waktu - bahkan hard drive yang lambat harus dapat Dorong keluar> 50 MB/detik berbunyi, tetapi jika Anda perlu mencari sekitar - pada puluhan milidetik per pencarian - yang berkurang secara dramatis. Dengan berjalan lebih dulu, ureadahead harus dapat meminimalkan pencarian dan karenanya meminimalkan waktu yang diperlukan untuk membaca semua data yang dibutuhkan boot Anda.

Sehingga ideal bootchart terlihat seperti ureadahead dengan utilisasi 100% I/O, diikuti dengan segala sesuatu yang memulai dan menggunakan no (disc) I/O. Boot ini tidak dapat dicapai secara praktis, paling tidak karena banyak layanan yang kami mulai menulis ke disk, tetapi itulah idenya.

Melihat pada bootchart Anda, sepertinya ureadahead mengalami kesulitan untuk benar-benar menarik data dari disk Anda - ada banyak waktu di mana ia berada pada throughput yang sangat rendah. Meski begitu, sepertinya melakukan beberapa tugasnya - setelah ureadahead memulai boot Anda sebagian besar terikat CPU, bukan I/O terikat, dan sepertinya patch besar I/O-terikat boot dikaitkan dengan preload diaktifkan .

Anda mungkin ingin mencoba menghapus preload, atau reprofile boot¹ Anda, atau mungkin beberapa file Anda sangat terfragmentasi, atau mungkin bug di ureadahead.

1: Menghapus file pack dari/var/lib/ureadahead akan menyebabkan ureadahead melakukan reprofile pada boot berikutnya.

4
RAOF