Skip to content

Commit

Permalink
Merge pull request #679 from jmrenouard/master
Browse files Browse the repository at this point in the history
Fixing wrong calculation in memory usage (regression found)
  • Loading branch information
jmrenouard committed Jun 18, 2023
2 parents 8ab7f3e + aa8e2bd commit 5ccb6f9
Showing 1 changed file with 32 additions and 21 deletions.
53 changes: 32 additions & 21 deletions mysqltuner.pl
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/usr/bin/env perl
# mysqltuner.pl - Version 2.1.6
# mysqltuner.pl - Version 2.1.7
# High Performance MySQL Tuning Script
# Copyright (C) 2006-2023 Major Hayden - [email protected]
# Copyright (C) 2015-2023 Jean-Marie Renouard - [email protected]
Expand Down Expand Up @@ -57,7 +57,7 @@ package main;
#use Env;

# Set up a few variables for use in the script
my $tunerversion = "2.1.6";
my $tunerversion = "2.1.7";
my ( @adjvars, @generalrec );

# Set defaults
Expand Down Expand Up @@ -334,7 +334,21 @@ ()
return 0 if ( $host eq '127.0.0.1' );
return 1;
}
sub is_int {
return 0 unless defined $_[0];
my $str = $_[0];
#trim whitespace both sides
$str =~ s/^\s+|\s+$//g;

#Alternatively, to match any float-like numeric, use:
# m/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/

#flatten to string and match dash or plus and one or more digits
if ($str =~ /^(\-|\+)?\d+?$/) {
return 1;
}
return 0;
}
# Calculates the number of physical cores considering HyperThreading
sub cpu_cores {
if ( $^O eq 'linux' ) {
Expand Down Expand Up @@ -2730,26 +2744,23 @@ sub calculations {
}

# Per-thread memory
# Per-thread memory
if ( mysql_version_ge(4) ) {
$mycalc{'per_thread_buffers'} =
$myvar{'read_buffer_size'} +
$myvar{'read_rnd_buffer_size'} +
$myvar{'sort_buffer_size'} +
$myvar{'thread_stack'} +
$myvar{'max_allowed_packet'} +
$myvar{'join_buffer_size'};
}
else {
$mycalc{'per_thread_buffers'} =
$myvar{'record_buffer'} +
$myvar{'record_rnd_buffer'} +
$myvar{'sort_buffer'} +
$myvar{'thread_stack'} +
$myvar{'join_buffer_size'};
}
$mycalc{'per_thread_buffers'} = 0;
$mycalc{'per_thread_buffers'} += $myvar{'read_buffer_size'} if is_int($myvar{'read_buffer_size'});
$mycalc{'per_thread_buffers'} += $myvar{'read_rnd_buffer_size'} if is_int($myvar{'read_rnd_buffer_size'});
$mycalc{'per_thread_buffers'} += $myvar{'sort_buffer_size'} if is_int($myvar{'sort_buffer_size'});
$mycalc{'per_thread_buffers'} += $myvar{'thread_stack'} if is_int($myvar{'thread_stack'});
$mycalc{'per_thread_buffers'} += $myvar{'join_buffer_size'} if is_int($myvar{'join_buffer_size'});
$mycalc{'per_thread_buffers'} += $myvar{'binlog_cache_size'} if is_int($myvar{'binlog_cache_size'});
debugprint "per_thread_buffers: $mycalc{'per_thread_buffers'} (" .human_size($mycalc{'per_thread_buffers'} ) ." )";

# Error max_allowed_packet is not included in thread buffers size
#$mycalc{'per_thread_buffers'} += $myvar{'max_allowed_packet'} if is_int($myvar{'max_allowed_packet'});

# Total per-thread memory
$mycalc{'total_per_thread_buffers'} =
$mycalc{'per_thread_buffers'} * $myvar{'max_connections'};

# Max total per-thread memory reached
$mycalc{'max_total_per_thread_buffers'} =
$mycalc{'per_thread_buffers'} * $mystat{'Max_used_connections'};

Expand Down Expand Up @@ -7059,7 +7070,7 @@ sub which {
=head1 NAME
MySQLTuner 2.1.6 - MySQL High Performance Tuning Script
MySQLTuner 2.1.7 - MySQL High Performance Tuning Script
=head1 IMPORTANT USAGE GUIDELINES
Expand Down

0 comments on commit 5ccb6f9

Please sign in to comment.