Details
-
New Feature
-
Status: Open (View Workflow)
-
Major
-
Resolution: Unresolved
Description
Description
Enable the buffer pool to adjust innodb_buffer_pool_size based on available RAM, targeting 75-80% by default, with configurable scaling factors and limits for stability. See https://jira.mariadb.org/browse/MDEV-36194 for more information on use case.
Tasks
- Implement periodic RAM detection (e.g., via syscalls or OS notifications).
Add system variables: - buffer_pool_auto_scale_method=
{OFF, RAM_percentage}
(default: OFF).
- buffer_pool_auto_scale_factor=N (default: 0.75, range: 0.1–1.0).
- buffer_pool_min_size (default: 128MB), buffer_pool_max_size (default: unlimited).
- Set innodb_buffer_pool_size = RAM * buffer_pool_auto_scale_factor, respecting limits.
- Reject manual SET GLOBAL innodb_buffer_pool_size when auto-scaling is active.
- Make polling frequency configurable (e.g., once per second, per minute), defaulting to once per minute.
Acceptance Criteria
- buffer_pool_auto_scale_method=RAM_percentage activates RAM-based scaling.
- Example: 16GB RAM, buffer_pool_auto_scale_factor=0.75, innodb_buffer_pool_size=12GB.
- buffer_pool_auto_scale_factor configurable between 0.1–1.0.
- Respects buffer_pool_min_size and buffer_pool_max_size.
- Manual SET GLOBAL innodb_buffer_pool_size fails with an error.
- Ensure the system variables are manually configurable.
Attachments
Issue Links
- blocks
-
MDEV-36194 Automatic Scaling for Dynamic Environments
-
- Open
-
- is blocked by
-
MDEV-29445 reorganise innodb buffer pool (and remove buffer pool chunks)
-
- Closed
-
-
MDEV-34863 RAM Usage Changed Significantly Between 10.11 Releases
-
- Closed
-
- relates to
-
MDEV-24670 avoid OOM by linux kernel co-operative memory management
-
- Closed
-
Activity
Field | Original Value | New Value |
---|---|---|
Link | This issue blocks MDEV-36194 [ MDEV-36194 ] |
Assignee | Vladislav Vaintroub [ wlad ] | Marko Mäkelä [ marko ] |
Labels | server | innodb |
Component/s | Storage Engine - InnoDB [ 10129 ] |
Labels | innodb |
Description |
*Description*
Enable the buffer pool to adjust innodb_buffer_pool_size based on available RAM, targeting 75-80% by default, with configurable scaling factors and limits for stability. *Tasks* # Implement periodic RAM detection (e.g., via syscalls or OS notifications). Add system variables: # buffer_pool_auto_scale_method={OFF, RAM_percentage} (default: OFF). # buffer_pool_auto_scale_factor=N (default: 0.75, range: 0.1–1.0). # buffer_pool_min_size (default: 128MB), buffer_pool_max_size (default: unlimited). # Set innodb_buffer_pool_size = RAM * buffer_pool_auto_scale_factor, respecting limits. # Reject manual SET GLOBAL innodb_buffer_pool_size when auto-scaling is active. # Make polling frequency configurable (e.g., once per second, per minute), defaulting to once per minute. *Acceptance Criteria* # buffer_pool_auto_scale_method=RAM_percentage activates RAM-based scaling. # Example: 16GB RAM, buffer_pool_auto_scale_factor=0.75, innodb_buffer_pool_size=12GB. # buffer_pool_auto_scale_factor configurable between 0.1–1.0. # Respects buffer_pool_min_size and buffer_pool_max_size. # Manual SET GLOBAL innodb_buffer_pool_size fails with an error. |
*Description*
Enable the buffer pool to adjust innodb_buffer_pool_size based on available RAM, targeting 75-80% by default, with configurable scaling factors and limits for stability. See https://jira.mariadb.org/browse/MDEV-36194 for more information on use case. *Tasks* # Implement periodic RAM detection (e.g., via syscalls or OS notifications). Add system variables: # buffer_pool_auto_scale_method={OFF, RAM_percentage} (default: OFF). # buffer_pool_auto_scale_factor=N (default: 0.75, range: 0.1–1.0). # buffer_pool_min_size (default: 128MB), buffer_pool_max_size (default: unlimited). # Set innodb_buffer_pool_size = RAM * buffer_pool_auto_scale_factor, respecting limits. # Reject manual SET GLOBAL innodb_buffer_pool_size when auto-scaling is active. # Make polling frequency configurable (e.g., once per second, per minute), defaulting to once per minute. *Acceptance Criteria* # buffer_pool_auto_scale_method=RAM_percentage activates RAM-based scaling. # Example: 16GB RAM, buffer_pool_auto_scale_factor=0.75, innodb_buffer_pool_size=12GB. # buffer_pool_auto_scale_factor configurable between 0.1–1.0. # Respects buffer_pool_min_size and buffer_pool_max_size. # Manual SET GLOBAL innodb_buffer_pool_size fails with an error. |
Labels | kubernetes performance server |
Link |
This issue relates to |
Link |
This issue relates to |
Link |
This issue relates to |
Link |
This issue is blocked by |
Link |
This issue is blocked by |
Description |
*Description*
Enable the buffer pool to adjust innodb_buffer_pool_size based on available RAM, targeting 75-80% by default, with configurable scaling factors and limits for stability. See https://jira.mariadb.org/browse/MDEV-36194 for more information on use case. *Tasks* # Implement periodic RAM detection (e.g., via syscalls or OS notifications). Add system variables: # buffer_pool_auto_scale_method={OFF, RAM_percentage} (default: OFF). # buffer_pool_auto_scale_factor=N (default: 0.75, range: 0.1–1.0). # buffer_pool_min_size (default: 128MB), buffer_pool_max_size (default: unlimited). # Set innodb_buffer_pool_size = RAM * buffer_pool_auto_scale_factor, respecting limits. # Reject manual SET GLOBAL innodb_buffer_pool_size when auto-scaling is active. # Make polling frequency configurable (e.g., once per second, per minute), defaulting to once per minute. *Acceptance Criteria* # buffer_pool_auto_scale_method=RAM_percentage activates RAM-based scaling. # Example: 16GB RAM, buffer_pool_auto_scale_factor=0.75, innodb_buffer_pool_size=12GB. # buffer_pool_auto_scale_factor configurable between 0.1–1.0. # Respects buffer_pool_min_size and buffer_pool_max_size. # Manual SET GLOBAL innodb_buffer_pool_size fails with an error. |
*Description*
Enable the buffer pool to adjust innodb_buffer_pool_size based on available RAM, targeting 75-80% by default, with configurable scaling factors and limits for stability. See https://jira.mariadb.org/browse/MDEV-36194 for more information on use case. *Tasks* # Implement periodic RAM detection (e.g., via syscalls or OS notifications). Add system variables: # buffer_pool_auto_scale_method={OFF, RAM_percentage} (default: OFF). # buffer_pool_auto_scale_factor=N (default: 0.75, range: 0.1–1.0). # buffer_pool_min_size (default: 128MB), buffer_pool_max_size (default: unlimited). # Set innodb_buffer_pool_size = RAM * buffer_pool_auto_scale_factor, respecting limits. # Reject manual SET GLOBAL innodb_buffer_pool_size when auto-scaling is active. # Make polling frequency configurable (e.g., once per second, per minute), defaulting to once per minute. *Acceptance Criteria* # buffer_pool_auto_scale_method=RAM_percentage activates RAM-based scaling. # Example: 16GB RAM, buffer_pool_auto_scale_factor=0.75, innodb_buffer_pool_size=12GB. # buffer_pool_auto_scale_factor configurable between 0.1–1.0. # Respects buffer_pool_min_size and buffer_pool_max_size. # Manual SET GLOBAL innodb_buffer_pool_size fails with an error. # Ensure the system variables are manually configurable. |
Fix Version/s | 12.3 [ 30147 ] |
I think that this depends on
MDEV-29445, which is currently under review. The current implementation includes a fix ofMDEV-34863, which is revising the handling of Linux memory pressure events. With that revision, that interface would be disabled by default. There would be a parameter that would specify the minimum innodb_buffer_pool_size that a memory pressure event could shrink the buffer pool to, and no mechanism for setting the buffer pool size back.