From afd0a5455a8888da647b84b3170ca6d292be62cb Mon Sep 17 00:00:00 2001 From: Dongsheng Yang Date: Tue, 19 Aug 2025 18:40:19 +0800 Subject: [PATCH 1/2] Add ucomp rebuild and benchmark script --- ucomp_bench.sh | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100755 ucomp_bench.sh diff --git a/ucomp_bench.sh b/ucomp_bench.sh new file mode 100755 index 0000000..a14b969 --- /dev/null +++ b/ucomp_bench.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# Recompile ucomp +make -C /workspace/ucomp clean && make -C /workspace/ucomp + +# Stop all current ucomp compressors and unload module (ignore errors) +pkill -f ucomp || true +rmmod ucomp 2>/dev/null || true + +# Insert ucomp module +insmod /workspace/ucomp/ucomp.ko + +# Start ucompd and register compressors +ucompd register + +# Run benchmark for ucomp-zstd +insmod ./comp_bench.ko alg=ucomp-zstd path=/workspace/linux_compile/vmlinux +rmmod comp_bench.ko || true + +# Run benchmark for ucomp-lzo +insmod ./comp_bench.ko alg=ucomp-lzo path=/workspace/linux_compile/vmlinux +rmmod comp_bench.ko || true From a9549c1b35cd93787dd99358f181ce473acfdabd Mon Sep 17 00:00:00 2001 From: Dongsheng Yang Date: Tue, 19 Aug 2025 18:46:39 +0800 Subject: [PATCH 2/2] Add ucomp_cmd utility with unregister subcommand --- ucomp_bench.sh | 12 ++++++------ ucomp_cmd.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 6 deletions(-) create mode 100644 ucomp_cmd.c diff --git a/ucomp_bench.sh b/ucomp_bench.sh index a14b969..1a034fe 100755 --- a/ucomp_bench.sh +++ b/ucomp_bench.sh @@ -4,6 +4,8 @@ make -C /workspace/ucomp clean && make -C /workspace/ucomp # Stop all current ucomp compressors and unload module (ignore errors) +ucomp unregister zstd 2>/dev/null || true +ucomp unregister lzo 2>/dev/null || true pkill -f ucomp || true rmmod ucomp 2>/dev/null || true @@ -13,10 +15,8 @@ insmod /workspace/ucomp/ucomp.ko # Start ucompd and register compressors ucompd register -# Run benchmark for ucomp-zstd -insmod ./comp_bench.ko alg=ucomp-zstd path=/workspace/linux_compile/vmlinux -rmmod comp_bench.ko || true +# Run benchmark for ucomp-zstd (insmod may report 'busy' if already loaded) +insmod ./comp_bench.ko alg=ucomp-zstd path=/workspace/linux_compile/vmlinux || true -# Run benchmark for ucomp-lzo -insmod ./comp_bench.ko alg=ucomp-lzo path=/workspace/linux_compile/vmlinux -rmmod comp_bench.ko || true +# Run benchmark for ucomp-lzo (insmod may report 'busy' if already loaded) +insmod ./comp_bench.ko alg=ucomp-lzo path=/workspace/linux_compile/vmlinux || true diff --git a/ucomp_cmd.c b/ucomp_cmd.c new file mode 100644 index 0000000..45fa6e9 --- /dev/null +++ b/ucomp_cmd.c @@ -0,0 +1,53 @@ +#include +#include +#include +#include +#include +#include +#include + +#define UCOMP_CTRL_PATH "/dev/ucomp_ctrl" +#define UCOMP_IOC_MAGIC 'u' +#define UCOMP_IOC_REGISTER _IOW(UCOMP_IOC_MAGIC, 1, char *) +#define UCOMP_IOC_UNREGISTER _IOW(UCOMP_IOC_MAGIC, 2, char *) + +static void usage(const char *prog) +{ + fprintf(stderr, "Usage: %s \n", prog); +} + +int main(int argc, char *argv[]) +{ + if (argc != 3) { + usage(argv[0]); + return EXIT_FAILURE; + } + + const char *cmd = argv[1]; + const char *alg = argv[2]; + int fd = open(UCOMP_CTRL_PATH, O_RDWR); + if (fd < 0) { + perror("open"); + return EXIT_FAILURE; + } + + int ret; + if (strcmp(cmd, "register") == 0) { + ret = ioctl(fd, UCOMP_IOC_REGISTER, alg); + } else if (strcmp(cmd, "unregister") == 0) { + ret = ioctl(fd, UCOMP_IOC_UNREGISTER, alg); + } else { + usage(argv[0]); + close(fd); + return EXIT_FAILURE; + } + + if (ret < 0) { + perror(cmd); + close(fd); + return EXIT_FAILURE; + } + + close(fd); + return EXIT_SUCCESS; +}