[MDEV-27702] Innodb Purge is very slow on 64-bit Arm architecture Created: 2022-02-01 Updated: 2022-02-02 |
|
| Status: | Open |
| Project: | MariaDB Server |
| Component/s: | Server |
| Affects Version/s: | 10.4.21, 10.4.22, 10.6.5 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Niranjan | Assignee: | Unassigned |
| Resolution: | Unresolved | Votes: | 1 |
| Labels: | performance | ||
| Environment: |
64-bit Arm architecture |
||
| Attachments: |
|
| Description |
sysbench ./oltp_read_write.lua --db-driver=mysql --mysql-db=test --mysql-user=root --mysql-password=***** --mysql-host=172.31.35.75 --table_size=16600000 --tables=10 prepare --threads=5
tbd-mar-hll-10421> show global variables like '%purge%';
-------------------------------------
------------------------------------- |
| Comments |
| Comment by Niranjan [ 2022-02-01 ] |
|
Modifying the purge configurations such as "innodb_purge_threads" and/or having more number of CPU cores indeed makes the purge faster. Having said that, the main concern is the performance difference between "x86_64" and "arm64" machines. In the above(sysbench) test : |
| Comment by Krunal Bauskar [ 2022-02-02 ] |
|
1. Issue is that purge is slow is on ARM (when compared to x86). 2. So I tried running an extended workload to help trace how the history length continues to reduce over a period of time. <NOTE: My ARM and x86 VM are not comparable so don't compare the tps directly but they have same number of cores and same kind of Cloud Disk> Check the graph attached. I see ARM continue to purge as quickly as x86. I don't have a that small VM so I have used VM with 24 cores out of which 20 cores are allotted to server and 4 for sysbench workload. Quick note about workload: 5 round of 300 sec each with 20 sec gap after each round and then just continue to monitor stats (like history-length, etc..) for another 100 secs. |
| Comment by Krunal Bauskar [ 2022-02-02 ] |
|
I am not sure why someone would like to measure history length during the loading of the data (given it hardly grow the significant level) but assuming there is use-case I tried to measure the same too as suggested in the original text. |
| Comment by Marko Mäkelä [ 2022-02-02 ] |
|
Thank you for checking this, krunalbauskar. The difference could very well be due to something else than the instruction set architecture or its implementation in a CPU core. If the ARM system has only 2 ARMv8 cores, then I would think that it should be compared to a similar AMD64 implementation. I see that all Intel Atom products that were launched in 2021 feature 2 or 4 cores. A dual-core Atom might be more comparable to a 2-core ARMv8 system. Also the I/O and memory bus architecture could play a significant role. When it comes to sysbench prepare, it could be sped up in MariaDB 10.6 and later by applying a change like this to enable the use of bulk insert. In 10.6, that will disable row-level undo logging when inserting into an empty table. |