Skip to content

Commit c43fc4b

Browse files
authored
Merge pull request #10 from jmrenouard/feature/cpu-aware-innodb-instances
Improve innodb_buffer_pool_instances recommendation
2 parents dabb226 + f808f73 commit c43fc4b

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

mysqltuner.pl

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5933,7 +5933,7 @@ sub mariadb_xtradb {
59335933
infoprint "XtraDB is enabled.";
59345934
infoprint "Note that MariaDB 10.2 makes use of InnoDB, not XtraDB."
59355935

5936-
# Not implemented
5936+
# Not implemented
59375937
}
59385938

59395939
# Recommendations for RocksDB
@@ -6762,6 +6762,15 @@ sub mysql_innodb {
67626762
# InnoDB Buffer Pool Size > 64Go
67636763
my $max_innodb_buffer_pool_instances =
67646764
int( $myvar{'innodb_buffer_pool_size'} / ( 1024 * 1024 * 1024 ) );
6765+
6766+
my $nb_cpus = cpu_cores();
6767+
if ( $nb_cpus > 0 && $max_innodb_buffer_pool_instances > $nb_cpus )
6768+
{
6769+
infoprint
6770+
"Recommendation for innodb_buffer_pool_instances is capped by the number of CPU cores ($nb_cpus).";
6771+
$max_innodb_buffer_pool_instances = $nb_cpus;
6772+
}
6773+
67656774
$max_innodb_buffer_pool_instances = 64
67666775
if ( $max_innodb_buffer_pool_instances > 64 );
67676776

@@ -6803,7 +6812,7 @@ sub mysql_innodb {
68036812
infoprint
68046813
"innodb_buffer_pool_chunk_size is set to 'autosize' (0) in MariaDB >= 10.8. Skipping chunk size checks.";
68056814
}
6806-
elsif (!defined( $myvar{'innodb_buffer_pool_chunk_size'} )
6815+
elsif ( !defined( $myvar{'innodb_buffer_pool_chunk_size'} )
68076816
|| $myvar{'innodb_buffer_pool_chunk_size'} == 0
68086817
|| !defined( $myvar{'innodb_buffer_pool_size'} )
68096818
|| $myvar{'innodb_buffer_pool_size'} == 0
@@ -7635,15 +7644,17 @@ sub dump_result {
76357644
}
76367645

76377646
my $json = JSON->new->allow_nonref;
7638-
print $json->utf8(1)->pretty( ( $opt{'prettyjson'} ? 1 : 0 ) )
7647+
print $json->utf8(1)
7648+
->pretty( ( $opt{'prettyjson'} ? 1 : 0 ) )
76397649
->encode( \%result );
76407650

76417651
if ( $opt{'outputfile'} ne 0 ) {
76427652
unlink $opt{'outputfile'} if ( -e $opt{'outputfile'} );
76437653
open my $fh, q(>), $opt{'outputfile'}
76447654
or die
76457655
"Unable to open $opt{'outputfile'} in write mode. please check permissions for this file or directory";
7646-
print $fh $json->utf8(1)->pretty( ( $opt{'prettyjson'} ? 1 : 0 ) )
7656+
print $fh $json->utf8(1)
7657+
->pretty( ( $opt{'prettyjson'} ? 1 : 0 ) )
76477658
->encode( \%result );
76487659
close $fh;
76497660
}

0 commit comments

Comments
 (0)