Hi Otto, On Thu, Jan 2, 2025 at 9:33 AM Otto Kekäläinen <otto@kekalainen.net> wrote:
These should actually be 64-bit and therefore enable innodb_log_file_mmap. Is your configuration check tripping because of the following?
static constexpr const char *innodb_log_file_mmap_description= "Whether ib_logfile0" # ifdef HAVE_PMEM " resides in persistent memory or" # endif " should initially be memory-mapped";
It is not "my configuration check", it is standard output from mariadbd --verbose --help.
You could compare filtered output, for example like this: sed -e 's/ resides in persistent memory or//' I think that it would be extremely misleading to mention persistent memory on systems where it cannot be supported. That would be all 32-bit ISA as well as a few 64-bit ISA. Actually, there exists an implementation of pmem_persist() for RISC-V and LoongArch, but I did not enable those by default, because we do not have those ISA in our CI. The following code in storage/innobase/CMakeLists.txt would have to be adjusted: IF(CMAKE_SIZEOF_VOID_P EQUAL 8) IF(CMAKE_SYSTEM_PROCESSOR MATCHES "(aarch|AARCH|p(ower)?pc|x86_|amd)64") OPTION(WITH_INNODB_PMEM "Support memory-mapped InnoDB redo log" ON) ELSE() # Disable by default on ISA that are not covered by our CI OPTION(WITH_INNODB_PMEM "Support memory-mapped InnoDB redo log" OFF) ENDIF() ENDIF() If the regression tests run on /dev/shm (such as by invoking ./mtr --mem), the tests should execute the function pmem_persist(). If you could test this on RISC-V and LoongArch (both seem to be supported architectures in Debian), we could enable this code for them. I double-checked that s390x cannot be supported. https://www.ibm.com/support/pages/ibm-system-z-io-feature-reference-table does not mention any CXL, so it is not likely that any hardware exists. Also, https://gcc.gnu.org/onlinedocs/gcc/S_002f390-System-z-Built-in-Functions.htm... only mentions some instructions for memory transactions, which https://jira.mariadb.org/browse/MDEV-26769 is already making use of.
I agree that most of the time less is more, but in the case of configuration options / system variables, it is extremely confusing to users if an option occasionally exists and occasionally not in the same version of MariaDB build with the same dependencies.
Can you please help me write a patch (apparently for a_innodb.cc) to make the variable will always be visible?
I can try to see if the memory-mapped log parsing can be implemented on 32-bit systems. But, some of those systems can't possibly support pmem_persist(), and hence the documentation string would necessarily differ from those 64-bit platforms that can support it. Marko -- Marko Mäkelä, Lead Developer InnoDB MariaDB plc