Pertanyaan ini menjadi perhatian saya (dan mungkin banyak di luar sana) karena tidak ada bagian yang berputar di ponsel saya.
Ponsel saya memiliki Quad Core, 3 Gig RAM, dan begitu banyak ruang penyimpanan, semua seperti SSD, dengan kecepatan baca / tulis yang luar biasa.
Dengan semua ini, Android (Baik KitKat dan Lollipop) membutuhkan waktu 80 detik untuk boot hingga selesai. Dibutuhkan lebih sedikit cara di Ubuntu menggunakan systemd atau pemula. (beberapa pengguna melaporkan waktu booting kurang dari 10 detik menggunakan Ubuntu dengan systemd dan sekitar 20 detik saat menggunakan Upstart, dengan spesifikasi seperti Intel i5 dan RAM 8 Gig)
Jadi, apa yang membuat boot Android sangat lambat? Dan apakah ada sesuatu sebagai pengguna, yang bisa saya lakukan untuk mempercepat proses booting?
Sunting: sesuai dengan proses booting yang dijelaskan ( https://android.stackexchange.com/a/29738/27870 ), tampaknya tidak ada banyak perbedaan dalam proses booting keseluruhan dibandingkan dengan OS konvensional seperti Ubuntu. Di mana Android salah dalam prosesnya.
sumber
Jawaban:
Beberapa tahun yang lalu, saya bekerja pada optimasi waktu boot Android, sebagai pengembang Android. Jelas, sebagai bagian dari pekerjaan ini, pertama-tama kami perlu menganalisis di mana Android menghabiskan waktu selama booting.
Di bawah ini adalah temuan singkatnya:
Perangkat keras yang digunakan :
OMAP3430 Board
yang seperti papan pengembangan tempat Stock Android di-flash. Pada perangkat komersial / produksi aktual, akan ada perangkat keras khusus tambahan. Untuk memvisualisasikan waktu boot, kami menggunakan alat pengembang yang disebutbootchart
The paling menghabiskan waktu dengan Android adalah dalam mengikuti 2 bidang:
Mengapa? Karena preloading kelas zygote sangat penting untuk kinerja sistem yang baik setelah boot. Jadi, sekali kelas dimuat dari semua aplikasi, maka waktu menjalankan aplikasi jauh lebih cepat.
/system/app
,/system/framework
,/data/app
,/data/app-private
.Selanjutnya, ada komponen yang disebut Activity Manager yang memulai layanan yang berbeda seperti layanan Lokasi, layanan Telephony dll. Dan dibutuhkan hampir 11-12 detik untuk menyelesaikan ini.
Mengapa? Karena, pemindaian paket secara teori dapat melakukan caching dari hasilnya setelah boot pertama dan dapat memeriksa kerentanan keamanan.
Jika Anda menambahkan ini 2 kali, itu adalah sekitar 35 Detik
Anda dapat mengabaikan angka-angka ini di zaman sekarang, tetapi poin yang ditunjukkan oleh angka ini adalah di mana kode AOSP Android menghabiskan waktu selama boot. OEM memiliki perangkat kerasnya sendiri yang bervariasi dari satu perangkat ke perangkat lainnya.
Tentu saja, ada inisialisasi perangkat keras dan lunak yang perlu dilakukan Android setelah 2 langkah yang memakan waktu ini, yang dapat memperpanjang waktu booting.
Kurasa tidak banyak. Komunitas pengembang Android dan OEM masih berupaya mempercepat waktu booting tetapi seperti yang Anda bayangkan, itu tidak semudah itu dan membuat perubahan untuk mengoptimalkan waktu boot mungkin berakhir menyebabkan lebih banyak waktu buka aplikasi selama operasi normal, seperti yang ditunjukkan oleh kerangka kerja Android insinyur .
sumber
Boot Android lambat?
Ponsel saya hanya dual core dengan RAM 1G (Zenfone 4) dan saya tidak pernah mengalami masalah itu. Boot dingin dalam ~ 60 detik, reboot dalam 40-ish (CyannogenMod 12.1).
Itu tergantung pada konfigurasi dan apa yang Anda anggap "waktu boot" . Laptop saya (i5 1st Gen, 4 GB RAM dengan spinning disk) dianggap dapat digunakan (selesai booting) setelah sekitar 90 detik. Tentu saya dapat menunda / menonaktifkan beberapa layanan untuk mendapatkan waktu boot yang lebih cepat dan mulai secara manual sesuai kebutuhan. Tapi menurut saya, berdasarkan preferensi saya, itu tidak akan bisa digunakan .
Di PC vs Ponsel
Ada beberapa perbedaan yang harus Anda pertimbangkan ketika membandingkan antara pc dan linux mobile. dari CPU ke kernel . Perbedaan yang paling menonjol:
3.18.10
saat kernel stabil saat ini di4.6.2
.Jadi, apa yang membuat boot Android sangat lambat?
Kenapa kita tidak mengeceknya? :)
Jika Anda memiliki akses ke adb dan sudah mengaktifkan Opsi Pengembang , periksa log boot menggunakan
pada perangkat saya, ini adalah output:
Seperti yang Anda lihat, total waktu boot dari VM mulai sampai gambar layar awal oleh manajer jendela adalah ~ 40 detik. Waktu tambahan pada firmware & ruang kernel (pada asnwer yang ditautkan, terjemahan ini ke langkah 1-4) tidak termasuk.
Perhatikan bahwa dibutuhkan ~ 18 detik untuk memproses apk keseluruhan sistem (
boot_progress_pms_*
), ini menerjemahkan ke ~ 45% dari waktu boot, yang meliputi:Jadi secara umum, total waktu boot tergantung pada jumlah paket (aplikasi) yang diinstal pada perangkat. Lebih banyak aplikasi berarti lebih lama menunggu selama proses pms. Selain itu, memulai aktivitas membutuhkan ~ 5 dtk / 20% dari waktu booting. Sisanya tidak signifikan atau aman dimodifikasi tanpa pengetahuan mendalam tentang perilaku sistem.
Adakah yang bisa saya lakukan untuk mempercepat proses booting?
Meningkatkan waktu boot
Menurut pendapat saya, mengutak-atik waktu boot adalah tidak perlu dan memberikan keuntungan yang tidak signifikan. Karena ponsel Anda akan, secara teoritis , tetap terjaga sebagian besar waktu; jauh lebih penting untuk menjaga stabilitas sistem (dengan pertukaran proses boot yang lebih lama) untuk memastikan waktu kerja yang lebih tinggi dan lebih sedikit kesalahan.
sumber
adb logcat -d -b events -v threadtime | grep "boot"
kembali kosong. Saya memeriksa saat reboot, dan masih tidak ada log di sana yang cocokboot
.adb logcat -d -b events -v threadtime | less
. Atau ubah buffer cincin logcatUntuk apa nilainya, saya menjalankan Android-x86 dalam Mesin Virtual di Linux dan mem-boot dalam waktu sekitar 22 detik, yang setara dengan sebagian besar distribusi GNU / Linux dan Windows 10 pada drive SSD dengan CPU desktop quad-core.
Jadi saya tidak menganggap waktu boot Android sangat lambat.
sumber