Hi Otto,

On Thu, Jan 2, 2025 at 9:33 AM Otto Kekäläinen <o...@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.html
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
_______________________________________________
developers mailing list -- developers@lists.mariadb.org
To unsubscribe send an email to developers-le...@lists.mariadb.org

Reply via email to