<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/mariadb-git.git, branch preview-10.8-MDEV-14425-innodb</title>
<subtitle>github.com: MariaDB/server.git
</subtitle>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/mariadb-git.git/'/>
<entry>
<title>fixup! 6e055f134b290945a4efd842fdfec4d975de4f6f</title>
<updated>2022-01-13T16:29:13+00:00</updated>
<author>
<name>Marko Mäkelä</name>
<email>marko.makela@mariadb.com</email>
</author>
<published>2022-01-13T16:29:13+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/mariadb-git.git/commit/?id=ff60216702750df10ca386afd07618d40f8469f6'/>
<id>ff60216702750df10ca386afd07618d40f8469f6</id>
<content type='text'>
Correct a debug assertion
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Correct a debug assertion
</pre>
</div>
</content>
</entry>
<entry>
<title>innodb_encrypt_log: Include the nonce in the checksum</title>
<updated>2022-01-13T10:52:41+00:00</updated>
<author>
<name>Marko Mäkelä</name>
<email>marko.makela@mariadb.com</email>
</author>
<published>2022-01-13T10:52:41+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/mariadb-git.git/commit/?id=7a7f304ab1a8961169e66f386003e36e99bd2ca1'/>
<id>7a7f304ab1a8961169e66f386003e36e99bd2ca1</id>
<content type='text'>
Previously, the 8-byte nonce after each mini-transaction was not covered
by the mini-transaction checksum. That could cause catastrophic failure
when the server was killed at a time where the write of the checksum
is durable but the nonce is not.

This changes the encrypted format in two ways: The nonce will be written
before the checksum, and it will be included in the checksum.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, the 8-byte nonce after each mini-transaction was not covered
by the mini-transaction checksum. That could cause catastrophic failure
when the server was killed at a time where the write of the checksum
is durable but the nonce is not.

This changes the encrypted format in two ways: The nonce will be written
before the checksum, and it will be included in the checksum.
</pre>
</div>
</content>
</entry>
<entry>
<title>squash! dbb8f6f5f9a1979d9b953563f3ee48cb88df61b3 Avoid locks on PMEM</title>
<updated>2022-01-12T17:36:43+00:00</updated>
<author>
<name>Marko Mäkelä</name>
<email>marko.makela@mariadb.com</email>
</author>
<published>2022-01-12T17:36:43+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/mariadb-git.git/commit/?id=0a7088d7ae702fd95eb4f607836d1dd5070e808e'/>
<id>0a7088d7ae702fd95eb4f607836d1dd5070e808e</id>
<content type='text'>
Using neither flush_lock nor write_lock around PMEM writes seems
to yield the best performance. It still is somewhat slower than
the pwrite() and fdatasync() based interface. Maybe some CLDEMOTE
in mtr_t::commit() would help?
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Using neither flush_lock nor write_lock around PMEM writes seems
to yield the best performance. It still is somewhat slower than
the pwrite() and fdatasync() based interface. Maybe some CLDEMOTE
in mtr_t::commit() would help?
</pre>
</div>
</content>
</entry>
<entry>
<title>Correct Innodb_log_write_requests</title>
<updated>2022-01-11T15:50:52+00:00</updated>
<author>
<name>Marko Mäkelä</name>
<email>marko.makela@mariadb.com</email>
</author>
<published>2022-01-11T15:50:52+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/mariadb-git.git/commit/?id=c1884122d70683c01003362a0660940515407beb'/>
<id>c1884122d70683c01003362a0660940515407beb</id>
<content type='text'>
log_close(): Update log_sys.write_to_buf.

mtr_t::commit(): Remove the conditional update of log_sys.write_to_buf.
We do write to the log even if we are not marking pages modified for
the first time.

mtr_t::commit_shrink(): Let log_close() in mtr_t::finish_write() update
log_sys.write_to_buf.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
log_close(): Update log_sys.write_to_buf.

mtr_t::commit(): Remove the conditional update of log_sys.write_to_buf.
We do write to the log even if we are not marking pages modified for
the first time.

mtr_t::commit_shrink(): Let log_close() in mtr_t::finish_write() update
log_sys.write_to_buf.
</pre>
</div>
</content>
</entry>
<entry>
<title>On Linux, only enable O_DIRECT on the log for innodb_flush_method=O_DSYNC</title>
<updated>2022-01-11T13:55:05+00:00</updated>
<author>
<name>Marko Mäkelä</name>
<email>marko.makela@mariadb.com</email>
</author>
<published>2022-01-11T13:55:05+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/mariadb-git.git/commit/?id=3135e5e14e12fbb22097886033ba2a830e2bb3e3'/>
<id>3135e5e14e12fbb22097886033ba2a830e2bb3e3</id>
<content type='text'>
A quick test with the log on a PCIe NVMe drive yields the best
throughput without O_DIRECT. With O_DIRECT|O_DSYNC
(enabled by innodb_flush_method=O_DSYNC) both the average and
the maximum throughput are a little faster.

The slowest would be O_DIRECT without O_DSYNC.
Hence, it probably is better to not use O_DIRECT on the log file
when not also setting O_DSYNC.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A quick test with the log on a PCIe NVMe drive yields the best
throughput without O_DIRECT. With O_DIRECT|O_DSYNC
(enabled by innodb_flush_method=O_DSYNC) both the average and
the maximum throughput are a little faster.

The slowest would be O_DIRECT without O_DSYNC.
Hence, it probably is better to not use O_DIRECT on the log file
when not also setting O_DSYNC.
</pre>
</div>
</content>
</entry>
<entry>
<title>squash! f7834884d3c31163cdc722065b8f998adb1844cd Proper fix</title>
<updated>2022-01-11T13:37:10+00:00</updated>
<author>
<name>Marko Mäkelä</name>
<email>marko.makela@mariadb.com</email>
</author>
<published>2022-01-11T13:37:10+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/mariadb-git.git/commit/?id=23bce2eb8aabe6effe5f5c5474510f70bf978a06'/>
<id>23bce2eb8aabe6effe5f5c5474510f70bf978a06</id>
<content type='text'>
mtr_t::finish_write(): Avoid invoking
log_sys.set_check_flush_or_checkpoint() if log_sys.is_pmem().
The log_sys.max_buf_free has no meaning on the mmap-based log.

With this, the mmap-based log writes are finally faster than the
pwrite() and fdatasync() based writes.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
mtr_t::finish_write(): Avoid invoking
log_sys.set_check_flush_or_checkpoint() if log_sys.is_pmem().
The log_sys.max_buf_free has no meaning on the mmap-based log.

With this, the mmap-based log writes are finally faster than the
pwrite() and fdatasync() based writes.
</pre>
</div>
</content>
</entry>
<entry>
<title>Performance: Use pmem_persist() instead of pmem_deep_persist()</title>
<updated>2022-01-11T10:08:11+00:00</updated>
<author>
<name>Marko Mäkelä</name>
<email>marko.makela@mariadb.com</email>
</author>
<published>2022-01-11T10:08:11+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/mariadb-git.git/commit/?id=81cf92e9471250790330daf15e992c5250e58ddd'/>
<id>81cf92e9471250790330daf15e992c5250e58ddd</id>
<content type='text'>
One PMEM device would deliver about 800 transaction commits per second
with pmem_deep_persist() and about 127,000 commits per second with
pmem_persist().

We will basically assume that the PMEM device does not lose writes
on power loss, just like the previous interface
pmem_memcpy_persist() did.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
One PMEM device would deliver about 800 transaction commits per second
with pmem_deep_persist() and about 127,000 commits per second with
pmem_persist().

We will basically assume that the PMEM device does not lose writes
on power loss, just like the previous interface
pmem_memcpy_persist() did.
</pre>
</div>
</content>
</entry>
<entry>
<title>mtr_t::finish_write(): Add a futile optimization attempt</title>
<updated>2022-01-11T09:31:57+00:00</updated>
<author>
<name>Marko Mäkelä</name>
<email>marko.makela@mariadb.com</email>
</author>
<published>2022-01-11T09:31:57+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/mariadb-git.git/commit/?id=f7834884d3c31163cdc722065b8f998adb1844cd'/>
<id>f7834884d3c31163cdc722065b8f998adb1844cd</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>squash! 5dda68150bca33c0678422e6660bc17687337dcb Use flush_lock also on PMEM</title>
<updated>2022-01-11T09:30:55+00:00</updated>
<author>
<name>Marko Mäkelä</name>
<email>marko.makela@mariadb.com</email>
</author>
<published>2022-01-11T09:30:55+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/mariadb-git.git/commit/?id=dbb8f6f5f9a1979d9b953563f3ee48cb88df61b3'/>
<id>dbb8f6f5f9a1979d9b953563f3ee48cb88df61b3</id>
<content type='text'>
Invoking pmem_deep_persist() turns out to make things very slow
on PMEM. It is better to always use flush_lock for group commit.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Invoking pmem_deep_persist() turns out to make things very slow
on PMEM. It is better to always use flush_lock for group commit.
</pre>
</div>
</content>
</entry>
<entry>
<title>fixup! 5dda68150bca33c0678422e6660bc17687337dcb</title>
<updated>2022-01-10T16:39:04+00:00</updated>
<author>
<name>Marko Mäkelä</name>
<email>marko.makela@mariadb.com</email>
</author>
<published>2022-01-10T16:39:04+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/mariadb-git.git/commit/?id=1bf129ad338233d84939e1ca71c67387e12e86a2'/>
<id>1bf129ad338233d84939e1ca71c67387e12e86a2</id>
<content type='text'>
Actually use group commit in trx_flush_log_if_needed_low()
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Actually use group commit in trx_flush_log_if_needed_low()
</pre>
</div>
</content>
</entry>
</feed>
