[MDEV-7004] Merge scalability fixes from 10.0-power Created: 2014-11-01  Updated: 2014-12-05  Resolved: 2014-12-05

Status: Closed
Project: MariaDB Server
Component/s: OTHER
Fix Version/s: 10.1.2

Type: Task Priority: Blocker
Reporter: Sergey Vojtovich Assignee: Sergey Vojtovich
Resolution: Fixed Votes: 0
Labels: None

Issue Links:
Relates
relates to MDEV-6478 MariaDB on Power8 Closed

 Description   

Please review scalability fixes from 10.0-power. Since fixes are ongoing, better to review them at some point close to 10.1 feature freeze.

At the moment of writing in certain cases 10.0-power shows about 60% better throughput compared to plain 10.0 (17kTPS -> 27kTPS) on Power8.



 Comments   
Comment by Sergey Vojtovich [ 2014-12-02 ]

Raising priority to blocker to make sure these patches will be pushed into the next 10.1 release.

Comment by Sergey Vojtovich [ 2014-12-05 ]

Pushed most of the fixes to 10.1.2:

commit 78564373fee5e6cccf144b11bc60b0876b4bbd0b
Author: Monty <monty@mariadb.org>
Date:   Fri Aug 29 14:07:43 2014 +0300
 
    my_alloc.c
    - Changed 0x%lx -> %p
    array.c:
    - Static (preallocated) buffer can now be anywhere
    my_sys.h
    - Define MY_INIT_BUFFER_USED
    sql_delete.cc & sql_lex.cc
    - Use memroot when allocating classes (avoids call to current_thd)
    sql_explain.h:
    - Use preallocated buffers
    sql_explain.cc:
    - Use preallocated buffers and memroot
    sql_select.cc:
    - Use multi_alloc_root() instead of many alloc_root()
    - Update calls to Explain
 
commit 3392278c869a9594f13a0b956d34efb600ab0ed0
Author: Sergey Vojtovich <svoj@mariadb.org>
Date:   Thu Dec 4 17:44:46 2014 +0400
 
    MDEV-7004 - Merge scalability fixes from 10.0-power
 
    Preallocate dynamic array and bitmap on mem_root to avoid expensive malloc.
    This reduces number of allocations from 39 to 31 per OLTP RO transaction.
 
commit eaa8c154e81cb3a9a2623f53482fe2bbd9ffa459
Author: Sergey Vojtovich <svoj@mariadb.org>
Date:   Thu Dec 4 17:42:32 2014 +0400
 
    MDEV-7004 - Merge scalability fixes from 10.0-power
 
    Preallocate dynamic array on THD mem_root to avoid expensive malloc.
 
commit 070a6e7a890e5a73eb38920657c060605e520b55
Author: Monty <monty@mariadb.org>
Date:   Fri Aug 29 14:09:51 2014 +0300
 
    - Changed default values of query_prealloc_size and query_alloc_block_size
    so that a simple query with one join would not have to call my_malloc.
    - Allow lower limites for query_prealloc_size for testing.
    - Fixed wrong initialization of trans_alloc_block_size
 
commit 9127784d5ce845c9d66a34eee371cbaf82468d89
Author: Sergey Vojtovich <svoj@mariadb.org>
Date:   Thu Dec 4 17:35:55 2014 +0400
 
    Cherry pick dynamic array changes from commit:
 
    commit 85fd3d901311688e18ffce92ffc78129e5625791
    Author: Monty <monty@mariadb.org>
    Date:   Fri Aug 29 14:07:43 2014 +0300
 
        my_alloc.c
        - Changed 0x%lx -> %p
        array.c:
        - Static (preallocated) buffer can now be anywhere
        my_sys.h
        - Define MY_INIT_BUFFER_USED
        sql_delete.cc & sql_lex.cc
        - Use memroot when allocating classes (avoids call to current_thd)
        sql_explain.h:
        - Use preallocated buffers
        sql_explain.cc:
        - Use preallocated buffers and memroot
        sql_select.cc:
        - Use multi_alloc_root() instead of many alloc_root()
        - Update calls to Explain
 
commit 974808772b63563d031f687fd0fd158f83eb94aa
Author: Sergey Vojtovich <svoj@mariadb.org>
Date:   Tue Dec 2 15:03:35 2014 +0400
 
    MDEV-7004 - Merge scalability fixes from 10.0-power
 
    All callers of open_cached_file() use 2 characters prefix. Allocating memory for
    such short string is an overkill. Store it on IO_CACHE structure instead.
 
    All callers of open_cached_file() use mysql_tmpdir as dir. No need to allocate
    memory for it since it is constant and available till server shutdown.
 
    This reduces number of allocations from 31 to 27 per OLTP RO transaction.
 
commit 9e9f1da0d2dd5d9de9094d20d0b39e71ec4ce479
Author: Sergey Vojtovich <svoj@mariadb.org>
Date:   Tue Dec 2 14:59:01 2014 +0400
 
    MDEV-7004 - Merge scalability fixes from 10.0-power
 
    Remove call to deprecated set_thread_state. It is noop anyway, but generates
    function call independently of performance schema state. According to perf
    this saves ~0.2% of execution time.
 
commit b4ec230917a50cbc1e406f5175189c8359bcb9a0
Author: Sergey Vojtovich <svoj@mariadb.org>
Date:   Tue Dec 2 14:54:30 2014 +0400
 
    MDEV-7004 - Merge scalability fixes from 10.0-power
 
    Preallocate locks on THD mem_root to avoid expensive malloc.
 
commit 9bc5cec0f115d7d0c277a49b91b96109560280f4
Author: Sergey Vojtovich <svoj@mariadb.org>
Date:   Tue Dec 2 14:50:18 2014 +0400
 
    MDEV-7004 - Merge scalability fixes from 10.0-power
 
    Preallocate locks on THD mem_root to avoid expensive malloc.

Generated at Thu Feb 08 07:16:13 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.