Kerugian menggunakan preload? Mengapa tidak disertakan secara default?

110

Saya ingin tahu apa kelemahan menggunakan preload? Jika tidak ada downside, preloadakan diaktifkan secara default, jadi saya kira ada beberapa.

Oke, Anda memerlukan RAM lebih banyak, tetapi kebanyakan orang memiliki RAM jauh lebih banyak daripada kebutuhan Ubuntu - jadi apa kerugian penggunaannya preload?

Paradiesstaub
sumber
6
Terima kasih atas pertanyaan bermanfaat Anda. Saya ingin tahu, Apakah ini mitos?
Saeed Zarinfam
1
penggunaan cpu dan baterai mungkin menjadi kelemahan untuk beberapa ... bugs.launchpad.net/ubuntu/+source/preload/+bug/481861
Mateo
1
Pertanyaan yang bagus Beberapa distribusi memang sarat dengan preload, seperti OS dasar (yang saya jalankan di laptop saya karena gala jauh lebih cepat daripada kesatuan Ubuntu).
1
Hanya tebakan: Salah satu alasan untuk tidak memasukkannya secara default adalah kenyataan bahwa itu tidak dapat digunakan pada semua sistem (persyaratan perangkat kerasnya mungkin berbeda dari persyaratan standar).
don.joey
2
brainstorm.ubuntu.com/idea/1122 sebuah posting di sini menunjukkan bahwa "itu berfungsi sebagai daemon dengan hak akses root." Yang mungkin merupakan masalah keamanan, ada juga brainstorm ini yang menginginkannya inklusi default brainstorm.ubuntu.com/idea/14092
Mateo

Jawaban:

65

Sederhananya, Preload bukan untuk semua orang. Sangat bagus jika Anda sering membuka aplikasi atau perpustakaan. Ini berbahaya jika Anda memuat aplikasi atau perpustakaan hanya sesekali. Saya akan menggunakan dua contoh dari penggunaan saya yang sebenarnya (dan ya saya menggunakan preload).

Pertama, Google Chrome. Sekarang browser dibuka hanya sekali per boot, mungkin dua kali (bagi saya, saya seorang pengembang web). Chrome dan perpustakaan terkaitnya tetap tersimpan dalam memori karena saya selalu menggunakannya. Bahkan ketika saya menutup semua jendela chrome itu masih di latar belakang melakukan hal itu. Dengan demikian semua ram yang didedikasikan untuk memegang salinan preload Chrome adalah total dan benar-benar sia-sia. Tidak pernah (atau jarang) dibongkar. Untuk pengguna rata-rata, ini berlaku untuk sejumlah besar aplikasi. Seorang pengguna Office hampir selalu memiliki aplikasi email mereka terbuka. Jadi penghematan kecil dalam waktu startup benar-benar sia-sia karena mereka hanya membuka aplikasi email mereka sekali sehari, dan membiarkannya terbuka.

Contoh kedua adalah rake. Sebagai pengembang ruby ​​yang percaya pada pengujian saya menjalankan rake a TON. rake run, dijalankan selama beberapa detik - menit kemudian keluar. Preload membantu saya mempercepat pekerjaan sehari-hari saya karena banyak menyapu dan perpustakaan yang dibutuhkan (yang bisa sangat luas) sebelumnya. Jadi ada banyak awal dan berhenti untuk menjalankan rake. Ram tambahan yang digunakan untuk mempercepat peluncuran 400 atau 500 rake selama beberapa jam benar-benar sepadan.

Jadi alasan itu tidak diaktifkan secara default adalah karena kemampuannya untuk benar-benar meningkatkan kinerja sebagian besar didasarkan pada bagaimana Anda menggunakan sistem Anda. Bagi sebagian orang itu akan menjadi negatif dan bagi orang lain positif.

Terakhir, setelah preload, bahkan jika Anda tidak menggunakannya, mengkonsumsi ram. Jadi, jika Anda tidak sering meluncurkan aplikasi, Anda sebenarnya bisa membuat seluruh sistem Anda lebih lambat dengan tidak memiliki ram yang tersedia untuk jenis caching lainnya. Ingat, bahkan jika Anda memiliki 32 Gigs of ram Linux akan mencoba untuk menggunakan sebanyak mungkin untuk cache data untuk membuat interaksi Anda lebih cepat. Dengan menggunakan preload Anda mengurangi memori bebas itu. Bahkan jika itu hanya sedikit kecil, 2 detik yang Anda simpan saat meluncurkan chrome 1 dapat dikenakan biaya 60 detik selama sebulan tetap berjalan.

coteyr
sumber
1
Juga, menggunakan preload memperlambat booting. Semakin banyak barang dimuat, semakin lama waktu yang dibutuhkan untuk menjalankan sistem Anda. Sekarang, bayangkan bahwa yang ingin Anda lakukan hanyalah boot, tulis kalimat pada memo, dan matikan setelahnya. Anda bahkan akan menunggu untuk dapat menulis memo, karena sistem Anda preloading hal-hal yang kemungkinan besar tidak terkait dengan tugas itu. Jadi, dengan cara tertentu, preloading (secara umum) adalah pedang bermata dua.
F-3000
1
Preload sebenarnya tidak berfungsi seperti itu ... Ini memberikan petunjuk kernel seperti "hei muat ini ke cache Anda saat Anda di sana, saya akan segera membutuhkannya" dan kernel melakukannya. Jadi sebenarnya tidak menggunakan RAM seperti yang Anda gambarkan. Dua hal dapat terjadi, yaitu: Memuat ke dalam cache akan mendorong keluar aplikasi yang akan segera Anda gunakan - yang mengakibatkan pembekuan singkat dan aktivitas hard disk saat Anda kembali ke aplikasi.
hurikhan77
1
Kedua: Jika preload memprediksi pola penggunaan Anda salah (yang mungkin cukup baik jika Anda terus-menerus memuat aplikasi), cache hal-hal yang nantinya akan didorong keluar dari RAM lagi dan pada gilirannya itu sendiri mendorong cache keluar dari RAM yang mungkin Anda miliki lebih baik digunakan untuk. Tetapi pada akhirnya itu hanya "mengkonsumsi" RAM seperti halnya cache vfs - jadi itu benar-benar RAM yang dapat dibuang dan dengan demikian "membebaskan RAM" dengan cara. Namun itu bersaing dengan "cache normal" saat Anda menulis.
hurikhan77
1
Dengan mengingat coteyr dan @ hurikhan77 di atas, apakah Anda setuju Preload adalah cara yang kontra-efektif untuk membantu meningkatkan kecepatan yang dirasakan pada kotak desktop lama, RAM rendah (~ 800 MB gratis saat startup). FYI yang mengaktifkan Preload pada kotak-kotak yang diperbarui akan memberikan banyak pekerjaan pada manajer memori virtual kernel untuk sedikit perbaikan?
tuk0z
2
@ lliseil Jika 800 MB itu benar-benar RAM yang tidak terisi, preload dapat membantu ... Tapi mungkin bekerja lebih baik dengan lebih banyak RAM. Dan pada gilirannya itu berarti: Preload akan bertentangan dengan aplikasi yang haus memori Anda dapat mulai nanti. Menurunkan swappiness mungkin diperlukan di sini yang kemudian mungkin membuat preload tidak berguna segera setelah Anda akan menggunakan terlalu banyak RAM.
hurikhan77
21

Pertanyaan diajukan oleh bountier Saeed Zarinfam pada 5 September 2012:

Hai semua, saya ingin tahu, Apakah ini mitos? Apakah [preload] benar-benar meningkatkan kinerja saya? Apa kelemahan menggunakannya? Saya punya laptop dengan spesifikasi ini (Core i5 CPU, 4GB RAM, 128GB SSD Hard). Terima kasih banyak.

  • Tidak perlu preload jika Anda memiliki SSD
    • Ini karena SSD memberikan waktu akses acak yang jauh lebih cepat daripada hard disk, jadi "pra-muat" binari / dependensi dalam memori adalah pemborosan, IMO
    • Kelemahan dasar kemudian adalah bahwa preload adalah "menggunakan" memori tambahan tanpa memberikan manfaat nyata.
ish
sumber
20
Ini tidak mencakup pertanyaan OP karena adakah kekurangan menggunakan preload? Kedua, Anda telah membentuk opini, membuat pernyataan tentang "pre-loading" dan kemudian memperkenalkan "SSD" ke dalam persamaan. Pada titik apa Anda sebenarnya akan menjawab pertanyaan itu?
Ringtail
12

Preload adalah "daemon readahead adaptif" yang berjalan di latar belakang sistem Anda, dan mengamati program apa yang paling sering Anda gunakan, menyimpannya untuk mempercepat waktu pemuatan aplikasi. Dengan menggunakan Preload, Anda dapat menggunakan RAM yang tidak digunakan untuk bekerja dengan baik, dan meningkatkan kinerja keseluruhan sistem desktop Anda.

Jangan berharap untuk melihat perubahan drastis dalam kinerja segera. Selain itu, jika Anda hanya membuka / menutup aplikasi secara berulang, komputer Anda akan menyimpan file-file itu dalam cache (ini disebut beban "hangat"), sehingga Anda tidak akan melihat perbedaan kecepatan di sana. Namun, Anda akan melihat peningkatan kecepatan jika, misalnya, Anda menggunakan program secara terputus-putus; program-program ini akan mulai lebih cepat daripada tanpa Preload.

Preload dapat memberikan peningkatan besar dalam waktu mulai aplikasi; karena sebagian besar mesin modern memiliki banyak memori untuk cadangan, Preload membuat RAM ini digunakan dengan baik. 1

Sekarang dikatakan, tampaknya preload adalah utilitas yang hebat, dan mungkin saja.

Saya pikir alasannya tidak dimuat dengan OS, adalah karena pengguna harus tahu persis apa yang dilakukan di sana, dan memiliki pengalaman yang cukup untuk dapat menggunakannya, dan sistem harus memiliki RAM yang cukup.

Pada aspek yang lebih teknis, preload berfungsi dengan memindahkan data dari hard disk ke RAM, yang membuat sebagian besar hard disk beralih ke mode tidur jika tidak digunakan, dan kemudian harus berputar kembali ketika diperlukan. Jadi memutar naik / turun drive, akan menyebabkan jumlah Siklus Muat / Bongkar, dan jumlah waktu Power-On meningkat, dan itu akan mempersingkat masa pakai drive.

Kami merancang dan mengimplementasikan preload, skema prefetching berbasis Markov yang bekerja pada prediksi tingkat aplikasi. Selain itu, preload diimplementasikan di ruang pengguna dan tidak mengubah lingkungan run-time aplikasi dalam arti apa pun. Ini adalah pekerjaan pertama yang bereksperimen dengan sistem prefetching pada tingkat ini sejauh yang kita tahu.

Hasil percobaan kami menunjukkan peningkatan yang menjanjikan pada waktu permulaan aplikasi dibandingkan dengan cache dingin, dan hit rate yang layak dibandingkan dengan algoritma prediksi naif.

Namun, berada di ruang pengguna memperkenalkan hambatan besar dalam membuat preload solusi kompetitif untuk masalah waktu startup. Secara khusus, tidak memiliki informasi lengkap tentang permintaan I / O aplikasi, dan kurangnya saluran komunikasi yang kuat dengan subsistem cache halaman menurunkan efektivitas preload secara drastis, terutama di bawah kondisi memori yang ketat.

Masalah lain yang melekat dengan desain preload adalah varians tinggi dan kepercayaan prediksi rendah yang disebabkan oleh korelasi yang relatif longgar dari start-up aplikasi. Sementara kami berhasil membangun sebuah model untuk melacak korelasi aplikasi, fakta bahwa peluncuran aplikasi adalah peristiwa yang sangat jarang dibandingkan dengan skala waktu yang digunakan komputer, skema prefetching tingkat aplikasi dikutuk untuk menggunakan memori prefetching besar selama hampir tidak terbatas dalam waktu yang tidak terbatas. Memori ini dapat digunakan untuk meningkatkan perilaku cache jangka pendek.

Akhirnya, kami datang dengan serangkaian rekomendasi untuk pengembang sistem tentang cara meningkatkan waktu boot, waktu login, dan waktu startup aplikasi tanpa kembali ke prefetcher yang terintegrasi dengan subsistem cache di kernel. Tentu saja, prefetcher berbasis fi le di kernel dapat meningkat di atas itu. 2

1 Sumber: techthrob

2 Sumber: Preload - Anemon Prefetching Adaptive oleh Behdad Esfahbod - Tesis yang diajukan sesuai dengan persyaratan untuk tingkat Master of Science - Lulusan Departemen Ilmu Komputer - University of Toronto Hak Cipta (c) 2006 oleh Behdad Esfahbod.

Mitch
sumber
1
Terima kasih atas jawaban Anda, Mitch. Ini adalah pikiran saya juga. Terutama pada laptop preload mungkin menjadi masalah. Tapi tetap saja, saya ingin mencari sumber / diskusi resmi tentang mengapa tim Ubuntu memutuskan untuk menolak pengiriman preload.
Glutanimate
9

Kekurangannya? Tidak ada!

Peningkatan kinerja membuka aplikasi oleh pengguna. Saya telah menggunakannya selama bertahun-tahun pada sistem saya dan juga "baca-depan" dan tidak memiliki masalah. The halaman bug untuk preload tidak menyarankan kekurangan apapun baik.

Preload memonitor aplikasi yang dijalankan pengguna , dan dengan menganalisis data ini, memprediksi aplikasi apa yang mungkin dijalankan oleh pengguna , dan mengambil binari-binari itu dan ketergantungannya ke dalam memori untuk waktu startup yang lebih cepat.

Itu memang meningkatkan waktu booting sedikit namun penurunan kecepatan mengambil waktu aplikasi jauh melebihi masalah kecil ini.

lihat artikel

Jika Anda terus-menerus menggunakan aplikasi umum seperti Firefox atau Gimp, Anda akan melihat beberapa kali pemuatan yang jauh lebih baik. Preload adalah daemon yang berjalan secara diam-diam di latar belakang dan tidak akan mengganggu desktop Anda. Pengguna Ubuntu dapat menginstal preload dengan:

sudo apt-get install preload

Hasil:

Grafik yang menunjukkan perbedaan antara mulai normal dan preload

ref

Buntut
sumber
3
Saya tahu apa dosisnya dan saya membaca beberapa 'preload HowTos', tetapi tidak ada tempat saya bisa membaca sesuatu tentang kekurangannya. Jika tidak ada penarikan kembali, maka akan dikirimkan secara default dengan banyak distribusi Linux - tetapi sejauh yang saya tahu - bukan itu masalahnya.
Paradiesstaub
1
Kinerja tidak menurun , tetapi meningkat . Itulah inti menggunakan preload. Mungkin itu hanya kesalahan ketik.
Marco
2
Diagram Anda terlihat bagus tetapi tidak memiliki informasi penting. Ini akan cocok 100% dalam presentasi powerpoint dari seorang tenaga penjualan, tetapi ini adalah contoh dari 'statistik buruk'. Dari mana angka-angka ini berasal? Protokol apa yang digunakan untuk merekamnya? Apa itu snapshot tunggal? Berapa banyak mesin yang terlibat dalam sampel? Apa perangkat kerasnya? Bagaimana program preload dikonfigurasi?
1
@Ringtail: Anda benar. Anda bukan penulis diagram itu. Tetapi jika Anda mengklik semua tautan dalam artikel, Anda datang pada halaman Techthrob.com yang seharusnya menjadi host artikel yang ditulis oleh penulis program. Tetapi halaman itu telah hilang. Jadi hanya ada sumber: tesis penulis.
2
Seseorang harus memutakhirkan perangkat keras jika terminal gnome membutuhkan lebih dari 2 detik untuk memulai ...
Peter and the wolf