Android çekirdeği için temel olarak aşağıdaki yapılandırma ayarlarını kullan
yapılandırma. Ayarlar, android-base
için .cfg
dosyaları halinde düzenlendi.
android-base-ARCH
ve
android-recommended
:
android-base
seçenekleri, temel Android özelliklerini etkinleştirir ve tüm cihazlar tarafından belirtildiği şekilde yapılandırılmalıdır.android-base-ARCH
seçenekleri, temel özelliği etkinleştirir Android özelliklerine sahip ve mimari ARCH. Her mimariye karşılık gelen bir dosya yoktur seçenekleri sunar. Mimaride yoksa bu dosyanın, mimariye özgü ek çekirdek yapılandırması Android için geçerli.android-recommended
Bu seçenekler, gelişmiş Android özellikleridir ve cihazlar için isteğe bağlıdır.
Bu yapılandırma dosyaları
kernel/configs
.
depodur. Şuna karşılık gelen yapılandırma dosyaları kümesini kullanın:
çekirdeği eklemeniz gerekir.
Ayrıntılı bilgi için, web sitenizdeki çekirdeği güçlendirmek amacıyla başlatılan daha fazla bilgi için Sistem ve çekirdek güvenliği. Gerekli ayarlarla ilgili ayrıntılar için Android Uyumluluk Tanımlama Belgesi (CDD) başlıklı makaleyi inceleyin.
Çekirdek yapılandırması oluştur
Minimalist defconfig
biçimine sahip cihazlarda
Seçenekleri etkinleştirmek için çekirdek ağacında merge_config.sh
komut dosyasını etkinleştirin:
ARCH=ARCH scripts/kconfig/merge_config.sh <...>/device_defconfig <...>/android-base.cfg <...>/android-base-ARCH.cfg <...>/android-recommended.cfg
Bu işlem, yeni bir dosya kaydetmek için kullanabileceğiniz bir .config
dosyası oluşturur
defconfig
dosyası yükleyin veya Android özellikleriyle yeni bir çekirdek derleyin
etkin.
Ek çekirdek yapılandırması gereksinimleri
Bazı durumlarda, platform yöneticisi birden fazla çekirdek arasından seçim yapabilir. özellikleri geliştirmeyi öğreneceksiniz. Bu tür bağımlılıklar (yukarıda açıklanmıştır), çünkü biçimi mantıksal ifadeleri desteklemiyordur. Android 9 ve sonraki sürümlerde Uyumluluk Test Paketi (CTS) ve Tedarikçi Firma Test Paketi (VTS), karşılanıyor:
CONFIG_OF=y
veyaCONFIG_ACPI=y
- 4.4 ve 4.9 çekirdekleri
CONFIG_ANDROID_LOW_MEMORY_KILLER=y
içeriyor VEYA hemCONFIG_MEMCG=y
hem deCONFIG_MEMCG_SWAP=y
sahibi olun CONFIG_DEBUG_RODATA=y
veyaCONFIG_STRICT_KERNEL_RWX=y
CONFIG_DEBUG_SET_MODULE_RONX=y
veyaCONFIG_STRICT_MODULE_RWX=y
- Yalnızca ARM64 için:
CONFIG_ARM64_SW_TTBR0_PAN=y
veyaCONFIG_ARM64_PAN=y
Ayrıca, CONFIG_INET_UDP_DIAG
seçeneği
Android 9 ve sonraki sürümlerde 4.9 çekirdekler için y
.
USB ana makine modu seçeneklerini etkinleştir
USB ana makine modu sesi için aşağıdaki seçenekleri etkinleştirin:
CONFIG_SND_USB=y CONFIG_SND_USB_AUDIO=y # CONFIG_USB_AUDIO is for a peripheral mode (gadget) driver
USB ana makine modu MIDI için aşağıdaki seçeneği etkinleştirin:
CONFIG_SND_USB_MIDI=y
TSYNC ile Seccomp BPF
Secure Computing Berkeley Paket Filtresi (Seccomp BPF), bir çekirdek güvenliğidir bağlamı tanımlayan korumalı alanların oluşturulmasını sağlayan teknoloji sistem çağrıları yapabilir. İş parçacığı senkronizasyonu (TSYNC) özelliği, çok iş parçacıklı programlardan Seccomp BPF'nin kullanılmasını sağlar. Bu özellikleri, Seccomp yukarı akış desteği (ARM, ARM64, x86 ve x86_64).
Android canlı kilit arka plan programı
Android 10, Android Live-lock arka plan programını içerir
(llkd
), çekirdek kilitlenmelerini yakalamak ve azaltmak için tasarlanmıştır.
llkd
kullanımıyla ilgili ayrıntılar için şuraya bakın:
Android Live-Kilit arka plan programı.
ARM64'te vDSO32
Sanal dinamik paylaşılan nesne (vDSO),
doğru şekilde kullanıldığında ve yapılandırıldığında döngü maliyetlerini azaltabilir. Android
10 sürümünde, 64 bit çekirdeklerde vDSO32 desteği eklendi (Android
64 bit çekirdeklerde vDSO64'ü, 32 bit çekirdeklerde ise vDSO32'yi desteklemektedir.) Kullanım
ARM64 mimarisi üzerindeki vDSO32 (CONFIG_VDSO_COMPAT
),
Pil ömründe yüzde 0,4 artış ve diğer performans iyileştirmeleri.
Linux topluluğu,
vDSO'ları birleştirme
emin olun. Aşağıdaki seçeneği etkinleştirerek Linux çekirdeğinizde vDSO'yu ayarlayabilirsiniz.
CONFIG_COMPAT
ve
arm32 derleyici üçlüsüyle CONFIG_CROSS_COMPILE_COMPAT_VDSO
.
Android Kernel ekibi, vDSO yama serisinin eski sürümlerini geri yükledi
ayrıntılı bir şekilde inceleyeceğiz. Böylece, Pixel çekirdek derlemelerinde
(LINUX_FCC_CROSS_COMPILE_ARM32_PREBUILTS_BIN
yol,
CROSS_COMPILE_ARM32
referansı ve
CONFIG_CROSS_COMPILE_ARM32
konfigürasyonu).
Düşük RAM yapılandırması
Doğrudan yeniden hak talebi sayısını azaltmak için çekirdeği ve ActivityManager'ı ayarlayın
Bir işlem veya çekirdek, bir sayfayı ayırmaya çalıştığında doğrudan yeniden hak talebi gerçekleşir
(doğrudan veya yeni bir sayfada oluşan hata nedeniyle) belleğin tamamını
kullanılabilir tüm boş bellekten yararlanıldı. Bu işlem, çekirdeğin ayırmayı engellemesini gerektirir
bir sayfayı boşaltır. Bu da çoğu zaman bir diski boşaltmak için disk G/Ç'sinin
dosyayı destekleyen bir sayfaya gönderin veya lowmemorykiller
ürününün durdurmasını bekleyin
bahsedeceğim. Bu, kullanıcı arayüzü iş parçacığı dahil herhangi bir iş parçacığında fazladan G/Ç'ye neden olabilir.
Doğrudan yeniden hak talebinde bulunmamak için çekirdekte,
kswapd
veya arka planda hak talebinde bulunma. Bu ileti dizisinde
Böylece, gerçek bir iş parçacığı bir dahaki sefere ayrılırken hızlı bir şekilde başarılı olabilir.
Arka planda yeniden hak talebinde bulunmak için varsayılan eşik oldukça düşüktür. 2 GB'lık cihazda 2 MB, 512 MB'lık cihazda 636 KB. İlgili içeriği oluşturmak için kullanılan çekirdek arka planda geri almak için yalnızca birkaç megabayt belleği geri kazanır. Bunun anlamı şudur: ve birkaç megabayttan fazla veri ayıran herhangi bir işlem, doğrudan hak talebi.
Çekirdek ayarları için destek, Android-3.4 çekirdek dalına
yama 92189d47f66c67e5fd92eafaa287e153197a454f ("ekstra ücretsiz kbayt ekle
ayarlanabilir"). Bu yamanın bir cihazın çekirdeğine çekilmesi,
Çekirdeğe üç adet tam ekran gösterimini denemesini söylemek için ActivityManager
32 bpp'lik boş bellek arabelleği.
Bu eşikler config.xml
ile yapılandırılabilir
bahsedeceğim.
<!-- Device configuration setting the /proc/sys/vm/extra_free_kbytes tunable in the kernel (if it exists). A high value increases the amount of memory that the kernel tries to keep free, reducing allocation time and causing the lowmemorykiller to kill earlier. A low value allows more memory to be used by processes but may cause more allocations to block waiting on disk I/O or lowmemorykiller. Overrides the default value chosen by ActivityManager based on screen size. 0 prevents keeping any extra memory over what the kernel keeps by default. -1 keeps the default. --> <integer name="config_extraFreeKbytesAbsolute">-1</integer>
<!-- Device configuration adjusting the /proc/sys/vm/extra_free_kbytes tunable in the kernel (if it exists). 0 uses the default value chosen by ActivityManager. A positive value increases the amount of memory that the kernel tries to keep free, reducing allocation time and causing the lowmemorykiller to kill earlier. A negative value allows more memory to be used by processes but may cause more allocations to block waiting on disk I/O or lowmemorykiller. Directly added to the default value chosen by ActivityManager based on screen size. --> <integer name="config_extraFreeKbytesAdjust">0</integer>
LowMemoryKiller'ı ayarla
ActivityManager
,
LowMemoryKiller
çalışma setinden bekleneni karşılayacak
işlemleri her öncelikte çalıştırmak için gereken dosya destekli sayfalar (önbelleğe alınmış sayfalar)
olarak ayarlayabilirsiniz. Bir cihazın çalışma seti için yüksek gereksinimleri varsa, örneğin:
Tedarikçi kullanıcı arayüzü daha fazla bellek gerektiriyorsa veya daha fazla hizmet eklenmişse
eşikler artırılabilir.
Bir alan için çok fazla bellek ayrılırsa eşikler düşürülebilir. dosya destekli sayfalar oluşturur, böylece arka plan işlemleri çok daha önce önbelleğin çok küçük olması nedeniyle disk tıkanıklığı meydana gelir.
<!-- Device configuration setting the minfree tunable in the lowmemorykiller in the kernel. A high value causes the lowmemorykiller to fire earlier, keeping more memory in the file cache and preventing I/O thrashing, but allowing fewer processes to stay in memory. A low value keeps more processes in memory but may cause thrashing if set too low. Overrides the default value chosen by ActivityManager based on screen size and total memory for the largest lowmemorykiller bucket, and scaled proportionally to the smaller buckets. -1 keeps the default. --> <integer name="config_lowMemoryKillerMinFreeKbytesAbsolute">-1</integer>
<!-- Device configuration adjusting the minfree tunable in the lowmemorykiller in the kernel. A high value causes the lowmemorykiller to fire earlier, keeping more memory in the file cache and preventing I/O thrashing, but allowing fewer processes to stay in memory. A low value keeps more processes in memory but may cause thrashing if set too low. Directly added to the default value chosen by ActivityManager based on screen size and total memory for the largest lowmemorykiller bucket, and scaled proportionally to the smaller buckets. 0 keeps the default. --> <integer name="config_lowMemoryKillerMinFreeKbytesAdjust">0</integer>