diff --git a/device.mk b/device.mk index 5f35282..e391a44 100644 --- a/device.mk +++ b/device.mk @@ -158,10 +158,18 @@ endif PRODUCT_COPY_FILES += \ $(_FSTAB_SRC):$(TARGET_COPY_OUT_RAMDISK)/fstab.rpi4 \ $(_FSTAB_SRC):$(TARGET_COPY_OUT_VENDOR)/etc/fstab.rpi4 \ + $(DEVICE_PATH)/ramdisk/fstab.zram.25p:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.zram.25p \ + $(DEVICE_PATH)/ramdisk/fstab.zram.50p:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.zram.50p \ + $(DEVICE_PATH)/ramdisk/fstab.zram.75p:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.zram.75p \ + $(DEVICE_PATH)/ramdisk/fstab.zram.none:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.zram.none \ $(DEVICE_PATH)/ramdisk/init.rpi4.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.rpi4.rc \ $(DEVICE_PATH)/ramdisk/init.rpi4.usb.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.rpi4.usb.rc \ $(DEVICE_PATH)/ramdisk/ueventd.rpi4.rc:$(TARGET_COPY_OUT_VENDOR)/etc/ueventd.rc +# ZRAM: default 50% of RAM as compressed swap +PRODUCT_VENDOR_PROPERTIES += \ + persist.vendor.zram.size=50p + # Seccomp PRODUCT_COPY_FILES += \ $(DEVICE_PATH)/seccomp_policy/mediacodec.policy:$(TARGET_COPY_OUT_VENDOR)/etc/seccomp_policy/mediacodec.policy \ diff --git a/ramdisk/fstab.zram.25p b/ramdisk/fstab.zram.25p new file mode 100644 index 0000000..69cb1cd --- /dev/null +++ b/ramdisk/fstab.zram.25p @@ -0,0 +1,2 @@ +# +/dev/block/zram0 none swap defaults zramsize=25% diff --git a/ramdisk/fstab.zram.50p b/ramdisk/fstab.zram.50p new file mode 100644 index 0000000..fefb5b7 --- /dev/null +++ b/ramdisk/fstab.zram.50p @@ -0,0 +1,2 @@ +# +/dev/block/zram0 none swap defaults zramsize=50% diff --git a/ramdisk/fstab.zram.75p b/ramdisk/fstab.zram.75p new file mode 100644 index 0000000..e61a21d --- /dev/null +++ b/ramdisk/fstab.zram.75p @@ -0,0 +1,2 @@ +# +/dev/block/zram0 none swap defaults zramsize=75% diff --git a/ramdisk/fstab.zram.none b/ramdisk/fstab.zram.none new file mode 100644 index 0000000..cbd9d17 --- /dev/null +++ b/ramdisk/fstab.zram.none @@ -0,0 +1 @@ +# diff --git a/ramdisk/init.rpi4.rc b/ramdisk/init.rpi4.rc index 1705025..56dc7ae 100644 --- a/ramdisk/init.rpi4.rc +++ b/ramdisk/init.rpi4.rc @@ -3,8 +3,15 @@ import /vendor/etc/init/hw/init.${ro.hardware}.usb.rc on init symlink /sdcard /storage/sdcard0 + # Memory reserve tuning for RPi 4 + write /proc/sys/vm/min_free_kbytes 27386 + write /proc/sys/vm/lowmem_reserve_ratio "0 0 0" + on fs mount_all /vendor/etc/fstab.rpi4 --early on late-fs - mount_all /vendor/etc/fstab.rpi4 --late \ No newline at end of file + mount_all /vendor/etc/fstab.rpi4 --late + +on property:sys.boot_completed=1 + swapon_all /vendor/etc/fstab.zram.${persist.vendor.zram.size} \ No newline at end of file diff --git a/sepolicy/property.te b/sepolicy/property.te index db4d500..9d71f9d 100644 --- a/sepolicy/property.te +++ b/sepolicy/property.te @@ -4,3 +4,4 @@ vendor_internal_prop(vendor_hdmi_config_prop) vendor_internal_prop(vendor_hwc_config_prop) vendor_internal_prop(vendor_v4l2_config_prop) vendor_internal_prop(vendor_pawlet_ota_prop) +vendor_internal_prop(vendor_zram_config_prop) diff --git a/sepolicy/property_contexts b/sepolicy/property_contexts index c720c54..1b686f7 100644 --- a/sepolicy/property_contexts +++ b/sepolicy/property_contexts @@ -22,3 +22,6 @@ ro.vendor.pawlet.ota. u:object_r:vendor_pawlet_ota_prop:s0 # V4L2 persist.vendor.v4l2_codec2.rank.decoder u:object_r:vendor_v4l2_config_prop:s0 persist.vendor.v4l2_codec2.rank.encoder u:object_r:vendor_v4l2_config_prop:s0 + +# ZRAM +persist.vendor.zram.size u:object_r:vendor_zram_config_prop:s0 diff --git a/sepolicy/vendor_init.te b/sepolicy/vendor_init.te index ef9cb16..2088160 100644 --- a/sepolicy/vendor_init.te +++ b/sepolicy/vendor_init.te @@ -4,3 +4,4 @@ set_prop(vendor_init, vendor_hdmi_config_prop) set_prop(vendor_init, vendor_hwc_config_prop) set_prop(vendor_init, vendor_v4l2_config_prop) set_prop(vendor_init, vendor_pawlet_ota_prop) +set_prop(vendor_init, vendor_zram_config_prop)