4
4ndr0
Dauer-User
- 430
Moin,
Ich möchte hier auf diverse Parameter in der sysctl.conf eingehen. Ich habe mir daher mal erlaubt, folgenden Post frei zu übersetzen und Anmerkungen hinzuzufügen > [Tutorial] ROMs & Sysctl.conf & other tweaks!
Die sysctl.conf kann manuell oder z.B mit ROM Toolbox Pro editiert werden. Vorher bitte ein Nandroid-Backup machen. "Apply on boot" solltet ihr auch erstmal nicht aktivieren, testet lieber erstmal im laufenden Betrieb und passt die Werte ggfs. nach jedem Reboot manuell an. Die optimalen Werte sind sicherlich von Gerät zu Gerät unterschiedlich.
Was ist die sysctl.conf?
Die sysctl.conf ist eine Konfigurationsdatei für "sysctl". Dies ist ein Interface, um dynamisch Kernel-Parameter des von Android verwendeten Linux-Kernels anzupassen. Die Datei enthält die folgenden Elemente: vm.min_free_kbytes, vm.dirty_ratio, vm.dirty_backgroud_ratio, vm.vfs_cache_pressure, vm.oom_kill_allocating_task. Es gibt noch viele andere Elemente in der Datei, aber wir wollen uns hier speziell auf die genannten konzentrieren.
Die sysctl.conf findet Ihr in /etc (/system/etc).
To enable it you need your ROM to execute "sysctl -p" somewhere during the boot process (or shortly afterward). We will also be discussing how to enable it if it is not already done so. You can also run sysctl -p manually to enable it any time after the OS is started.
Nun wollen wir genauer betrachten, was die sysctl.conf macht und wie sie funktioniert.
Min Free KBytes (vm.min_free_kbytes) - Dieser Parameter wird benutzt, um die Linux VM dazu zu bringen, ein Minimum an Kilobytes freizuhalten. Die VM verwendet diesen Wert, um ein Minimum an Speicherseiten (Pages) für jede "Niedrig-Speicher-Zone" im System zu errechnen. Jede "Niedrig-Speicher-Zone" bekommt eine bestimmte Anzahl an Speicherseiten proportional zu ihrer Größe. Standard ist 2048kb.
Dirty Ratio (vm.dirty_ratio) und Dirty Background Ratio (vm.dirty_background_ratio) - Diese Werte bestimmen, wie oft der Kernel Daten auf die "Disk" schreibt. In diesem Fall beschreibt "Disk" den internen microSD System-Speicher, nicht die externe SD-Karte. Wenn eure Apps Daten auf die Disk schreiben, schreibt Linux diese Daten nicht direkt auf die Disk, sondern in den RAM und der Kernel entscheidet anhand dieser Parameter, wie oft diese Daten auf die Disk "geflusht" werden. Diese Werte sind prozentual, je höher der Prozentsatz, desto länger wartet der Kernel mit dem flushen, je niedriger, desto öfter werden Daten auf die Disk geschrieben. Wir haben es hier mit SD-Speicher, also Solid-State Speicher zu tun, nicht mit traditionellen Festplatten. Daher sind wir hier in der Lage, diese Schreibvorgänge länger zu verzögern, als es bei Festplatten Sinn machen würde. Im Gegensatz zu RAM vertragen Flash-Speicherzellen nur eine begrenzte Anzahl an Schreibvorgängen, von daher macht es Sinn, diese durch geringere Werte zu verzögern.
VFS Cache Pressure (vm.vfs_cache_pressure) - Hier wird es wirklich interessant! Der Dateisystem-Cache (dentry/inode) ist sehr viel wichtiger als der oben erwähnte Block-Cache in dirty ratio und dirty background ratio. Also möchten wir den Kernel gerne dazu bringen, viel mehr RAM für den Dateisystem-Cache zu verwenden, dies wird die System-Performance verbessern, ohne dass es die App-Performance verschlechtert. Der Standard-Wert sind 100%, und wir möchten den Kernel hier anweisen, den Dateisystem-Cache bevorzugt zu behandeln und nicht mehr so aggressiv freizugeben.
Oom Allocating Task (vm.oom_kill_allocating_task) - (kann aktiviert oder deaktiviert werden, in Linux ist dies ein Boolean-Wert, beträgt also entweder 1 (an) oder 0 (aus)) Dieser Wert kontrolliert, wie Android mit OOM (Out-of-Memory) Situationen umgeht. Standardmäßig ist dieser Wert deaktiviert. In einer OOM-Situation, also wenn das System keinen RAM mehr frei hat, um eine neue Applikation zu starten, wird der OOM-Killer die Liste der laufenden Tasks abrufen und dann anhand einer Heuristik einen Hintergrund-Task killen, das ist normalerweise ein Task, der sehr viel Speicher verbraucht, so dass durch das Killen mit einem Mal viel RAM frei wird. Wenn dieser Wert aktiviert ist, wird Android einfach den Task killen, der die OOM-Situation ausgelöst hat, also vermutlich den zuletzt gestarteten Task. Dies verhindert das Scannen der Task-Liste und den Einsatz der Heuristik. Dies kann verhindern, dass das System sich in solchen Situationen kurzzeitig aufhängt.
hier hat mal jemand mit diesen Werten experimentiert.
Anregungen, Übersetzungsfehler etc. nehme ich gerne entgegen. Hat jemand ne bessere Übersetzung für "Niedrig-Speicher-Zone" (lowmem zone) parat? Ergänzungen zur sysctl.conf füge ich natürlich auch gerne hinzu, es muss nicht bei der Übersetzung bleiben. Her mit euren Vorschlägen.
Ich möchte hier auf diverse Parameter in der sysctl.conf eingehen. Ich habe mir daher mal erlaubt, folgenden Post frei zu übersetzen und Anmerkungen hinzuzufügen > [Tutorial] ROMs & Sysctl.conf & other tweaks!
Die sysctl.conf kann manuell oder z.B mit ROM Toolbox Pro editiert werden. Vorher bitte ein Nandroid-Backup machen. "Apply on boot" solltet ihr auch erstmal nicht aktivieren, testet lieber erstmal im laufenden Betrieb und passt die Werte ggfs. nach jedem Reboot manuell an. Die optimalen Werte sind sicherlich von Gerät zu Gerät unterschiedlich.
Was ist die sysctl.conf?
Die sysctl.conf ist eine Konfigurationsdatei für "sysctl". Dies ist ein Interface, um dynamisch Kernel-Parameter des von Android verwendeten Linux-Kernels anzupassen. Die Datei enthält die folgenden Elemente: vm.min_free_kbytes, vm.dirty_ratio, vm.dirty_backgroud_ratio, vm.vfs_cache_pressure, vm.oom_kill_allocating_task. Es gibt noch viele andere Elemente in der Datei, aber wir wollen uns hier speziell auf die genannten konzentrieren.
Die sysctl.conf findet Ihr in /etc (/system/etc).
To enable it you need your ROM to execute "sysctl -p" somewhere during the boot process (or shortly afterward). We will also be discussing how to enable it if it is not already done so. You can also run sysctl -p manually to enable it any time after the OS is started.
Nun wollen wir genauer betrachten, was die sysctl.conf macht und wie sie funktioniert.
Min Free KBytes (vm.min_free_kbytes) - Dieser Parameter wird benutzt, um die Linux VM dazu zu bringen, ein Minimum an Kilobytes freizuhalten. Die VM verwendet diesen Wert, um ein Minimum an Speicherseiten (Pages) für jede "Niedrig-Speicher-Zone" im System zu errechnen. Jede "Niedrig-Speicher-Zone" bekommt eine bestimmte Anzahl an Speicherseiten proportional zu ihrer Größe. Standard ist 2048kb.
Dirty Ratio (vm.dirty_ratio) und Dirty Background Ratio (vm.dirty_background_ratio) - Diese Werte bestimmen, wie oft der Kernel Daten auf die "Disk" schreibt. In diesem Fall beschreibt "Disk" den internen microSD System-Speicher, nicht die externe SD-Karte. Wenn eure Apps Daten auf die Disk schreiben, schreibt Linux diese Daten nicht direkt auf die Disk, sondern in den RAM und der Kernel entscheidet anhand dieser Parameter, wie oft diese Daten auf die Disk "geflusht" werden. Diese Werte sind prozentual, je höher der Prozentsatz, desto länger wartet der Kernel mit dem flushen, je niedriger, desto öfter werden Daten auf die Disk geschrieben. Wir haben es hier mit SD-Speicher, also Solid-State Speicher zu tun, nicht mit traditionellen Festplatten. Daher sind wir hier in der Lage, diese Schreibvorgänge länger zu verzögern, als es bei Festplatten Sinn machen würde. Im Gegensatz zu RAM vertragen Flash-Speicherzellen nur eine begrenzte Anzahl an Schreibvorgängen, von daher macht es Sinn, diese durch geringere Werte zu verzögern.
VFS Cache Pressure (vm.vfs_cache_pressure) - Hier wird es wirklich interessant! Der Dateisystem-Cache (dentry/inode) ist sehr viel wichtiger als der oben erwähnte Block-Cache in dirty ratio und dirty background ratio. Also möchten wir den Kernel gerne dazu bringen, viel mehr RAM für den Dateisystem-Cache zu verwenden, dies wird die System-Performance verbessern, ohne dass es die App-Performance verschlechtert. Der Standard-Wert sind 100%, und wir möchten den Kernel hier anweisen, den Dateisystem-Cache bevorzugt zu behandeln und nicht mehr so aggressiv freizugeben.
Oom Allocating Task (vm.oom_kill_allocating_task) - (kann aktiviert oder deaktiviert werden, in Linux ist dies ein Boolean-Wert, beträgt also entweder 1 (an) oder 0 (aus)) Dieser Wert kontrolliert, wie Android mit OOM (Out-of-Memory) Situationen umgeht. Standardmäßig ist dieser Wert deaktiviert. In einer OOM-Situation, also wenn das System keinen RAM mehr frei hat, um eine neue Applikation zu starten, wird der OOM-Killer die Liste der laufenden Tasks abrufen und dann anhand einer Heuristik einen Hintergrund-Task killen, das ist normalerweise ein Task, der sehr viel Speicher verbraucht, so dass durch das Killen mit einem Mal viel RAM frei wird. Wenn dieser Wert aktiviert ist, wird Android einfach den Task killen, der die OOM-Situation ausgelöst hat, also vermutlich den zuletzt gestarteten Task. Dies verhindert das Scannen der Task-Liste und den Einsatz der Heuristik. Dies kann verhindern, dass das System sich in solchen Situationen kurzzeitig aufhängt.
hier hat mal jemand mit diesen Werten experimentiert.
Anregungen, Übersetzungsfehler etc. nehme ich gerne entgegen. Hat jemand ne bessere Übersetzung für "Niedrig-Speicher-Zone" (lowmem zone) parat? Ergänzungen zur sysctl.conf füge ich natürlich auch gerne hinzu, es muss nicht bei der Übersetzung bleiben. Her mit euren Vorschlägen.
Zuletzt bearbeitet: