[MDEV-22669] InnoDB lacks CRC-32C acceleration on IA-32 Created: 2020-05-22 Updated: 2020-10-07 Resolved: 2020-05-23 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Storage Engine - InnoDB, Storage Engine - XtraDB |
| Affects Version/s: | 10.0, 10.1, 10.2, 10.3, 10.4, 10.5 |
| Fix Version/s: | 10.5.4 |
| Type: | Bug | Priority: | Major |
| Reporter: | Marko Mäkelä | Assignee: | Marko Mäkelä |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | performance, upstream | ||
| Issue Links: |
|
||||||||||||||||||||
| Description |
|
MySQL 5.6 introduced innodb_checksum_algorithm=crc32 and implemented it for AMD64 using the SSE 4.2 instructions (incorrectly advertised as "SSE2" in a startup message). It was not implemented on IA-32 or on Windows. Since MariaDB 10.2.11, MariaDB makes use of the SSE4.2 CRC-32C instructions on Windows on both IA-32 and AMD64. Let us be consistent and implement CRC-32C for IA-32 on all available platforms. |
| Comments |
| Comment by Marko Mäkelä [ 2020-05-23 ] | ||||
|
While evaluating the results, I noticed that on buildbot.askmonty.org, all AMD64/IA-32 platforms except Windows fail to enable the optimization:
The above log is from 10.2, where the CPUID check is present for AMD64. I also downloaded a kvm-deb-xenial-x86 package of mariadb-server-core-10.5_10.5.4+maria~xenial_i386.deb with my change, and checked the generated code. The CPUID instruction is present, and the code around it looks correct to me. On buildbot.mariadb.org (which uses Docker images rather than virtual machines), we do see the expected message:
|