Apa itu EAS ? Kenapa Bisa Bikin Android Makin Ngebut

Apa itu EAS Kernel

Jauh di masa lalu ketika Linux hanya sebuah ide dalam pikiran Linus Torvalds, CPU adalah entitas single-core yang membutuhkan sejumlah besar energi untuk daya yang kecil. 

Prosesor pertama yang tersedia secara komersial, Intel 4004, berjalan pada clock-rate 740kHz pada satu inti. Saat itu, tidak perlu penjadwal beban. Penjadwalan beban dicadangkan untuk "raksasa" dual-core seperti IBM Power 4 yang keluar beberapa dekade setelahnya. Ini berjalan pada 1.1GHz beastly ke 1.9GHz dan diperlukan program dan sistem untuk memanfaatkan core ini dengan benar.

Bagaimana kita dapat dari mesin-mesin ini ke algoritma perangkat lunak yang menggunakan banyak core?

Kita mungkin pernah mendengar tentang Energy Aware Scheduling (EAS) atau yang dalam bahasa Indonesia berarti Penjadwalan Sadar Energi di forum - forum Android.

Apa yang hebat tentang EAS dan bagaimana kita mencapai titik ini?

Sebelum kita membahas lebih jauh, kita perlu berbicara tentang penjadwal beban Linux.

Evolusi Penjadwal Muat Linux ( The Evolution of the Linux Load Schedulers )

Penjadwalan Round-Robin ( Round-Robin Scheduling )

Round robin scheduling

Pemrosesan round robin merupakan konsep sederhana untuk dijelaskan dan dipahami, dan bahkan lebih sederhana untuk memahami kekurangannya. Round-robin menggunakan pengiris waktu untuk mengalokasikan waktu untuk setiap proses. Mari kita asumsikan kita memiliki empat proses yang berjalan di komputer kita.
  • Proses A
  • Proses B
  • Proses C
  • Proses D

Sekarang, mari kita lakukan pekerjaan penjadwal round-robin. Kita akan mengalokasikan 100 milidetik (pemotongan waktu) untuk setiap proses sebelum beralih ke proses berikutnya. Ini berarti Proses A dapat mengambil 100 milidetik untuk melakukan pemrosesan, kemudian pindah ke Proses B dan seterusnya. Jika pekerjaan aplikasi membutuhkan waktu 250 milidetik, ia harus melalui proses ini 3 kali hanya untuk menyelesaikan pekerjaannya! Sekarang skala ini di seluruh inti yang berbeda, sehingga Proses A dan Proses B dialokasikan ke inti 1, dan Proses C dan Proses D dialokasikan ke inti 2. Ini digantikan oleh penjadwalan O (n) (yang seperti round-robin, tetapi menggunakan zaman dan memungkinkan alokasi waktu yang dinamis), kemudian O (1) penjadwalan (overhead yang diminimalkan, dukungan proses tidak terbatas), kemudian akhirnya Penjadwal Sepenuhnya Adil (CFS). CFS dilebur ke dalam kernel Linux versi 2.6.23 pada Oktober 2007. CFS telah dirombak sejak dan masih merupakan penjadwal default dalam sistem Linux.

Completely Fair Scheduler

Completely Fair Scheduler telah ada di Android sejak awal dan digunakan pada perangkat non-besar. LITTLE. Ini menggunakan algoritma cerdas untuk menentukan urutan pemrosesan, alokasi waktu dll. Ini adalah contoh implementasi yang bekerja dari algoritma penjadwalan yang dipelajari dengan baik yang disebut "antrian adil tertimbang." Ini pada dasarnya berfokus pada penyediaan prioritas untuk proses sistem dan proses prioritas tinggi lainnya. berjalan di mesin. Jika itu dijalankan pada perangkat besar. LITTLE, semua core akan dianggap sama. Ini buruk, karena core berdaya rendah mungkin terpaksa menjalankan aplikasi intensif, atau bahkan lebih buruk, kebalikannya dapat terjadi. Penguraian sandi untuk mendengarkan musik dapat dilakukan pada inti besar, misalnya, meningkatkan konsumsi daya secara tidak perlu. Inilah sebabnya mengapa kita perlu penjadwal baru untuk big.LITTLE, yang benar-benar dapat mengenali dan memanfaatkan perbedaan inti dengan cara yang efisien daya. Di situlah Heterogen Multi-Processing (HMP) masuk, penjadwal beban standar kebanyakan ponsel Android berjalan sekarang.

Pemrosesan Multi Heterogen ( Heterogeneous Multi-Processing )

Ini merupakan penjadwal beban standar untuk perangkat big.LITTLE yang dirilis dalam beberapa tahun terakhir, selain Google Pixel.  HMP memanfaatkan arsitektur big.LITTLE, mendelegasikan pekerjaan prioritas rendah, kurang intensif ke inti kecil yang mengonsumsi lebih sedikit daya. HMP adalah "aman" di mana ia tahu apa yang harus pergi ke core besar dan apa yang harus pergi ke core kecil, tanpa membuat kesalahan. Ini hanya bekerja dan membutuhkan banyak upaya lebih sedikit untuk mengatur di sisi pengembangan daripada sesuatu seperti EAS, yang akan kita bahas sebentar lagi. HMP hanyalah perpanjangan dari CFS untuk membuatnya lebih tangguh.

HMP tidak mengambil tebakan, juga tidak memprediksi proses di masa depan. Ini bagus tapi itulah mengapa perangkat tidak bisa semanis yang menjalankan EAS dan juga mengapa itu menghabiskan baterai lebih sedikit. Ini, akhirnya, membawa kita ke Penjadwalan Sadar Energi (EAS), yang saya yakini sebagai masa depan dalam pengembangan ROM dan kernel seiring semakin banyak OEM yang mengadopsinya.

Energy Aware Scheduling (EAS)

Energy Aware Scheduling adalah hal besar yang sering dibicarakan para upreker Android, khususnya jika temen - temen sering mampir di forum OnePlus ataupun Google Pixel, tentu saja. Ini diluncurkan ke arus utama dengan Qualcomm Snapdragon 845 , jadi jika Anda memiliki salah satu perangkat ini, Anda sudah memiliki smartphone yang mendukung EAS. EAS dalam bentuk kernel seperti RenderZenith dan ROM seperti VertexOS dan PureFusion. Tentu saja, Google Pixel juga dilengkapi dengan EAS. Dengan janji-janji peningkatan usia baterai dan kinerja yang lebih baik, apa masalahnya?

EAS tidak sesederhana yang tidak universal untuk setiap perangkat seperti CFS atau HMP. EAS membutuhkan pemahaman tentang prosesor yang digunakannya, berdasarkan model energi.  Model energi ini dibuat oleh tim insinyur yang terus-menerus menguji dan bekerja untuk memberikan kinerja yang optimal. Karena Snapdragon 820 dan 821 pada dasarnya sama, kernel khusus pada OnePlus 3 menggunakan model energi Google Pixel.  Perangkat dengan Snapdragon 845 dapat memanfaatkan EAS, dan OnePlus 6 sampai batas tertentu. Ini tidak setel seperti perangkat Google Pixel, tetapi menyelesaikan pekerjaan. Berikut adalah contoh bagaimana, meskipun OnePlus 6 memiliki prosesor yang lebih baik dengan EAS, Pixel 2 XL tetap mengalahkannya dengan mulus. Kedua gambar ini diambil dari ulasan OnePlus 6 kami yang berorientasi pada kecepatan .

Pengertian EAS Kernel

Jika Anda kesulitan memahami grafik, Anda dapat melihat gambar di bawah ini untuk panduan. Apa pun yang melebihi garis hijau menunjukkan bingkai jatuh dan, dalam kasus terburuk, gagap terlihat.

Eas kernel

Implementasi EAS OnePlus 6 menarik, karena sepertinya tidak sepenuhnya implementasi seperti yang Anda temukan di Google Pixel dengan SoC yang sama. Tunable scheduler juga tidak masuk akal, sehingga mungkin menjelaskan mengapa itu tidak seefisien kinerja seperti yang Anda harapkan. Ini sangat konservatif dalam konsumsi daya, dengan sistem memprioritaskan inti daya rendah untuk sebagian besar pekerjaan.

Tunables hanyalah seperangkat parameter yang diteruskan ke gubernur CPU, yang mengubah cara gubernur bereaksi terhadap situasi tertentu dalam hal frekuensi.  Penjadwal kemudian memutuskan di mana ia menempatkan tugas pada prosesor yang berbeda. Tunables OnePlus 6 diatur untuk memprioritaskan pekerjaan pada core bertenaga rendah. Ini juga tidak membantu bahwa Google Pixel 2 memiliki sejumlah besar input boost, menjaga semua 8 core online setiap saat. Google juga menggunakan penyeimbang interupsi yang membantu menghapus frame drop dan meningkatkan kinerja.

Jadi bagaimana cara kerja EAS? Mengapa begitu efisien hanya dalam kondisi tertentu?

Penjadwalan Sadar Energi memperkenalkan perlunya menggunakan model energi, dan seperti yang disebutkan di atas membutuhkan banyak pengujian dan pekerjaan untuk membuatnya sempurna. EAS berupaya menyatukan tiga bagian inti kernel yang berbeda yang semuanya bertindak secara independen, dan model energi membantu menyatukannya.
  • Penjadwal Linux (CFS, yang disebutkan di atas)
  • Linux cpuidle
  • Linux cpufreq

Menyatukan ketiga bagian di bawah penjadwal dan menghitungnya bersama-sama memberikan potensi penghematan energi, karena menghitungnya bersama-sama memungkinkan mereka menjadi seefisien mungkin. CPUIdle mencoba memutuskan kapan CPU akan masuk ke mode siaga, sedangkan CPUFreq mencoba memutuskan kapan akan menaikkan atau menurunkan CPU. Kedua modul ini memiliki tujuan utama menghemat energi. Tidak hanya itu, ia kemudian mengkategorikan proses menjadi empat kelompok, menjadi aplikasi teratas, latar belakang sistem, latar depan, dan latar belakang. Tugas-tugas yang akan diproses ditempatkan ke dalam salah satu kategori ini, dan kemudian kategori diberikan daya CPU dan pekerjaan didelegasikan ke berbagai core CPU. top-app adalah prioritas tertinggi penyelesaian, diikuti oleh latar depan, latar belakang, dan kemudian latar belakang sistem. Latar belakang secara teknis memiliki prioritas yang sama dengan latar belakang sistem, tetapi latar belakang sistem biasanya juga memiliki akses ke lebih sedikit inti.  Akibatnya, Penjadwalan Sadar Energi mengambil bagian inti dari kernel Linux dan menyatukan semuanya menjadi satu proses.

Saat membangunkan perangkat, EAS akan memilih inti dalam kondisi siaga paling dangkal, meminimalkan energi yang diperlukan untuk membangunkan perangkat.  Ini membantu mengurangi daya yang diperlukan dalam menggunakan perangkat, karena itu tidak akan membangunkan kelompok besar jika tidak perlu. Pelacakan beban juga merupakan bagian yang sangat penting dari EAS, dan ada dua opsi.  "Pelacakan Beban Per Entitas" (PELT) biasanya digunakan untuk pelacakan beban, informasi tersebut kemudian digunakan untuk memutuskan frekuensi dan cara mendelegasikan tugas di CPU. "Pelacakan Beban yang Dibantu Jendela" (WALT) juga dapat digunakan dan digunakan di Google Pixel. Banyak EAS ROM di forum kami, seperti VertexOS, memilih untuk menggunakan WALT.  Banyak ROM akan merilis dua versi kernel dengan WALT atau PELT, jadi terserah kepada pengguna untuk memutuskan. WALT lebih bursty, dengan puncak frekuensi CPU yang tinggi sementara PELT mencoba untuk tetap lebih konsisten. Load tracker tidak benar-benar mempengaruhi frekuensi CPU, itu hanya memberitahu sistem apa penggunaan CPU. Penggunaan CPU yang lebih tinggi membutuhkan frekuensi yang lebih tinggi sehingga sifat PELT yang konsisten adalah bahwa hal itu menyebabkan frekuensi CPU naik atau turun secara perlahan. PELT cenderung menyimpang ke arah pelaporan beban CPU yang lebih tinggi, sehingga dapat memberikan kinerja yang lebih tinggi dengan biaya baterai yang lebih tinggi. Namun, tidak ada yang bisa mengatakan pada saat ini sistem pelacakan beban mana yang lebih baik, karena kedua metode pelacakan beban ini terus-menerus ditambal dan disempurnakan.

Apa pun itu, jelas bahwa, terlepas dari metode pelacakan beban yang digunakan, ada peningkatan efisiensi. Daripada hanya memproses tugas pada prosesor apa pun, tugas dianalisis dan jumlah energi yang dibutuhkan untuk menjalankannya diperkirakan. Penempatan tugas yang cerdas ini berarti bahwa tugas-tugas diselesaikan dengan cara yang jauh lebih efisien sementara juga membuat sistem lebih cepat secara keseluruhan. EAS adalah tentang mendapatkan UI semulus mungkin dengan penggunaan daya minimal. Di sinilah komponen eksternal lainnya seperti schedtune ikut berperan.

Schedtune didefinisikan dalam setiap kelompok dengan dua tunable yang memastikan kontrol yang lebih baik atas tugas yang harus diselesaikan. Ini tidak hanya mengontrol penyebaran tugas ke banyak CPU, tetapi juga jika beban yang dirasakan harus digelembungkan untuk memastikan tugas yang sensitif terhadap waktu diselesaikan lebih cepat. Dengan cara ini, aplikasi dan layanan latar depan yang pengguna gunakan tidak akan melambat dan menyebabkan masalah kinerja yang tidak perlu.

Walaupun Penjadwalan Sadar Energi adalah hal besar berikutnya, dapat juga dikatakan bahwa ini sudah ada di sini dan telah berlangsung cukup lama. Dengan semakin banyak perangkat yang memenuhi arus utama dengan Penjadwalan Sadar Energi, era baru efisiensi pemrosesan seluler ada di sini.

Pro dan Kontra Round-Robin, CFS, HMP dan EAS

Kelebihan kernel EAS

Sementara keterampilan grafis saya di bawah standar, saya telah mengumpulkan gambar yang harus meringkas apa pro dan kontra dari masing-masing penjadwal ini.

Saya ingin menyampaikan terima kasih khusus kepada Kontributor Resmi XDA Mostafa Wael yang penjelasannya tentang berbagai aspek EAS sangat membantu dalam membuat artikel ini menjadi mungkin. Saya juga ingin mengucapkan terima kasih kepada XDA Recognized Developer joshuous , XDA Recognized Developer RenderBroken dan Mostafa Wael atas tulisannya di EAS . Bagi Anda yang tertarik dengan bagian-bagian terkait EAS, Linaro memiliki banyak dokumentasi tentang EAS yang dapat Anda baca.

Mungkin cukup sampai disini dulu pembahasan dari kami mengenai EAS pada Android ini.

Jan lupa untuk selalu kunjungi portal media kekinian ini untuk mendapat informasi terbaru seputar dunia modifikasi Android secara gratis! Sekian dari kami, Share jika bermanfaat..

Post a Comment for "Apa itu EAS ? Kenapa Bisa Bikin Android Makin Ngebut"