Saya baru saja mengeksekusi dot
(sebuah program untuk menggambar grafik berarah) dengan file input yang sangat besar sehingga tidak dapat dirender dalam jumlah waktu yang wajar.
Seluruh sistem saya membeku. Saya hampir tidak bisa membuatnya ke konsol teks dengan Ctrl+ Alt+ F1untuk membunuh dot
, tetapi butuh beberapa menit.
Mengapa sistem mengizinkan sesuatu seperti ini? Mengapa ia memberikan program yang tidak kritis seperti dot
99% dari sistem dan menggunakan 1% sisanya untuk tetap responsif?
scheduling
Christoph Wurm
sumber
sumber
Jawaban:
Itulah cara kerja GNU / Linux dan sistem multitasking lainnya, mereka berbagi prosesor di antara proses yang sedang berjalan,
dot
tidak akan memiliki 99%, tetapi 100% selama 99% dari waktu. Setiap proses mendominasi prosesor untuk periode waktu tertentu.Ini ditangani oleh penjadwal (linux memiliki beberapa penjadwal, beberapa hanya menggunakan strategi biasa, beberapa mencoba memberikan lebih banyak waktu untuk antarmuka pengguna, dan sebagainya).
Sekarang, dalam kasus Anda, masalahnya adalah - mungkin - yang
dot
tidak memakan banyak waktu prosesor, tetapi banyak memori. Dan ketika sebuah program menggunakan terlalu banyak memori, ada meronta - ronta , yang merupakan proses yang membuat sistem membeku, bukan karenadot
melakukan banyak hal, tetapi karena kernel harus memindahkan halaman memori bolak-balik antara disk (partisi swap) dan memori sistem.Bahkan jika
dot
hanya mengambil 99% dari waktu CPU, kemungkinan bahwa mengubah ke terminal teks akan segera, apa yang terjadi adalah bahwa kernel harus memindahkandot
barang dari memori sehingga dapat dimasukkanX
kembali ke memori sehinggaX
dapat melihat kunci Anda cukup menekan dan pindah ke terminal teks, maka kernel harusX
keluar dari memoridot
yang masih berjalan, dan kemudian juga pindahdot
untuk memindahkan proses terminal teks (mungkin sajalogin
?) kembali ke memori. (Jika ini terlihat berantakan, itu bukan hanya karena contohnya berantakan - kenyataannya adalah berantakan ini .)Contohnya adalah jika Anda login di terminal teks, Anda mungkin dapat menekan saja tombol, tekan backspace, dan itu akan terjadi secara real-time, tetapi jika Anda melakukan sesuatu yang sederhana seperti menjalankan alat kecil seperti
ps
, itu akan "membeku "untuk sementara waktu karena harus membebaskan memori untuk memuatps
(dan juga harus menunggu di antrian disk I / O, yang sedang banyak digunakan untuk memindahkan data ke dan dari memori, hingga ia dapat memintaps
dari sistem file) .sumber