Suche…


Niedrige RAM-Konfiguration

Android unterstützt jetzt Geräte mit 512 MB RAM. Diese Dokumentation soll OEMs helfen, Android 4.4 für Geräte mit geringem Speicherplatz zu optimieren und zu konfigurieren. Einige dieser Optimierungen sind generisch genug, um sie auch auf frühere Versionen anwenden zu können.

Low Ram Device Flag aktivieren

Wir führen eine neue API mit dem Namen ActivityManager.isLowRamDevice () für Anwendungen ein, um zu bestimmen, ob bestimmte speicherintensive Funktionen deaktiviert werden sollen, die auf Geräten mit wenig Arbeitsspeicher schlecht funktionieren.

Für 512-MB-Geräte wird erwartet, dass diese API zurückgibt: "true". Sie kann durch die folgende Systemeigenschaft im Geräte-Makefile aktiviert werden.

PRODUCT_PROPERTY_OVERRIDES += ro.config.low_ram=true

Deaktivieren Sie JIT

Die systemweite Nutzung des JIT-Speichers hängt von der Anzahl der laufenden Anwendungen und dem Code-Footprint dieser Anwendungen ab. Die JIT legt eine maximale Cache-Größe für übersetzten Code fest und berührt die darin enthaltenen Seiten nach Bedarf. JIT kostet bei einem typischen laufenden System zwischen 3 und 6 Millionen.

Die großen Apps neigen dazu, den Code-Cache relativ schnell zu maximieren (standardmäßig 1M). Im Durchschnitt wird die JIT-Cache-Nutzung zwischen 100 KB und 200 KB Bytes pro App ausgeführt. Das Reduzieren der maximalen Cache-Größe kann bei der Speichernutzung etwas hilfreich sein. Wenn Sie jedoch den Wert für "zu niedrig" festlegen, wird die JIT in einen Thrash-Modus versetzt. Bei Geräten mit sehr geringem Speicher empfehlen wir, die JIT vollständig zu deaktivieren.

Dies kann durch Hinzufügen der folgenden Zeile zum Produkt-Makefile erreicht werden:

PRODUCT_PROPERTY_OVERRIDES += dalvik.vm.jit.codecachesize=0

So fügen Sie einen CPU-Governor hinzu

Der CPU-Governor selbst ist nur eine C-Datei, die sich in Kernel_source / drivers / cpufreq / befindet, zum Beispiel: cpufreq_smartass2.c. Sie sind selbst dafür verantwortlich, den Governor zu finden (in einem vorhandenen Kernel-Repo nach Ihrem Gerät suchen). Um diese Datei jedoch erfolgreich aufrufen und in Ihrem Kernel kompilieren zu können, müssen Sie folgende Änderungen vornehmen:

  1. Kopieren Sie Ihre Governor-Datei (cpufreq_govname.c) und navigieren Sie zu kernel_source / drivers / cpufreq. Fügen Sie sie nun ein.
  2. und öffnen Sie Kconfig (dies ist die Oberfläche des Konfigurationsmenü-Layouts), wenn Sie einen Kernel hinzufügen, der in Ihrer Konfiguration angezeigt werden soll. Sie können dies tun, indem Sie die Wahl des Governors hinzufügen.
config CPU_FREQ_GOV_GOVNAMEHERE
tristate "'gov_name_lowercase' cpufreq governor"
depends on CPU_FREQ
help
governor' - a custom governor!

Zum Beispiel für smartassV2.

config CPU_FREQ_GOV_SMARTASS2
 tristate "'smartassV2' cpufreq governor"
 depends on CPU_FREQ
 help
 'smartassV2' - a "smart" optimized governor! 

Neben dem Hinzufügen der Auswahl müssen Sie auch die Möglichkeit angeben, dass der Governor als Standard-Governor ausgewählt wird.

 config CPU_FREQ_DEFAULT_GOV_GOVNAMEHERE
 bool "gov_name_lowercase"
 select CPU_FREQ_GOV_GOVNAMEHERE
 help
 Use the CPUFreq governor 'govname' as default.

Zum Beispiel für smartassV2.

config CPU_FREQ_DEFAULT_GOV_SMARTASS2
 bool "smartass2"
 select CPU_FREQ_GOV_SMARTASS2
 help
 Use the CPUFreq governor 'smartassV2' as default.

- kann nicht den richtigen Ort finden, um es zu platzieren? Suchen Sie einfach nach “CPU_FREQ_GOV_CONSERVATIVE” und “CPU_FREQ_GOV_CONSERVATIVE” den Code darunter ein. Gleiches gilt für “CPU_FREQ_DEFAULT_GOV_CONSERVATIVE”

Nachdem Kconfig fertig ist, können Sie die Datei speichern und schließen.

  1. Öffnen Sie Makefile, während Sie sich noch im Ordner /drivers/cpufreq . Fügen Sie in Makefile die Zeile hinzu, die Ihrem CPU-Regler entspricht. zum Beispiel:
obj-$(CONFIG_CPU_FREQ_GOV_SMARTASS2)    += cpufreq_smartass2.o

Seien Sie sich jedoch bewusst, dass Sie nicht die native C-Datei, sondern die O-Datei aufrufen! Welches ist die kompilierte C-Datei. Speicher die Datei.

  1. kernel_source/includes/linux zu: kernel_source/includes/linux . Öffnen cpufreq.h nun cpufreq.h unten, bis cpufreq.h :
#elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND)
 extern struct cpufreq_governor cpufreq_gov_ondemand;
 #define CPUFREQ_DEFAULT_GOVERNOR    (&cpufreq_gov_ondemand)

(andere CPU-Gouverneure sind auch dort aufgeführt)

Fügen Sie nun Ihren Eintrag mit dem ausgewählten CPU-Governor hinzu, Beispiel:

#elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_SMARTASS2)
 extern struct cpufreq_governor cpufreq_gov_smartass2;
 #define CPUFREQ_DEFAULT_GOVERNOR (&cpufreq_gov_smartass2)

Speichern Sie die Datei und schließen Sie sie.

Das anfängliche CPU Governor-Setup ist nun abgeschlossen. Wenn Sie alle Schritte erfolgreich durchgeführt haben, sollten Sie in der Lage sein, Ihren Governor aus dem Menü menuconfig ( menuconfig , xconfig , gconfig , nconfig ). Nach dem Einchecken im Menü wird es in den Kernel aufgenommen.

Festschreiben, das fast genauso ist wie die obigen Anweisungen: Fügen Sie smartassV2 und lulzactive gouverneur fest

E / A-Scheduler

Sie können Ihren Kernel erweitern, indem Sie bei Bedarf neue E / A-Scheduler hinzufügen. Weltweit sind Governors und Scheduler gleich. beide bieten eine Möglichkeit, wie das System funktionieren sollte. Bei den Schedulern geht es jedoch ausschließlich um den Ein- / Ausgabedatenstrom mit Ausnahme der CPU-Einstellungen. E / A-Scheduler entscheiden, wie eine bevorstehende E / A-Aktivität geplant wird. Die Standard-Scheduler wie noop oder cfq arbeiten sehr vernünftig.

E / A-Scheduler finden Sie im Kernel_source / -Block .

  1. Kopieren Sie Ihre E / A-Scheduler-Datei (z. B. " sio-iosched.c" ) und navigieren Sie zu " kernel_source / block" . Fügen Sie die Scheduler-Datei dort ein.

  2. Öffnen Sie nun Kconfig.iosched und fügen Sie Ihre Auswahl zum Kconfig hinzu , zum Beispiel für SIO :

    config IOSCHED_SIO
      tristate "Simple I/O scheduler"
      default y
      ---help---
        The Simple I/O scheduler is an extremely simple scheduler,
        based on noop and deadline, that relies on deadlines to
        ensure fairness. The algorithm does not do any sorting but
        basic merging, trying to keep a minimum overhead. It is aimed
        mainly for aleatory access devices (eg: flash devices).
    
  3. Legen Sie dann die Standardauswahloption wie folgt fest:

    default "sio" if DEFAULT_SIO
    

    Speicher die Datei.

  4. Öffnen Sie das Makefile in kernel_source / block / und fügen Sie einfach die folgende Zeile für SIO hinzu :

    obj-$(CONFIG_IOSCHED_SIO)    += sio-iosched.o
    

    Speichern Sie die Datei und Sie sind fertig! Die I / O-Scheduler sollten jetzt im Menü config erscheinen.

Ähnliches Commit für GitHub: Simple I / O-Scheduler hinzugefügt .



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow