diff --git a/projects/ROCKNIX/devices/H700/linux/linux.aarch64.conf b/projects/ROCKNIX/devices/H700/linux/linux.aarch64.conf index b36e2847d1..1c40d56d28 100644 --- a/projects/ROCKNIX/devices/H700/linux/linux.aarch64.conf +++ b/projects/ROCKNIX/devices/H700/linux/linux.aarch64.conf @@ -136,7 +136,8 @@ CONFIG_TASKSTATS=y # CONFIG_TASK_DELAY_ACCT is not set CONFIG_TASK_XACCT=y CONFIG_TASK_IO_ACCOUNTING=y -# CONFIG_PSI is not set +CONFIG_PSI=y +# CONFIG_PSI_DEFAULT_DISABLED is not set # end of CPU/Task time and stats accounting CONFIG_CPU_ISOLATION=y @@ -944,6 +945,18 @@ CONFIG_COREDUMP=y # CONFIG_SWAP=y # CONFIG_ZSWAP is not set +CONFIG_ZSMALLOC=m + +# +# Zsmalloc allocator options +# + +# +# Zsmalloc is a common backend allocator for zswap & zram +# +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_ZSMALLOC_CHAIN_SIZE=8 +# end of Zsmalloc allocator options # # Slab allocator options @@ -1003,8 +1016,8 @@ CONFIG_ARCH_WANTS_THP_SWAP=y # CONFIG_PERSISTENT_HUGE_ZERO_FOLIO is not set CONFIG_MM_ID=y CONFIG_TRANSPARENT_HUGEPAGE=y -CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y -# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set +# CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS is not set +CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y # CONFIG_TRANSPARENT_HUGEPAGE_NEVER is not set CONFIG_THP_SWAP=y # CONFIG_READ_ONLY_THP_FOR_FS is not set @@ -2086,7 +2099,23 @@ CONFIG_BLK_DEV=y # CONFIG_BLK_DEV_NULL_BLK is not set CONFIG_CDROM=y # CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set -# CONFIG_ZRAM is not set +CONFIG_ZRAM=m +CONFIG_ZRAM_BACKEND_LZ4=y +CONFIG_ZRAM_BACKEND_LZ4HC=y +CONFIG_ZRAM_BACKEND_ZSTD=y +# CONFIG_ZRAM_BACKEND_DEFLATE is not set +# CONFIG_ZRAM_BACKEND_842 is not set +CONFIG_ZRAM_BACKEND_LZO=y +CONFIG_ZRAM_DEF_COMP_LZORLE=y +# CONFIG_ZRAM_DEF_COMP_LZO is not set +# CONFIG_ZRAM_DEF_COMP_LZ4 is not set +# CONFIG_ZRAM_DEF_COMP_LZ4HC is not set +# CONFIG_ZRAM_DEF_COMP_ZSTD is not set +CONFIG_ZRAM_DEF_COMP="lzo-rle" +CONFIG_ZRAM_WRITEBACK=y +# CONFIG_ZRAM_TRACK_ENTRY_ACTIME is not set +# CONFIG_ZRAM_MEMORY_TRACKING is not set +CONFIG_ZRAM_MULTI_COMP=y CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 # CONFIG_BLK_DEV_DRBD is not set diff --git a/projects/ROCKNIX/devices/H700/options b/projects/ROCKNIX/devices/H700/options index 656b7152d2..7c36a16766 100644 --- a/projects/ROCKNIX/devices/H700/options +++ b/projects/ROCKNIX/devices/H700/options @@ -73,3 +73,12 @@ # Debug tty path DEBUG_TTY="/dev/ttyS0" + + # ZRAM Algorithm + ZRAM_COMPRESSION_ALGO="lzo-rle" + + # ZRAM Size + ZRAM_SWAP_SIZE="0" + + # Disk Swap + SWAP_FILE_SIZE="0" diff --git a/projects/ROCKNIX/devices/RK3326/linux/linux.aarch64.conf b/projects/ROCKNIX/devices/RK3326/linux/linux.aarch64.conf index c3416f1e46..607c05a7a0 100644 --- a/projects/ROCKNIX/devices/RK3326/linux/linux.aarch64.conf +++ b/projects/ROCKNIX/devices/RK3326/linux/linux.aarch64.conf @@ -184,7 +184,7 @@ CONFIG_FAIR_GROUP_SCHED=y CONFIG_SCHED_MM_CID=y CONFIG_CGROUP_PIDS=y # CONFIG_CGROUP_RDMA is not set -# CONFIG_CGROUP_FREEZER is not set +CONFIG_CGROUP_FREEZER=y CONFIG_CGROUP_HUGETLB=y CONFIG_CPUSETS=y # CONFIG_CPUSETS_V1 is not set @@ -907,6 +907,9 @@ CONFIG_COREDUMP=y # CONFIG_SWAP=y # CONFIG_ZSWAP is not set +CONFIG_ZSMALLOC=m +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_ZSMALLOC_CHAIN_SIZE=8 # # Slab allocator options @@ -955,8 +958,8 @@ CONFIG_MEMORY_FAILURE=y # CONFIG_HWPOISON_INJECT is not set CONFIG_ARCH_WANTS_THP_SWAP=y CONFIG_TRANSPARENT_HUGEPAGE=y -CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y -# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set +# CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS is not set +CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y # CONFIG_TRANSPARENT_HUGEPAGE_NEVER is not set CONFIG_THP_SWAP=y # CONFIG_READ_ONLY_THP_FOR_FS is not set @@ -1790,7 +1793,23 @@ CONFIG_OF_OVERLAY=y # CONFIG_PARPORT is not set CONFIG_BLK_DEV=y # CONFIG_BLK_DEV_NULL_BLK is not set -# CONFIG_ZRAM is not set +CONFIG_ZRAM=m +CONFIG_ZRAM_BACKEND_LZ4=y +CONFIG_ZRAM_BACKEND_LZ4HC=y +CONFIG_ZRAM_BACKEND_ZSTD=y +# CONFIG_ZRAM_BACKEND_DEFLATE is not set +# CONFIG_ZRAM_BACKEND_842 is not set +CONFIG_ZRAM_BACKEND_LZO=y +CONFIG_ZRAM_DEF_COMP_LZORLE=y +# CONFIG_ZRAM_DEF_COMP_LZO is not set +# CONFIG_ZRAM_DEF_COMP_LZ4 is not set +# CONFIG_ZRAM_DEF_COMP_LZ4HC is not set +# CONFIG_ZRAM_DEF_COMP_ZSTD is not set +CONFIG_ZRAM_DEF_COMP="lzo-rle" +CONFIG_ZRAM_WRITEBACK=y +# CONFIG_ZRAM_TRACK_ENTRY_ACTIME is not set +# CONFIG_ZRAM_MEMORY_TRACKING is not set +CONFIG_ZRAM_MULTI_COMP=y CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 # CONFIG_BLK_DEV_DRBD is not set @@ -6412,7 +6431,7 @@ CONFIG_CRYPTO_LZO=y # CONFIG_CRYPTO_842 is not set # CONFIG_CRYPTO_LZ4 is not set # CONFIG_CRYPTO_LZ4HC is not set -# CONFIG_CRYPTO_ZSTD is not set +CONFIG_CRYPTO_ZSTD=y # end of Compression # @@ -6574,6 +6593,8 @@ CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=y CONFIG_LZO_COMPRESS=y CONFIG_LZO_DECOMPRESS=y +CONFIG_LZ4_COMPRESS=m +CONFIG_LZ4HC_COMPRESS=m CONFIG_LZ4_DECOMPRESS=y CONFIG_ZSTD_COMMON=y CONFIG_ZSTD_COMPRESS=y diff --git a/projects/ROCKNIX/devices/RK3326/options b/projects/ROCKNIX/devices/RK3326/options index 3a3856d861..700ebf3b50 100644 --- a/projects/ROCKNIX/devices/RK3326/options +++ b/projects/ROCKNIX/devices/RK3326/options @@ -71,3 +71,12 @@ # Debug tty path DEBUG_TTY="/dev/ttyS2" + + # ZRAM Algorithm + ZRAM_COMPRESSION_ALGO="lzo-rle" + + # ZRAM Size + ZRAM_SWAP_SIZE="0" + + # Disk Swap + SWAP_FILE_SIZE="0" diff --git a/projects/ROCKNIX/devices/RK3399/linux/linux.aarch64.conf b/projects/ROCKNIX/devices/RK3399/linux/linux.aarch64.conf index c0f9f6b918..fa9fd30237 100644 --- a/projects/ROCKNIX/devices/RK3399/linux/linux.aarch64.conf +++ b/projects/ROCKNIX/devices/RK3399/linux/linux.aarch64.conf @@ -190,7 +190,7 @@ CONFIG_SCHED_MM_CID=y CONFIG_CGROUP_PIDS=y # CONFIG_CGROUP_RDMA is not set # CONFIG_CGROUP_DMEM is not set -# CONFIG_CGROUP_FREEZER is not set +CONFIG_CGROUP_FREEZER=y CONFIG_CPUSETS=y # CONFIG_CPUSETS_V1 is not set CONFIG_CGROUP_DEVICE=y @@ -915,6 +915,18 @@ CONFIG_COREDUMP=y # CONFIG_SWAP=y # CONFIG_ZSWAP is not set +CONFIG_ZSMALLOC=m + +# +# Zsmalloc allocator options +# + +# +# Zsmalloc is a common backend allocator for zswap & zram +# +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_ZSMALLOC_CHAIN_SIZE=8 +# end of Zsmalloc allocator options # # Slab allocator options @@ -953,7 +965,7 @@ CONFIG_MIGRATION=y CONFIG_CONTIG_ALLOC=y CONFIG_PCP_BATCH_SCALE_MAX=5 CONFIG_PHYS_ADDR_T_64BIT=y -# CONFIG_KSM is not set +CONFIG_KSM=y CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y # CONFIG_MEMORY_FAILURE is not set @@ -1634,7 +1646,23 @@ CONFIG_OF_OVERLAY=y # CONFIG_PARPORT is not set CONFIG_BLK_DEV=y # CONFIG_BLK_DEV_NULL_BLK is not set -# CONFIG_ZRAM is not set +CONFIG_ZRAM=m +CONFIG_ZRAM_BACKEND_LZ4=y +CONFIG_ZRAM_BACKEND_LZ4HC=y +CONFIG_ZRAM_BACKEND_ZSTD=y +# CONFIG_ZRAM_BACKEND_DEFLATE is not set +# CONFIG_ZRAM_BACKEND_842 is not set +CONFIG_ZRAM_BACKEND_LZO=y +CONFIG_ZRAM_DEF_COMP_LZORLE=y +# CONFIG_ZRAM_DEF_COMP_LZO is not set +# CONFIG_ZRAM_DEF_COMP_LZ4 is not set +# CONFIG_ZRAM_DEF_COMP_LZ4HC is not set +# CONFIG_ZRAM_DEF_COMP_ZSTD is not set +CONFIG_ZRAM_DEF_COMP="lzo-rle" +CONFIG_ZRAM_WRITEBACK=y +# CONFIG_ZRAM_TRACK_ENTRY_ACTIME is not set +# CONFIG_ZRAM_MEMORY_TRACKING is not set +CONFIG_ZRAM_MULTI_COMP=y CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 # CONFIG_BLK_DEV_DRBD is not set @@ -6385,7 +6413,7 @@ CONFIG_CRYPTO_LZO=y # CONFIG_CRYPTO_842 is not set CONFIG_CRYPTO_LZ4=y # CONFIG_CRYPTO_LZ4HC is not set -# CONFIG_CRYPTO_ZSTD is not set +CONFIG_CRYPTO_ZSTD=y # end of Compression # @@ -6529,6 +6557,7 @@ CONFIG_ZLIB_DEFLATE=y CONFIG_LZO_COMPRESS=y CONFIG_LZO_DECOMPRESS=y CONFIG_LZ4_COMPRESS=y +CONFIG_LZ4HC_COMPRESS=m CONFIG_LZ4_DECOMPRESS=y CONFIG_ZSTD_COMMON=y CONFIG_ZSTD_COMPRESS=y diff --git a/projects/ROCKNIX/devices/RK3399/options b/projects/ROCKNIX/devices/RK3399/options index e4167d494b..60545bb7bc 100644 --- a/projects/ROCKNIX/devices/RK3399/options +++ b/projects/ROCKNIX/devices/RK3399/options @@ -74,3 +74,12 @@ # Debug tty path DEBUG_TTY="/dev/ttyS2" + + # ZRAM Algorithm + ZRAM_COMPRESSION_ALGO="zstd" + + # ZRAM Size + ZRAM_SWAP_SIZE="Auto" + + # Disk Swap + SWAP_FILE_SIZE="0" diff --git a/projects/ROCKNIX/devices/RK3566/linux/linux.aarch64.conf b/projects/ROCKNIX/devices/RK3566/linux/linux.aarch64.conf index b8869a6b3c..fdf184f2fc 100644 --- a/projects/ROCKNIX/devices/RK3566/linux/linux.aarch64.conf +++ b/projects/ROCKNIX/devices/RK3566/linux/linux.aarch64.conf @@ -892,7 +892,7 @@ CONFIG_COREDUMP=y # CONFIG_SWAP=y # CONFIG_ZSWAP is not set -CONFIG_ZSMALLOC=y +CONFIG_ZSMALLOC=m # # Zsmalloc allocator options @@ -940,7 +940,7 @@ CONFIG_SPLIT_PMD_PTLOCKS=y CONFIG_MIGRATION=y CONFIG_PCP_BATCH_SCALE_MAX=5 CONFIG_PHYS_ADDR_T_64BIT=y -# CONFIG_KSM is not set +CONFIG_KSM=y CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y # CONFIG_MEMORY_FAILURE is not set @@ -1876,21 +1876,23 @@ CONFIG_OF_OVERLAY=y CONFIG_BLK_DEV=y # CONFIG_BLK_DEV_NULL_BLK is not set CONFIG_CDROM=y -CONFIG_ZRAM=y -# CONFIG_ZRAM_BACKEND_LZ4 is not set -# CONFIG_ZRAM_BACKEND_LZ4HC is not set -# CONFIG_ZRAM_BACKEND_ZSTD is not set +CONFIG_ZRAM=m +CONFIG_ZRAM_BACKEND_LZ4=y +CONFIG_ZRAM_BACKEND_LZ4HC=y +CONFIG_ZRAM_BACKEND_ZSTD=y # CONFIG_ZRAM_BACKEND_DEFLATE is not set # CONFIG_ZRAM_BACKEND_842 is not set -CONFIG_ZRAM_BACKEND_FORCE_LZO=y CONFIG_ZRAM_BACKEND_LZO=y CONFIG_ZRAM_DEF_COMP_LZORLE=y # CONFIG_ZRAM_DEF_COMP_LZO is not set +# CONFIG_ZRAM_DEF_COMP_LZ4 is not set +# CONFIG_ZRAM_DEF_COMP_LZ4HC is not set +# CONFIG_ZRAM_DEF_COMP_ZSTD is not set CONFIG_ZRAM_DEF_COMP="lzo-rle" -# CONFIG_ZRAM_WRITEBACK is not set +CONFIG_ZRAM_WRITEBACK=y # CONFIG_ZRAM_TRACK_ENTRY_ACTIME is not set # CONFIG_ZRAM_MEMORY_TRACKING is not set -# CONFIG_ZRAM_MULTI_COMP is not set +CONFIG_ZRAM_MULTI_COMP=y CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 # CONFIG_BLK_DEV_DRBD is not set diff --git a/projects/ROCKNIX/devices/RK3566/options b/projects/ROCKNIX/devices/RK3566/options index 5bde53d29c..7470feddd9 100644 --- a/projects/ROCKNIX/devices/RK3566/options +++ b/projects/ROCKNIX/devices/RK3566/options @@ -77,3 +77,12 @@ # Build and install rocknix out-of-tree device trees and overlays (yes / no) ROCKNIX_DEVICE_TREE_OVERLAYS="yes" + + # ZRAM Algorithm + ZRAM_COMPRESSION_ALGO="lzo-rle" + + # ZRAM Size + ZRAM_SWAP_SIZE="0" + + # Disk Swap + SWAP_FILE_SIZE="0" diff --git a/projects/ROCKNIX/devices/RK3588/linux/linux.aarch64.conf b/projects/ROCKNIX/devices/RK3588/linux/linux.aarch64.conf index ba1228e740..04e6a4fdc2 100644 --- a/projects/ROCKNIX/devices/RK3588/linux/linux.aarch64.conf +++ b/projects/ROCKNIX/devices/RK3588/linux/linux.aarch64.conf @@ -870,7 +870,7 @@ CONFIG_COREDUMP=y # CONFIG_SWAP=y # CONFIG_ZSWAP is not set -CONFIG_ZSMALLOC=y +CONFIG_ZSMALLOC=m # CONFIG_ZSMALLOC_STAT is not set # @@ -909,7 +909,7 @@ CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y CONFIG_CONTIG_ALLOC=y CONFIG_PHYS_ADDR_T_64BIT=y CONFIG_MMU_NOTIFIER=y -# CONFIG_KSM is not set +CONFIG_KSM=y CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y # CONFIG_MEMORY_FAILURE is not set @@ -2143,12 +2143,12 @@ CONFIG_BLK_DEV=y # CONFIG_BLK_DEV_NULL_BLK is not set CONFIG_CDROM=y # CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set -CONFIG_ZRAM=y +CONFIG_ZRAM=m CONFIG_ZRAM_DEF_COMP_LZORLE=y # CONFIG_ZRAM_DEF_COMP_ZSTD is not set # CONFIG_ZRAM_DEF_COMP_LZO is not set CONFIG_ZRAM_DEF_COMP="lzo-rle" -# CONFIG_ZRAM_WRITEBACK is not set +CONFIG_ZRAM_WRITEBACK=y # CONFIG_ZRAM_MEMORY_TRACKING is not set CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 @@ -8300,7 +8300,7 @@ CONFIG_CRYPTO_LZO=y # CONFIG_CRYPTO_842 is not set # CONFIG_CRYPTO_LZ4 is not set # CONFIG_CRYPTO_LZ4HC is not set -CONFIG_CRYPTO_ZSTD=m +CONFIG_CRYPTO_ZSTD=y # end of Compression # diff --git a/projects/ROCKNIX/devices/RK3588/options b/projects/ROCKNIX/devices/RK3588/options index 7ce0bc83e3..106d5ab530 100644 --- a/projects/ROCKNIX/devices/RK3588/options +++ b/projects/ROCKNIX/devices/RK3588/options @@ -82,3 +82,12 @@ # Build and install rocknix out-of-tree device trees and overlays (yes / no) ROCKNIX_DEVICE_TREE_OVERLAYS="yes" + + # ZRAM Algorithm + ZRAM_COMPRESSION_ALGO="zstd" + + # ZRAM Size + ZRAM_SWAP_SIZE="Auto" + + # Disk Swap + SWAP_FILE_SIZE="0" diff --git a/projects/ROCKNIX/devices/S922X/linux/linux.aarch64.conf b/projects/ROCKNIX/devices/S922X/linux/linux.aarch64.conf index 19f31b88a8..cbb198c1de 100644 --- a/projects/ROCKNIX/devices/S922X/linux/linux.aarch64.conf +++ b/projects/ROCKNIX/devices/S922X/linux/linux.aarch64.conf @@ -899,6 +899,18 @@ CONFIG_COREDUMP=y # CONFIG_SWAP=y # CONFIG_ZSWAP is not set +CONFIG_ZSMALLOC=m + +# +# Zsmalloc allocator options +# + +# +# Zsmalloc is a common backend allocator for zswap & zram +# +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_ZSMALLOC_CHAIN_SIZE=8 +# end of Zsmalloc allocator options # # Slab allocator options @@ -939,7 +951,7 @@ CONFIG_ARCH_ENABLE_THP_MIGRATION=y CONFIG_CONTIG_ALLOC=y CONFIG_PCP_BATCH_SCALE_MAX=5 CONFIG_PHYS_ADDR_T_64BIT=y -# CONFIG_KSM is not set +CONFIG_KSM=y CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y CONFIG_MEMORY_FAILURE=y @@ -948,8 +960,8 @@ CONFIG_ARCH_WANTS_THP_SWAP=y # CONFIG_PERSISTENT_HUGE_ZERO_FOLIO is not set CONFIG_MM_ID=y CONFIG_TRANSPARENT_HUGEPAGE=y -CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y -# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set +# CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS is not set +CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y # CONFIG_TRANSPARENT_HUGEPAGE_NEVER is not set CONFIG_THP_SWAP=y # CONFIG_READ_ONLY_THP_FOR_FS is not set @@ -1739,7 +1751,23 @@ CONFIG_OF_OVERLAY=y # CONFIG_PARPORT is not set CONFIG_BLK_DEV=y # CONFIG_BLK_DEV_NULL_BLK is not set -# CONFIG_ZRAM is not set +CONFIG_ZRAM=m +CONFIG_ZRAM_BACKEND_LZ4=y +CONFIG_ZRAM_BACKEND_LZ4HC=y +CONFIG_ZRAM_BACKEND_ZSTD=y +# CONFIG_ZRAM_BACKEND_DEFLATE is not set +# CONFIG_ZRAM_BACKEND_842 is not set +CONFIG_ZRAM_BACKEND_LZO=y +CONFIG_ZRAM_DEF_COMP_LZORLE=y +# CONFIG_ZRAM_DEF_COMP_LZO is not set +# CONFIG_ZRAM_DEF_COMP_LZ4 is not set +# CONFIG_ZRAM_DEF_COMP_LZ4HC is not set +# CONFIG_ZRAM_DEF_COMP_ZSTD is not set +CONFIG_ZRAM_DEF_COMP="lzo-rle" +CONFIG_ZRAM_WRITEBACK=y +# CONFIG_ZRAM_TRACK_ENTRY_ACTIME is not set +# CONFIG_ZRAM_MEMORY_TRACKING is not set +CONFIG_ZRAM_MULTI_COMP=y CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_LOOP_MIN_COUNT=0 # CONFIG_BLK_DEV_DRBD is not set @@ -6450,7 +6478,7 @@ CONFIG_CRYPTO_LZO=y # CONFIG_CRYPTO_842 is not set # CONFIG_CRYPTO_LZ4 is not set # CONFIG_CRYPTO_LZ4HC is not set -# CONFIG_CRYPTO_ZSTD is not set +CONFIG_CRYPTO_ZSTD=y # end of Compression # @@ -6598,6 +6626,8 @@ CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=y CONFIG_LZO_COMPRESS=y CONFIG_LZO_DECOMPRESS=y +CONFIG_LZ4_COMPRESS=m +CONFIG_LZ4HC_COMPRESS=m CONFIG_LZ4_DECOMPRESS=y CONFIG_ZSTD_COMMON=y CONFIG_ZSTD_COMPRESS=y diff --git a/projects/ROCKNIX/devices/S922X/options b/projects/ROCKNIX/devices/S922X/options index fc778cc175..0ae87ca346 100644 --- a/projects/ROCKNIX/devices/S922X/options +++ b/projects/ROCKNIX/devices/S922X/options @@ -80,8 +80,11 @@ # Build and install rocknix out-of-tree device trees and overlays (yes / no) ROCKNIX_DEVICE_TREE_OVERLAYS="yes" - # Swap size if SWAP_SUPPORT=yes in MB - SWAPSIZE="512" + # ZRAM Algorithm + ZRAM_COMPRESSION_ALGO="zstd" - # Swap type if SWAP_SUPPORT=yes (file / zram) - SWAP_TYPE="zram" + # ZRAM Size + ZRAM_SWAP_SIZE="Auto" + + # Disk Swap + SWAP_FILE_SIZE="0" diff --git a/projects/ROCKNIX/devices/SDM845/linux/linux.aarch64.conf b/projects/ROCKNIX/devices/SDM845/linux/linux.aarch64.conf index 2e23ead750..2344f03862 100644 --- a/projects/ROCKNIX/devices/SDM845/linux/linux.aarch64.conf +++ b/projects/ROCKNIX/devices/SDM845/linux/linux.aarch64.conf @@ -124,7 +124,8 @@ CONFIG_TASKSTATS=y # CONFIG_TASK_DELAY_ACCT is not set CONFIG_TASK_XACCT=y CONFIG_TASK_IO_ACCOUNTING=y -# CONFIG_PSI is not set +CONFIG_PSI=y +# CONFIG_PSI_DEFAULT_DISABLED is not set # end of CPU/Task time and stats accounting CONFIG_CPU_ISOLATION=y @@ -178,7 +179,7 @@ CONFIG_FAIR_GROUP_SCHED=y # CONFIG_RT_GROUP_SCHED is not set CONFIG_CGROUP_PIDS=y # CONFIG_CGROUP_RDMA is not set -# CONFIG_CGROUP_FREEZER is not set +CONFIG_CGROUP_FREEZER=y CONFIG_CGROUP_HUGETLB=y CONFIG_CPUSETS=y CONFIG_PROC_PID_CPUSET=y @@ -852,6 +853,7 @@ CONFIG_ARCH_USE_QUEUED_RWLOCKS=y CONFIG_QUEUED_RWLOCKS=y CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE=y CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y +CONFIG_FREEZER=y # # Executable file formats @@ -901,8 +903,8 @@ CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y CONFIG_MEMORY_FAILURE=y # CONFIG_HWPOISON_INJECT is not set CONFIG_TRANSPARENT_HUGEPAGE=y -CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y -# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set +# CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS is not set +CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y CONFIG_USE_PERCPU_NUMA_NODE_ID=y @@ -914,7 +916,8 @@ CONFIG_CMA=y CONFIG_CMA_AREAS=19 # CONFIG_ZSWAP is not set # CONFIG_ZPOOL is not set -# CONFIG_ZSMALLOC is not set +CONFIG_ZSMALLOC=m +# CONFIG_ZSMALLOC_STAT is not set CONFIG_GENERIC_EARLY_IOREMAP=y # CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set # CONFIG_IDLE_PAGE_TRACKING is not set @@ -2085,6 +2088,13 @@ CONFIG_PNPACPI=y CONFIG_BLK_DEV=y # CONFIG_BLK_DEV_NULL_BLK is not set # CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set +CONFIG_ZRAM=m +CONFIG_ZRAM_DEF_COMP_LZORLE=y +# CONFIG_ZRAM_DEF_COMP_ZSTD is not set +# CONFIG_ZRAM_DEF_COMP_LZO is not set +CONFIG_ZRAM_DEF_COMP="lzo-rle" +CONFIG_ZRAM_WRITEBACK=y +# CONFIG_ZRAM_MEMORY_TRACKING is not set CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 # CONFIG_BLK_DEV_DRBD is not set @@ -8727,11 +8737,11 @@ CONFIG_CRYPTO_SM4=m # Compression # CONFIG_CRYPTO_DEFLATE=y -# CONFIG_CRYPTO_LZO is not set +CONFIG_CRYPTO_LZO=y # CONFIG_CRYPTO_842 is not set # CONFIG_CRYPTO_LZ4 is not set # CONFIG_CRYPTO_LZ4HC is not set -# CONFIG_CRYPTO_ZSTD is not set +CONFIG_CRYPTO_ZSTD=y # # Random Number Generation diff --git a/projects/ROCKNIX/devices/SDM845/options b/projects/ROCKNIX/devices/SDM845/options index f2efc82fa8..7eda6b4cc8 100755 --- a/projects/ROCKNIX/devices/SDM845/options +++ b/projects/ROCKNIX/devices/SDM845/options @@ -75,3 +75,12 @@ # Build and install ROCKNIX joypad driver (yes / no) ROCKNIX_JOYPAD="no" + + # ZRAM Algorithm + ZRAM_COMPRESSION_ALGO="zstd" + + # ZRAM Size + ZRAM_SWAP_SIZE="Auto" + + # Disk Swap + SWAP_FILE_SIZE="0" diff --git a/projects/ROCKNIX/devices/SM8250/linux/linux.aarch64.conf b/projects/ROCKNIX/devices/SM8250/linux/linux.aarch64.conf index b548fc0894..562bacad0f 100644 --- a/projects/ROCKNIX/devices/SM8250/linux/linux.aarch64.conf +++ b/projects/ROCKNIX/devices/SM8250/linux/linux.aarch64.conf @@ -140,7 +140,8 @@ CONFIG_TASKSTATS=y # CONFIG_TASK_DELAY_ACCT is not set CONFIG_TASK_XACCT=y CONFIG_TASK_IO_ACCOUNTING=y -# CONFIG_PSI is not set +CONFIG_PSI=y +# CONFIG_PSI_DEFAULT_DISABLED is not set # end of CPU/Task time and stats accounting CONFIG_CPU_ISOLATION=y @@ -989,6 +990,18 @@ CONFIG_COREDUMP=y # CONFIG_SWAP=y # CONFIG_ZSWAP is not set +CONFIG_ZSMALLOC=m + +# +# Zsmalloc allocator options +# + +# +# Zsmalloc is a common backend allocator for zswap & zram +# +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_ZSMALLOC_CHAIN_SIZE=8 +# end of Zsmalloc allocator options # # Slab allocator options @@ -1048,8 +1061,8 @@ CONFIG_ARCH_WANTS_THP_SWAP=y # CONFIG_PERSISTENT_HUGE_ZERO_FOLIO is not set CONFIG_MM_ID=y CONFIG_TRANSPARENT_HUGEPAGE=y -CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y -# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set +# CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS is not set +CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y # CONFIG_TRANSPARENT_HUGEPAGE_NEVER is not set CONFIG_TRANSPARENT_HUGEPAGE_SHMEM_HUGE_NEVER=y # CONFIG_TRANSPARENT_HUGEPAGE_SHMEM_HUGE_ALWAYS is not set @@ -2157,7 +2170,23 @@ CONFIG_PNPACPI=y CONFIG_BLK_DEV=y # CONFIG_BLK_DEV_NULL_BLK is not set # CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set -# CONFIG_ZRAM is not set +CONFIG_ZRAM=m +CONFIG_ZRAM_BACKEND_LZ4=y +CONFIG_ZRAM_BACKEND_LZ4HC=y +CONFIG_ZRAM_BACKEND_ZSTD=y +# CONFIG_ZRAM_BACKEND_DEFLATE is not set +# CONFIG_ZRAM_BACKEND_842 is not set +CONFIG_ZRAM_BACKEND_LZO=y +CONFIG_ZRAM_DEF_COMP_LZORLE=y +# CONFIG_ZRAM_DEF_COMP_LZO is not set +# CONFIG_ZRAM_DEF_COMP_LZ4 is not set +# CONFIG_ZRAM_DEF_COMP_LZ4HC is not set +# CONFIG_ZRAM_DEF_COMP_ZSTD is not set +CONFIG_ZRAM_DEF_COMP="lzo-rle" +CONFIG_ZRAM_WRITEBACK=y +# CONFIG_ZRAM_TRACK_ENTRY_ACTIME is not set +# CONFIG_ZRAM_MEMORY_TRACKING is not set +CONFIG_ZRAM_MULTI_COMP=y CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 # CONFIG_BLK_DEV_DRBD is not set @@ -7830,7 +7859,7 @@ CONFIG_CRYPTO_LZO=y # CONFIG_CRYPTO_842 is not set # CONFIG_CRYPTO_LZ4 is not set # CONFIG_CRYPTO_LZ4HC is not set -CONFIG_CRYPTO_ZSTD=m +CONFIG_CRYPTO_ZSTD=y # end of Compression # @@ -8004,6 +8033,8 @@ CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=y CONFIG_LZO_COMPRESS=y CONFIG_LZO_DECOMPRESS=y +CONFIG_LZ4_COMPRESS=m +CONFIG_LZ4HC_COMPRESS=m CONFIG_LZ4_DECOMPRESS=y CONFIG_ZSTD_COMMON=y CONFIG_ZSTD_COMPRESS=y diff --git a/projects/ROCKNIX/devices/SM8250/options b/projects/ROCKNIX/devices/SM8250/options index 3b2086fd8a..13fb8ac1ae 100644 --- a/projects/ROCKNIX/devices/SM8250/options +++ b/projects/ROCKNIX/devices/SM8250/options @@ -75,3 +75,12 @@ # Build and install ROCKNIX joypad driver (yes / no) ROCKNIX_JOYPAD="no" + + # ZRAM Algorithm + ZRAM_COMPRESSION_ALGO="zstd" + + # ZRAM Size + ZRAM_SWAP_SIZE="Auto" + + # Disk Swap + SWAP_FILE_SIZE="0" diff --git a/projects/ROCKNIX/devices/SM8550/linux/linux.aarch64.conf b/projects/ROCKNIX/devices/SM8550/linux/linux.aarch64.conf index 8c73a1cb0e..20f134459a 100644 --- a/projects/ROCKNIX/devices/SM8550/linux/linux.aarch64.conf +++ b/projects/ROCKNIX/devices/SM8550/linux/linux.aarch64.conf @@ -139,7 +139,8 @@ CONFIG_TASKSTATS=y # CONFIG_TASK_DELAY_ACCT is not set CONFIG_TASK_XACCT=y CONFIG_TASK_IO_ACCOUNTING=y -# CONFIG_PSI is not set +CONFIG_PSI=y +# CONFIG_PSI_DEFAULT_DISABLED is not set # end of CPU/Task time and stats accounting CONFIG_CPU_ISOLATION=y @@ -1000,6 +1001,18 @@ CONFIG_COREDUMP=y # CONFIG_SWAP=y # CONFIG_ZSWAP is not set +CONFIG_ZSMALLOC=m + +# +# Zsmalloc allocator options +# + +# +# Zsmalloc is a common backend allocator for zswap & zram +# +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_ZSMALLOC_CHAIN_SIZE=8 +# end of Zsmalloc allocator options # # Slab allocator options @@ -1060,8 +1073,8 @@ CONFIG_ARCH_WANTS_THP_SWAP=y # CONFIG_PERSISTENT_HUGE_ZERO_FOLIO is not set CONFIG_MM_ID=y CONFIG_TRANSPARENT_HUGEPAGE=y -CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y -# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set +# CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS is not set +CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y # CONFIG_TRANSPARENT_HUGEPAGE_NEVER is not set CONFIG_THP_SWAP=y # CONFIG_READ_ONLY_THP_FOR_FS is not set @@ -2174,7 +2187,23 @@ CONFIG_PNPACPI=y CONFIG_BLK_DEV=y # CONFIG_BLK_DEV_NULL_BLK is not set # CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set -# CONFIG_ZRAM is not set +CONFIG_ZRAM=m +CONFIG_ZRAM_BACKEND_LZ4=y +CONFIG_ZRAM_BACKEND_LZ4HC=y +CONFIG_ZRAM_BACKEND_ZSTD=y +# CONFIG_ZRAM_BACKEND_DEFLATE is not set +# CONFIG_ZRAM_BACKEND_842 is not set +CONFIG_ZRAM_BACKEND_LZO=y +CONFIG_ZRAM_DEF_COMP_LZORLE=y +# CONFIG_ZRAM_DEF_COMP_LZO is not set +# CONFIG_ZRAM_DEF_COMP_LZ4 is not set +# CONFIG_ZRAM_DEF_COMP_LZ4HC is not set +# CONFIG_ZRAM_DEF_COMP_ZSTD is not set +CONFIG_ZRAM_DEF_COMP="lzo-rle" +CONFIG_ZRAM_WRITEBACK=y +# CONFIG_ZRAM_TRACK_ENTRY_ACTIME is not set +# CONFIG_ZRAM_MEMORY_TRACKING is not set +CONFIG_ZRAM_MULTI_COMP=y CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 # CONFIG_BLK_DEV_DRBD is not set @@ -7880,7 +7909,7 @@ CONFIG_CRYPTO_LZO=y # CONFIG_CRYPTO_842 is not set # CONFIG_CRYPTO_LZ4 is not set # CONFIG_CRYPTO_LZ4HC is not set -CONFIG_CRYPTO_ZSTD=m +CONFIG_CRYPTO_ZSTD=y # end of Compression # @@ -8056,6 +8085,8 @@ CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=y CONFIG_LZO_COMPRESS=y CONFIG_LZO_DECOMPRESS=y +CONFIG_LZ4_COMPRESS=m +CONFIG_LZ4HC_COMPRESS=m CONFIG_LZ4_DECOMPRESS=y CONFIG_ZSTD_COMMON=y CONFIG_ZSTD_COMPRESS=y diff --git a/projects/ROCKNIX/devices/SM8550/options b/projects/ROCKNIX/devices/SM8550/options index 73f0cfc00f..1bd0067aad 100644 --- a/projects/ROCKNIX/devices/SM8550/options +++ b/projects/ROCKNIX/devices/SM8550/options @@ -76,3 +76,12 @@ # Build and install rocknix joypad driver (yes / no) ROCKNIX_JOYPAD="no" + + # ZRAM Algorithm + ZRAM_COMPRESSION_ALGO="zstd" + + # ZRAM Size + ZRAM_SWAP_SIZE="Auto" + + # Disk Swap + SWAP_FILE_SIZE="0" diff --git a/projects/ROCKNIX/devices/SM8650/linux/linux.aarch64.conf b/projects/ROCKNIX/devices/SM8650/linux/linux.aarch64.conf index a47b3f73df..b09d5405b3 100644 --- a/projects/ROCKNIX/devices/SM8650/linux/linux.aarch64.conf +++ b/projects/ROCKNIX/devices/SM8650/linux/linux.aarch64.conf @@ -139,7 +139,8 @@ CONFIG_TASKSTATS=y # CONFIG_TASK_DELAY_ACCT is not set CONFIG_TASK_XACCT=y CONFIG_TASK_IO_ACCOUNTING=y -# CONFIG_PSI is not set +CONFIG_PSI=y +# CONFIG_PSI_DEFAULT_DISABLED is not set # end of CPU/Task time and stats accounting CONFIG_CPU_ISOLATION=y @@ -1000,6 +1001,18 @@ CONFIG_COREDUMP=y # CONFIG_SWAP=y # CONFIG_ZSWAP is not set +CONFIG_ZSMALLOC=m + +# +# Zsmalloc allocator options +# + +# +# Zsmalloc is a common backend allocator for zswap & zram +# +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_ZSMALLOC_CHAIN_SIZE=8 +# end of Zsmalloc allocator options # # Slab allocator options @@ -1060,8 +1073,8 @@ CONFIG_ARCH_WANTS_THP_SWAP=y # CONFIG_PERSISTENT_HUGE_ZERO_FOLIO is not set CONFIG_MM_ID=y CONFIG_TRANSPARENT_HUGEPAGE=y -CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y -# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set +# CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS is not set +CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y # CONFIG_TRANSPARENT_HUGEPAGE_NEVER is not set CONFIG_THP_SWAP=y # CONFIG_READ_ONLY_THP_FOR_FS is not set @@ -1815,6 +1828,7 @@ CONFIG_PCI_PWRCTRL_UPD720201=m CONFIG_HAVE_PWRCTRL=y CONFIG_PCI_PWRCTRL=y CONFIG_PCI_PWRCTRL_PWRSEQ=m +CONFIG_PCI_PWRCTRL_UPD720201=m CONFIG_PCI_PWRCTRL_SLOT=y # CONFIG_CXL_BUS is not set # CONFIG_PCCARD is not set @@ -2175,7 +2189,23 @@ CONFIG_PNPACPI=y CONFIG_BLK_DEV=y # CONFIG_BLK_DEV_NULL_BLK is not set # CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set -# CONFIG_ZRAM is not set +CONFIG_ZRAM=m +CONFIG_ZRAM_BACKEND_LZ4=y +CONFIG_ZRAM_BACKEND_LZ4HC=y +CONFIG_ZRAM_BACKEND_ZSTD=y +# CONFIG_ZRAM_BACKEND_DEFLATE is not set +# CONFIG_ZRAM_BACKEND_842 is not set +CONFIG_ZRAM_BACKEND_LZO=y +CONFIG_ZRAM_DEF_COMP_LZORLE=y +# CONFIG_ZRAM_DEF_COMP_LZO is not set +# CONFIG_ZRAM_DEF_COMP_LZ4 is not set +# CONFIG_ZRAM_DEF_COMP_LZ4HC is not set +# CONFIG_ZRAM_DEF_COMP_ZSTD is not set +CONFIG_ZRAM_DEF_COMP="lzo-rle" +CONFIG_ZRAM_WRITEBACK=y +# CONFIG_ZRAM_TRACK_ENTRY_ACTIME is not set +# CONFIG_ZRAM_MEMORY_TRACKING is not set +CONFIG_ZRAM_MULTI_COMP=y CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 # CONFIG_BLK_DEV_DRBD is not set @@ -4338,6 +4368,7 @@ CONFIG_DRM_PANEL=y # Display Panels # # CONFIG_DRM_PANEL_ABT_Y030XX067A is not set +CONFIG_DRM_PANEL_AR14=y # CONFIG_DRM_PANEL_ARM_VERSATILE is not set # CONFIG_DRM_PANEL_ASUS_Z00T_TM5P5_NT35596 is not set # CONFIG_DRM_PANEL_AUO_A030JTN01 is not set @@ -7881,7 +7912,7 @@ CONFIG_CRYPTO_LZO=y # CONFIG_CRYPTO_842 is not set # CONFIG_CRYPTO_LZ4 is not set # CONFIG_CRYPTO_LZ4HC is not set -CONFIG_CRYPTO_ZSTD=m +CONFIG_CRYPTO_ZSTD=y # end of Compression # @@ -8057,6 +8088,8 @@ CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=y CONFIG_LZO_COMPRESS=y CONFIG_LZO_DECOMPRESS=y +CONFIG_LZ4_COMPRESS=m +CONFIG_LZ4HC_COMPRESS=m CONFIG_LZ4_DECOMPRESS=y CONFIG_ZSTD_COMMON=y CONFIG_ZSTD_COMPRESS=y diff --git a/projects/ROCKNIX/devices/SM8650/options b/projects/ROCKNIX/devices/SM8650/options index b14c6f790c..63aa063419 100644 --- a/projects/ROCKNIX/devices/SM8650/options +++ b/projects/ROCKNIX/devices/SM8650/options @@ -63,3 +63,12 @@ # Build and install rocknix joypad driver (yes / no) ROCKNIX_JOYPAD="no" + + # ZRAM Algorithm + ZRAM_COMPRESSION_ALGO="zstd" + + # ZRAM Size + ZRAM_SWAP_SIZE="Auto" + + # Disk Swap + SWAP_FILE_SIZE="0" diff --git a/projects/ROCKNIX/options b/projects/ROCKNIX/options index 17743a2e6e..a4d1ee1e1d 100644 --- a/projects/ROCKNIX/options +++ b/projects/ROCKNIX/options @@ -36,3 +36,6 @@ # Additional packages to install ADDITIONAL_PACKAGES="" + + # Satisfy legacy build dependencies + SWAP_SUPPORT="yes" diff --git a/projects/ROCKNIX/packages/linux/package.mk b/projects/ROCKNIX/packages/linux/package.mk index 27064a8210..f251033f57 100644 --- a/projects/ROCKNIX/packages/linux/package.mk +++ b/projects/ROCKNIX/packages/linux/package.mk @@ -152,16 +152,6 @@ pre_make_target() { ${PKG_BUILD}/scripts/config --disable CONFIG_SWAP fi - # enable / disable zram support (zstd compression) as required - if [ "${SWAP_TYPE}" = zram ]; then - ${PKG_BUILD}/scripts/config --module CONFIG_ZRAM - ${PKG_BUILD}/scripts/config --enable CONFIG_ZRAM_BACKEND_ZSTD - ${PKG_BUILD}/scripts/config --enable CONFIG_ZRAM_DEF_COMP_ZSTD - ${PKG_BUILD}/scripts/config --set-val CONFIG_ZRAM_DEF_COMP "zstd" - else - ${PKG_BUILD}/scripts/config --disable CONFIG_ZRAM - fi - # disable nfs support if not enabled if [ "${NFS_SUPPORT}" = no ]; then ${PKG_BUILD}/scripts/config --disable CONFIG_NFS_FS diff --git a/projects/ROCKNIX/packages/rocknix/package.mk b/projects/ROCKNIX/packages/rocknix/package.mk index ea57c1e870..b11cb7c7b6 100644 --- a/projects/ROCKNIX/packages/rocknix/package.mk +++ b/projects/ROCKNIX/packages/rocknix/package.mk @@ -68,6 +68,9 @@ EOF ### Fix and migrate to autostart package enable_service rocknix-autostart.service + + ### ZRAM/Swap and Memory Manager Service + enable_service rocknix-memory-manager.service ### Take a backup of the system configuration on shutdown enable_service save-sysconfig.service diff --git a/projects/ROCKNIX/packages/rocknix/sources/scripts/rocknix-memory-manager b/projects/ROCKNIX/packages/rocknix/sources/scripts/rocknix-memory-manager new file mode 100755 index 0000000000..42aa3fac6b --- /dev/null +++ b/projects/ROCKNIX/packages/rocknix/sources/scripts/rocknix-memory-manager @@ -0,0 +1,562 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2026-present Joel Wirāmu Pauling +# Copyright (C) 2026-present ROCKNIX (https://rocknix.org) + +# ROCKNIX Memory Manager +# Logic: 0/Empty = Off, "Auto" = Smart Calculation, "Resume" = Hibernation Sizing. + +# --- 1. CONFIGURATION CASCADE --- + +# A. Internal Safe Defaults (Hardcoded Fallback) +DEFAULT_ZRAM_SIZE="0" +DEFAULT_ZRAM_ALGO="zstd" +DEFAULT_SWAP_FILE_SIZE="0" +DEFAULT_SWAP_PRIORITY="auto" +DEFAULT_VM_WATERMARK_FACTOR="auto" +DEFAULT_VM_COMPACTION="auto" +DEFAULT_KSM_ENABLE="auto" + +# B. Load System Defaults (Distro Config) +if [ -f /etc/swap.conf ]; then + . /etc/swap.conf +fi + +# C. Load User Overrides (Partial Config Support) +if [ -f /storage/.config/swap.conf ]; then + . /storage/.config/swap.conf +fi + +# D. Variable Finalization +ZRAM_SIZE="${ZRAM_SIZE:-$DEFAULT_ZRAM_SIZE}" +ZRAM_ALGO="${ZRAM_ALGO:-$DEFAULT_ZRAM_ALGO}" +SWAP_FILE_SIZE="${SWAP_FILE_SIZE:-$DEFAULT_SWAP_FILE_SIZE}" +SWAP_PRIORITY="${SWAP_PRIORITY:-$DEFAULT_SWAP_PRIORITY}" +VM_WATERMARK_FACTOR="${VM_WATERMARK_FACTOR:-$DEFAULT_VM_WATERMARK_FACTOR}" +VM_COMPACTION="${VM_COMPACTION:-$DEFAULT_VM_COMPACTION}" +KSM_ENABLE="${KSM_ENABLE:-$DEFAULT_KSM_ENABLE}" + +# --- 2. ENVIRONMENT & TIER DETECTION --- + +# Global RAM calc (MB) +TOTAL_MEM_KB=$(awk '/MemTotal/ {print $2}' /proc/meminfo) +TOTAL_MEM_MB=$((TOTAL_MEM_KB / 1024)) + +# RAM Tiers +IS_LOW_RAM=false +IS_MID_RAM=false +IS_HIGH_RAM=false + +if [ "$TOTAL_MEM_MB" -lt 2048 ]; then + IS_LOW_RAM=true +elif [ "$TOTAL_MEM_MB" -le 8192 ]; then + IS_MID_RAM=true +else + IS_HIGH_RAM=true +fi + +# SoC Capability Tiers +# Detect High Performance SoCs that can handle aggressive background ops (KSM/Compaction) +# even with lower RAM. +IS_HIGH_PERF_SOC=false + +if [ -f /proc/device-tree/compatible ]; then + if grep -qE "rk3588|sm8|s922x|g12b|rk3399" /proc/device-tree/compatible; then + IS_HIGH_PERF_SOC=true + fi +fi + +# Basic mount check +if ! mountpoint -q /storage; then + if [[ "$*" != *"--help"* ]]; then + logger -t memory-manager "Error: /storage is not mounted." + exit 1 + fi +fi + +# --- 3. HELPER FUNCTIONS --- + +update_config() { + local key="$1" + local val="$2" + local file="/storage/.config/swap.conf" + + if [ ! -d "$(dirname "$file")" ]; then mkdir -p "$(dirname "$file")"; fi + if [ ! -f "$file" ]; then touch "$file"; fi + + if grep -q "^${key}=" "$file"; then + sed -i "s|^${key}=.*|${key}=\"${val}\"|" "$file" + else + echo "${key}=\"${val}\"" >> "$file" + fi + eval "${key}=\"${val}\"" +} + +show_status_json() { + # Generate machine-readable status + local ksm_status="false" + local ksm_saved=0 + if [ -f /sys/kernel/mm/ksm/run ] && [ "$(cat /sys/kernel/mm/ksm/run)" -eq 1 ]; then + ksm_status="true" + local sharing=$(cat /sys/kernel/mm/ksm/pages_sharing 2>/dev/null || echo 0) + ksm_saved=$(( (sharing * 4096) / 1024 / 1024 )) + fi + + local zram_enabled="false" + local zram_compr=0 + if [ -d /sys/block/zram0 ]; then + zram_enabled="true" + local stat=($(cat /sys/block/zram0/mm_stat 2>/dev/null)) + if [ ${#stat[@]} -ge 3 ]; then + zram_compr=$((stat[1] / 1024 / 1024)) + fi + fi + + local ram_tier="high" + [ "$IS_LOW_RAM" = true ] && ram_tier="low" + [ "$IS_MID_RAM" = true ] && ram_tier="mid" + + echo "{" + echo " \"ram_total_mb\": $TOTAL_MEM_MB," + echo " \"tier_ram\": \"$ram_tier\"," + echo " \"tier_soc\": \"$([ "$IS_HIGH_PERF_SOC" = true ] && echo "high" || echo "standard")\"," + echo " \"zram\": {" + echo " \"enabled\": $zram_enabled," + echo " \"size_mb\": $ZRAM_SIZE_VAL," + echo " \"algo\": \"$ZRAM_ALGO\"," + echo " \"compressed_size_mb\": $zram_compr" + echo " }," + echo " \"swap\": {" + echo " \"size_mb\": $SWAP_SIZE_VAL," + echo " \"priority\": \"$SWAP_PRIORITY\"" + echo " }," + echo " \"ksm\": {" + echo " \"enabled\": $ksm_status," + echo " \"saved_mb\": $ksm_saved" + echo " }" + echo "}" +} + +show_status() { + echo "--- ROCKNIX Memory Manager Status ---" + printf "System RAM: %s MB\n" "$TOTAL_MEM_MB" + printf "RAM Tier: %s\n" "$([ "$IS_LOW_RAM" = true ] && echo "Low" || ([ "$IS_MID_RAM" = true ] && echo "Mid" || echo "High"))" + printf "SoC Tier: %s\n" "$([ "$IS_HIGH_PERF_SOC" = true ] && echo "High Performance" || echo "Standard")" + printf "ZRAM Config: %s [%s]\n" "$ZRAM_STATUS" "$ZRAM_ALGO" + printf "Swap Config: %s [Mode: %s]\n" "$SWAP_STATUS" "$SWAP_PRIORITY" + echo "" + echo "[ Tier 1: ZRAM Statistics ]" + if [ -d /sys/block/zram0 ]; then + local stat=($(cat /sys/block/zram0/mm_stat 2>/dev/null)) + if [ ${#stat[@]} -ge 3 ]; then + local orig=$((stat[0] / 1024 / 1024)) + local compr=$((stat[1] / 1024 / 1024)) + local total=$((stat[2] / 1024 / 1024)) + printf " Original Data: %s MB\n" "$orig" + printf " Compressed: %s MB\n" "$compr" + printf " Memory Used: %s MB\n" "$total" + [ "$compr" -gt 0 ] && printf " Ratio: %.2f:1\n" "$(echo "scale=2; $orig / $compr" | bc)" + fi + [ -f /sys/block/zram0/comp_algorithm ] && printf " Algorithms: %s\n" "$(cat /sys/block/zram0/comp_algorithm)" + else + echo " ZRAM device not initialized." + fi + echo "" + echo "[ Tier 2: Physical Swap ]" + swapon --show | grep -v "NAME" || echo " No physical swap active." + echo "" + echo "[ Memory Subsystem ]" + # KSM + if [ -f /sys/kernel/mm/ksm/run ]; then + local ksm_run=$(cat /sys/kernel/mm/ksm/run) + local ksm_status="Stopped" + [ "$ksm_run" -eq 1 ] && ksm_status="Running" + if [ "$ksm_run" -eq 1 ]; then + local sharing=$(cat /sys/kernel/mm/ksm/pages_sharing 2>/dev/null || echo 0) + local saved=$(( (sharing * 4096) / 1024 / 1024 )) + printf " KSM Status: %s (Saved: %s MB)\n" "$ksm_status" "$saved" + printf " KSM Setting: %s\n" "$KSM_ENABLE" + else + printf " KSM Status: %s\n" "$ksm_status" + fi + else + echo " KSM Status: Absent" + fi + + # MGLRU + if [ -f /sys/kernel/mm/lru_gen/enabled ]; then + printf " MGLRU: Enabled [0x%s]\n" "$(cat /sys/kernel/mm/lru_gen/enabled)" + else + printf " MGLRU: Absent\n" + fi + + # THP + if [ -f /sys/kernel/mm/transparent_hugepage/enabled ]; then + local thp=$(grep -o '\[.*\]' /sys/kernel/mm/transparent_hugepage/enabled | tr -d '[]') + printf " Huge Pages: %s\n" "$thp" + else + printf " Huge Pages: Absent\n" + fi + + echo "" + echo "[ Advanced Tuning ]" + sysctl vm.swappiness vm.page-cluster vm.vfs_cache_pressure vm.dirty_ratio vm.watermark_scale_factor vm.compaction_proactiveness 2>/dev/null | sed 's/^/ /' +} + +check_safety() { + local mem_avail_kb=$(awk '/MemAvailable/ {print $2}' /proc/meminfo) + local swap_total_kb=$(awk '/SwapTotal/ {print $2}' /proc/meminfo) + local swap_free_kb=$(awk '/SwapFree/ {print $2}' /proc/meminfo) + local swap_used_kb=$((swap_total_kb - swap_free_kb)) + + if [ "$swap_used_kb" -gt "$((mem_avail_kb - 51200))" ]; then + logger -t memory-manager "CRITICAL: Reload aborted. Active swap usage ($swap_used_kb kB) exceeds available RAM ($mem_avail_kb kB)." + return 1 + fi + return 0 +} + +stop_zram() { + if grep -q "/dev/zram0" /proc/swaps; then + swapoff /dev/zram0 || return 1 + fi + if [ -b /dev/zram0 ]; then + echo 1 > /sys/block/zram0/reset 2>/dev/null + fi +} + +stop_swapfile() { + TARGET_SWAP="${SWAPFILE:-/storage/.cache/swapfile}" + if grep -q "$TARGET_SWAP" /proc/swaps; then + swapoff "$TARGET_SWAP" || return 1 + fi +} + +setup_ksm() { + if [ -f /sys/kernel/mm/ksm/run ]; then + local should_run=0 + + if [[ "${KSM_ENABLE,,}" == "auto" ]]; then + should_run=1 + elif [[ "${KSM_ENABLE,,}" == "enable" || "$KSM_ENABLE" == "1" ]]; then + should_run=1 + fi + + if [ "$should_run" -eq 1 ]; then + echo 1 > /sys/kernel/mm/ksm/run + + # Smart Tuning: RAM Tier + SoC Capabilities + if [ "$IS_LOW_RAM" = true ]; then + if [ "$IS_HIGH_PERF_SOC" = true ]; then + # Low RAM but Strong CPU (e.g. S922X 2GB). + # Run KSM aggressively to maximize RAM availability. + echo 200 > /sys/kernel/mm/ksm/sleep_millisecs + echo 200 > /sys/kernel/mm/ksm/pages_to_scan + else + # Low RAM and Weak CPU (e.g. RK3326). + # Conservative to avoid CPU stutter. + echo 500 > /sys/kernel/mm/ksm/sleep_millisecs + echo 100 > /sys/kernel/mm/ksm/pages_to_scan + fi + elif [ "$IS_MID_RAM" = true ]; then + # Mid Range: Slower scan rate + echo 1000 > /sys/kernel/mm/ksm/sleep_millisecs + echo 100 > /sys/kernel/mm/ksm/pages_to_scan + else + # High End: Very lazy scan + echo 3000 > /sys/kernel/mm/ksm/sleep_millisecs + echo 100 > /sys/kernel/mm/ksm/pages_to_scan + fi + else + echo 0 > /sys/kernel/mm/ksm/run + fi + fi +} + +apply_vm_tuning() { + # 1. Watermark Scale Factor + local watermark_factor=10 + if [[ "${VM_WATERMARK_FACTOR,,}" == "auto" ]]; then + if [ "$IS_LOW_RAM" = true ]; then + watermark_factor=10 + else + watermark_factor=100 + fi + elif [[ "$VM_WATERMARK_FACTOR" =~ ^[0-9]+$ ]]; then + watermark_factor=$VM_WATERMARK_FACTOR + fi + if [ -f /proc/sys/vm/watermark_scale_factor ]; then + sysctl -w vm.watermark_scale_factor=$watermark_factor >/dev/null + fi + + # 2. Compaction Proactiveness + local compaction_val=20 + if [[ "${VM_COMPACTION,,}" == "auto" ]]; then + if [ "$IS_HIGH_RAM" = true ]; then + compaction_val=50 + elif [ "$IS_LOW_RAM" = true ] && [ "$IS_HIGH_PERF_SOC" = true ]; then + # Low RAM/High CPU can afford proactive compaction to help THP/allocs + compaction_val=30 + else + compaction_val=20 + fi + elif [[ "$VM_COMPACTION" =~ ^[0-9]+$ ]]; then + compaction_val=$VM_COMPACTION + fi + if [ -f /proc/sys/vm/compaction_proactiveness ]; then + sysctl -w vm.compaction_proactiveness=$compaction_val >/dev/null + fi + + # 3. Transparent Huge Pages + if [ -f /sys/kernel/mm/transparent_hugepage/enabled ]; then + echo madvise > /sys/kernel/mm/transparent_hugepage/enabled + fi +} + +apply_tuning() { + sysctl -w vm.vfs_cache_pressure=100 >/dev/null + sysctl -w vm.dirty_ratio=10 >/dev/null + sysctl -w vm.dirty_background_ratio=5 >/dev/null + + apply_vm_tuning + setup_ksm + + if [ "$ZRAM_SIZE_VAL" -gt 0 ]; then + sysctl -w vm.swappiness=100 >/dev/null + sysctl -w vm.page-cluster=0 >/dev/null + + if [ -n "$SECONDARY_ALGO" ] && [ -f /sys/block/zram0/recompress ]; then + if grep -q "$SECONDARY_ALGO" /sys/block/zram0/comp_algorithm; then + echo "algo=$SECONDARY_ALGO priority=1" > /sys/block/zram0/recompress 2>/dev/null + fi + fi + elif [ "$SWAP_SIZE_VAL" -gt 0 ]; then + sysctl -w vm.swappiness=60 >/dev/null + sysctl -w vm.page-cluster=3 >/dev/null + fi +} + +perform_optimization() { + # Proactive Maintenance Logic + # 1. ZRAM Recompression (if Hybrid Tiering is active) + if [ "$ZRAM_SIZE_VAL" -gt 0 ] && [ -n "$SECONDARY_ALGO" ] && [ -f /sys/block/zram0/recompress ]; then + logger -t memory-manager "Optimizing: Triggering ZRAM recompression ($SECONDARY_ALGO)..." + if grep -q "$SECONDARY_ALGO" /sys/block/zram0/comp_algorithm; then + # Recompress huge/idle pages to secondary algo + echo "algo=$SECONDARY_ALGO type=huge_idle" > /sys/block/zram0/recompress 2>/dev/null + fi + fi + + # 2. Memory Compaction (if Fragmentation is high) + if [ -f /proc/sys/vm/compact_memory ]; then + logger -t memory-manager "Optimizing: Triggering Memory Compaction..." + echo 1 > /proc/sys/vm/compact_memory + fi +} + +setup_zram() { + [ "$ZRAM_SIZE_VAL" -le 0 ] && return + + modprobe zsmalloc 2>/dev/null + modprobe zram num_devices=1 2>/dev/null + + local timeout=0 + while [ ! -b /dev/zram0 ] && [ $timeout -lt 5 ]; do + sleep 0.1 + ((timeout++)) + done + + if [ ! -b /dev/zram0 ]; then + logger -t memory-manager "Error: ZRAM device node /dev/zram0 did not appear." + return + fi + + grep -q "zram0" /proc/swaps && return + + local algo_path="/sys/block/zram0/comp_algorithm" + [ -f "$algo_path" ] && echo "$PRIMARY_ALGO" > "$algo_path" 2>/dev/null + + echo $((ZRAM_SIZE_VAL * 1024 * 1024)) > /sys/block/zram0/disksize + mkswap /dev/zram0 >/dev/null + swapon -p 100 /dev/zram0 +} + +setup_swapfile() { + [ "$SWAP_SIZE_VAL" -le 0 ] && return + TARGET_SWAP="${SWAPFILE:-/storage/.cache/swapfile}" + mkdir -p "$(dirname "$TARGET_SWAP")" 2>/dev/null + local cur=0 + [ -f "$TARGET_SWAP" ] && cur=$(du -m "$TARGET_SWAP" | cut -f1) + + if [ "$cur" -ne "$SWAP_SIZE_VAL" ]; then + [ -f "$TARGET_SWAP" ] && swapoff "$TARGET_SWAP" 2>/dev/null && rm "$TARGET_SWAP" + fallocate -l ${SWAP_SIZE_VAL}M "$TARGET_SWAP" 2>/dev/null || \ + dd if=/dev/zero of="$TARGET_SWAP" bs=1M count=$SWAP_SIZE_VAL status=none + chmod 0600 "$TARGET_SWAP" + mkswap "$TARGET_SWAP" >/dev/null + fi + + local prio=-2 + if [[ "${SWAP_PRIORITY,,}" == "stripe" ]]; then + prio=100 + elif [[ "${SWAP_PRIORITY,,}" == "auto" ]]; then + if [ "$ZRAM_SIZE_VAL" -gt 0 ]; then + prio=-10 + else + prio=-2 + fi + elif [[ "$SWAP_PRIORITY" =~ ^-?[0-9]+$ ]]; then + prio=$SWAP_PRIORITY + fi + + swapon -p $prio "$TARGET_SWAP" 2>/dev/null +} + +drop_caches() { + sync + echo 3 > /proc/sys/vm/drop_caches + logger -t memory-manager "Caches dropped." + echo "Caches dropped." +} + +# --- 4. LOGIC RESOLUTION & ARG PARSING --- + +ACTION="" + +while [[ $# -gt 0 ]]; do + case "$1" in + --zram-size) update_config "ZRAM_SIZE" "$2"; shift 2 ;; + --zram-algo) update_config "ZRAM_ALGO" "$2"; shift 2 ;; + --swap-size) update_config "SWAP_FILE_SIZE" "$2"; shift 2 ;; + --swap-priority) update_config "SWAP_PRIORITY" "$2"; shift 2 ;; + --vm-watermark) update_config "VM_WATERMARK_FACTOR" "$2"; shift 2 ;; + --vm-compaction) update_config "VM_COMPACTION" "$2"; shift 2 ;; + --ksm) update_config "KSM_ENABLE" "$2"; shift 2 ;; + --setup) ACTION="setup"; shift ;; + --stop) ACTION="stop"; shift ;; + --reload) ACTION="reload"; shift ;; + --drop-caches) ACTION="drop-caches"; shift ;; + --optimize) ACTION="optimize"; shift ;; + --status) ACTION="status"; shift ;; + --json) ACTION="json"; shift ;; + --help|-h) + echo "Usage: rocknix-memory-manager [OPTIONS] [ACTION]" + echo "Config Options (Writes to .config/swap.conf):" + echo " --zram-size [0|Auto|MB] Set ZRAM size" + echo " --zram-algo [zstd|lzo|lz4] Set ZRAM compression" + echo " --swap-size [0|Auto|Resume] Set Disk Swap size" + echo " --swap-priority [Auto|Stripe] Set Swap priority" + echo " --vm-watermark [Auto|Val] Set VM watermark scale factor" + echo " --vm-compaction [Auto|Val] Set VM compaction proactiveness" + echo " --ksm [Auto|Enable|Disable] Set Kernel Samepage Merging" + echo "Actions:" + echo " --setup Initial setup" + echo " --reload Safe reload (teardown -> setup)" + echo " --optimize Run runtime optimizations (Recompress/Compact)" + echo " --status Show status (default interactive)" + echo " --json Show status in JSON" + exit 0 + ;; + *) if [ -z "$ACTION" ]; then ACTION="setup"; fi; shift ;; + esac +done + +if [ -z "$ACTION" ]; then + if [ -t 0 ]; then ACTION="status"; else ACTION="setup"; fi +fi + +# --- 5. RE-EVALUATE LOGIC WITH NEW CONFIGS --- + +# Calculate ZRAM Size +ZRAM_SIZE_VAL=0 +ZRAM_STATUS="Off" +if [[ "${ZRAM_SIZE,,}" == "auto" ]]; then + if [ "$IS_LOW_RAM" = true ]; then + ZRAM_SIZE_VAL=$((TOTAL_MEM_MB * 3 / 4)) + elif [ "$IS_MID_RAM" = true ]; then + ZRAM_SIZE_VAL=$((TOTAL_MEM_MB / 2)) + else + ZRAM_SIZE_VAL=6144 + fi + ZRAM_STATUS="Auto (${ZRAM_SIZE_VAL}MB)" +elif [[ "$ZRAM_SIZE" =~ ^[0-9]+$ ]] && [ "$ZRAM_SIZE" -gt 0 ]; then + ZRAM_SIZE_VAL=$ZRAM_SIZE + ZRAM_STATUS="${ZRAM_SIZE_VAL}MB" +fi + +# Calculate Swap File Size +SWAP_SIZE_VAL=0 +SWAP_STATUS="Off" +if [[ "${SWAP_FILE_SIZE,,}" == "auto" ]]; then + SWAP_SIZE_VAL=$TOTAL_MEM_MB + [ "$SWAP_SIZE_VAL" -gt 2048 ] && SWAP_SIZE_VAL=2048 + SWAP_STATUS="Auto (${SWAP_SIZE_VAL}MB)" +elif [[ "${SWAP_FILE_SIZE,,}" == "resume" ]]; then + SWAP_SIZE_VAL=$((TOTAL_MEM_MB + 512)) + SWAP_STATUS="Resume Target (${SWAP_SIZE_VAL}MB)" +elif [[ "$SWAP_FILE_SIZE" =~ ^[0-9]+$ ]] && [ "$SWAP_FILE_SIZE" -gt 0 ]; then + SWAP_SIZE_VAL=$SWAP_FILE_SIZE + SWAP_STATUS="${SWAP_SIZE_VAL}MB" +fi + +# Determine Algorithms +if [[ "$ZRAM_ALGO" == "@ZRAM_COMPRESSION_ALGO@" ]]; then + ZRAM_ALGO="zstd" +fi + +PRIMARY_ALGO="$ZRAM_ALGO" +SECONDARY_ALGO="" + +if [[ "$ZRAM_ALGO" == "zstd" ]]; then + PRIMARY_ALGO="lzo-rle" + SECONDARY_ALGO="zstd" +fi + +# Safety check for algorithm +if [ -e /sys/block/zram0/comp_algorithm ] && ! grep -q "$PRIMARY_ALGO" /sys/block/zram0/comp_algorithm 2>/dev/null; then + if grep -q "lzo-rle" /sys/block/zram0/comp_algorithm 2>/dev/null; then + PRIMARY_ALGO="lzo-rle" + else + PRIMARY_ALGO=$(awk '{print $1}' /sys/block/zram0/comp_algorithm | tr -d '[]') + fi +fi + +# --- 6. PERFORM ACTION --- + +case "$ACTION" in + setup) + exec 1> >(logger -s -t memory-manager) 2>&1 + apply_tuning + setup_zram + setup_swapfile + ;; + stop) + exec 1> >(logger -s -t memory-manager) 2>&1 + stop_zram + stop_swapfile + ;; + reload) + exec 1> >(logger -s -t memory-manager) 2>&1 + logger "Reloading memory configuration..." + if ! check_safety; then exit 1; fi + stop_swapfile + stop_zram + apply_tuning + setup_zram + setup_swapfile + ;; + optimize) + exec 1> >(logger -s -t memory-manager) 2>&1 + perform_optimization + ;; + drop-caches) + drop_caches + ;; + status) + show_status + ;; + json) + show_status_json + ;; +esac +exit 0 diff --git a/projects/ROCKNIX/packages/rocknix/system.d/rocknix-memory-manager.service b/projects/ROCKNIX/packages/rocknix/system.d/rocknix-memory-manager.service new file mode 100644 index 0000000000..5020392b27 --- /dev/null +++ b/projects/ROCKNIX/packages/rocknix/system.d/rocknix-memory-manager.service @@ -0,0 +1,17 @@ +[Unit] +Description=Rocknix Memory Manager +After=local-fs.target +DefaultDependencies=no +Conflicts=swap.service shutdown.target +Before=shutdown.target + +[Service] +Environment=HOME=/storage +Type=oneshot +ExecStart=/usr/bin/rocknix-memory-manager --setup +ExecReload=/usr/bin/rocknix-memory-manager --reload +ExecStop=/usr/bin/rocknix-memory-manager --stop +RemainAfterExit=yes + +[Install] +WantedBy=basic.target diff --git a/projects/ROCKNIX/packages/sysutils/util-linux/config/swap.conf b/projects/ROCKNIX/packages/sysutils/util-linux/config/swap.conf index 3623dae2a9..630fc25e7a 100644 --- a/projects/ROCKNIX/packages/sysutils/util-linux/config/swap.conf +++ b/projects/ROCKNIX/packages/sysutils/util-linux/config/swap.conf @@ -1,7 +1,11 @@ -# SPDX-License-Identifier: GPL-2.0-or-later +#!/bin/sh # Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv) +# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) SWAPFILE="$HOME/.cache/swapfile" -SWAPSIZE="@SWAPSIZE@" +ZRAM_SIZE="@ZRAM_SWAP_SIZE@" SWAP_ENABLED="@SWAP_ENABLED_DEFAULT@" -SWAP_TYPE="@SWAP_TYPE@" \ No newline at end of file +SWAP_FILE_SIZE="@SWAP_FILE_SIZE@" +SWAP_PRIORITY="@SWAP_PRIORITY@" +ZRAM_ALGO="@ZRAM_COMPRESSION_ALGO@" +KSM_ENABLE="@KSM_ENABLE@" diff --git a/projects/ROCKNIX/packages/sysutils/util-linux/package.mk b/projects/ROCKNIX/packages/sysutils/util-linux/package.mk index 2d05df5bb0..4b7ea70fff 100644 --- a/projects/ROCKNIX/packages/sysutils/util-linux/package.mk +++ b/projects/ROCKNIX/packages/sysutils/util-linux/package.mk @@ -56,13 +56,14 @@ PKG_CONFIGURE_OPTS_TARGET="${UTILLINUX_CONFIG_DEFAULT} \ --enable-blkid \ --enable-blkdiscard \ --enable-schedutils \ - --enable-lscpu" + --enable-lscpu \ + --enable-fallocate" if [ "${SWAP_SUPPORT}" = "yes" ]; then PKG_CONFIGURE_OPTS_TARGET+=" --enable-swapon" fi -if [ "${SWAP_TYPE}" = "zram" ]; then +if [ "${SWAP_SUPPORT}" = "yes" ]; then PKG_CONFIGURE_OPTS_TARGET+=" --enable-zramctl" fi @@ -87,20 +88,14 @@ fi post_makeinstall_target() { if [ "${SWAP_SUPPORT}" = "yes" ]; then - mkdir -p ${INSTALL}/usr/lib/rocknix - cp -PR ${PKG_DIR}/scripts/mount-swap ${INSTALL}/usr/lib/rocknix - mkdir -p ${INSTALL}/etc cat ${PKG_DIR}/config/swap.conf | \ - sed -e "s,@SWAPSIZE@,${SWAPSIZE},g" \ + sed -e "s,@ZRAM_SWAP_SIZE@,${ZRAM_SWAP_SIZE},g" \ -e "s,@SWAP_ENABLED_DEFAULT@,${SWAP_ENABLED_DEFAULT},g" \ - -e "s,@SWAP_TYPE@,${SWAP_TYPE},g" \ + -e "s,@SWAP_FILE_SIZE@,${SWAP_FILE_SIZE},g" \ + -e "s,@SWAP_PRIORITY@,${SWAP_PRIORITY:-auto},g" \ + -e "s,@KSM_ENABLE@,${KSM_ENABLE:-auto},g" \ + -e "s,@ZRAM_COMPRESSION_ALGO@,${ZRAM_COMPRESSION_ALGO},g" \ > ${INSTALL}/etc/swap.conf fi } - -post_install () { - if [ "${SWAP_SUPPORT}" = "yes" ]; then - enable_service swap.service - fi -}