mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-09-09 18:30:16 +00:00
Compare commits
36 Commits
pmm-2.32.0
...
set_3.5.0_
Author | SHA1 | Date | |
---|---|---|---|
![]() |
3b52114e93 | ||
![]() |
7e5c51d0fb | ||
![]() |
e8977042d4 | ||
![]() |
ed030fa3fb | ||
![]() |
882d8787c7 | ||
![]() |
bc3056f29d | ||
![]() |
c9bf980ef5 | ||
![]() |
b737f2cf9e | ||
![]() |
2f5a17b173 | ||
![]() |
03ab27228f | ||
![]() |
cf8f824d5e | ||
![]() |
1828526319 | ||
![]() |
a569c929eb | ||
![]() |
9bd0fef2c2 | ||
![]() |
60b3750d96 | ||
![]() |
cceb48619f | ||
![]() |
26522d20fd | ||
![]() |
db32ba584b | ||
![]() |
ec9cc2c910 | ||
![]() |
bc054ecaf7 | ||
![]() |
cc5bfbe39f | ||
![]() |
210aafa85a | ||
![]() |
a9e321b6a2 | ||
![]() |
e4ded8fc75 | ||
![]() |
e4fc31c047 | ||
![]() |
0e656391fa | ||
![]() |
af0ada1167 | ||
![]() |
9cb28ef20a | ||
![]() |
3458809530 | ||
![]() |
ed024d7bfa | ||
![]() |
19aa46d1a5 | ||
![]() |
a950b223ff | ||
![]() |
ac3843bcb7 | ||
![]() |
896fdcede8 | ||
![]() |
8ebc9534c6 | ||
![]() |
07ee5eb1bf |
22
Changelog
22
Changelog
@@ -1,5 +1,27 @@
|
||||
Changelog for Percona Toolkit
|
||||
|
||||
v3.5.0 release 2022-11-28
|
||||
|
||||
* Improvement PT-1052: Include NUMA information in pt-tool output
|
||||
* Improvement PT-1926: pt-k8s-debug-collector should not collect passwords
|
||||
* Improvement PT-2033: Avoid running same query concurrently from pt-stalk
|
||||
* Improvement PT-2105: Let pt-k8-debug-collector to collect individual logs in PXC pods in addition to `kubectl logs`
|
||||
* Improvement PT-2107: Merge Community PRs 466, 298, 58, 53 into 3.x
|
||||
* Improvement PT-2080: Add JSON logging to pt-kill (Thanks dm-2)
|
||||
* Improvement PT-2091: Migrate docs to Render
|
||||
* Fixed bug PT-1739: disable-qrt-plugin option of pt-table-checksum is broken (Thanks E. Souhrada)
|
||||
* Fixed bug PT-1799: pt-osc + PTDEBUG=1 fails with Use of uninitialized value in concatenation (.) or string at /usr/bin/pt-online-schema-change line 4270
|
||||
* Fixed bug PT-1897: pt-stalk on MySQL 8 not collecting "lock" information
|
||||
* Fixed bug PT-1959: go part of the toolkit still has the version 3.3.0
|
||||
* Fixed bug PT-2075: Fix tests for pt-stalk, so they can work with 8.0
|
||||
* Fixed bug PT-2092: Improper version of protobuf in go.sum
|
||||
* Fixed bug PT-2125: Documentation outdated or missed for tools, written in Go
|
||||
* Fixed bug PT-2086: Typos (Thanks Iwo Panowicz)
|
||||
* Fixed bug PR-553: Fix some typos in documentation of pt-query-digest (Thanks Christian Bartolomäus)
|
||||
* Fixed bug PR-53: Docs table regex (Thanks Daniël van Eeden)
|
||||
* Fixed bug PR-58: Correcting specified package type in error message (Thanks Daniel Hoherd)
|
||||
* Fixed bug PR-298: Fix typo (Thanks Moritz Lenz)
|
||||
|
||||
v3.4.0 release 2022-07-11
|
||||
|
||||
* New Tool PT-1978: Add reporting on unused/redundant indexes for MongoDB by pt-mongodb-summary
|
||||
|
@@ -1,8 +1,8 @@
|
||||
use ExtUtils::MakeMaker;
|
||||
|
||||
WriteMakefile(
|
||||
NAME => 'percona-toolkit',
|
||||
VERSION => '3.4.0',
|
||||
NAME => 'Percona::Toolkit',
|
||||
VERSION => '3.5.0',
|
||||
EXE_FILES => [ <bin/*> ],
|
||||
MAN1PODS => {
|
||||
'docs/percona-toolkit.pod' => 'blib/man1/percona-toolkit.1p',
|
||||
|
@@ -1364,6 +1364,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-align 3.4.0
|
||||
pt-align 3.5.0
|
||||
|
||||
=cut
|
||||
|
@@ -37,15 +37,15 @@ BEGIN {
|
||||
# ###########################################################################
|
||||
# Percona::Toolkit package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/Percona/Toolkit.pm
|
||||
# t/lib/Percona/Toolkit.t
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.3.2';
|
||||
our $VERSION = '3.5.0';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -5561,7 +5561,7 @@ sub get_instances_to_check {
|
||||
my @instances_to_check;
|
||||
foreach my $instance ( @$instances ) {
|
||||
my $last_check_time = $last_check_time_for{ $instance->{id} };
|
||||
PTDEBUG && _d('Intsance', $instance->{id}, 'last checked',
|
||||
PTDEBUG && _d('Instance', $instance->{id}, 'last checked',
|
||||
$last_check_time, 'now', $now, 'diff', $now - ($last_check_time || 0),
|
||||
'hours until next check',
|
||||
sprintf '%.2f',
|
||||
@@ -8661,6 +8661,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-archiver 3.4.0
|
||||
pt-archiver 3.5.0
|
||||
|
||||
=cut
|
||||
|
@@ -35,15 +35,15 @@ BEGIN {
|
||||
# ###########################################################################
|
||||
# Percona::Toolkit package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/Percona/Toolkit.pm
|
||||
# t/lib/Percona/Toolkit.t
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.3.2';
|
||||
our $VERSION = '3.5.0';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -4875,7 +4875,7 @@ sub get_instances_to_check {
|
||||
my @instances_to_check;
|
||||
foreach my $instance ( @$instances ) {
|
||||
my $last_check_time = $last_check_time_for{ $instance->{id} };
|
||||
PTDEBUG && _d('Intsance', $instance->{id}, 'last checked',
|
||||
PTDEBUG && _d('Instance', $instance->{id}, 'last checked',
|
||||
$last_check_time, 'now', $now, 'diff', $now - ($last_check_time || 0),
|
||||
'hours until next check',
|
||||
sprintf '%.2f',
|
||||
@@ -5917,6 +5917,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-config-diff 3.4.0
|
||||
pt-config-diff 3.5.0
|
||||
|
||||
=cut
|
||||
|
@@ -34,15 +34,15 @@ BEGIN {
|
||||
# ###########################################################################
|
||||
# Percona::Toolkit package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/Percona/Toolkit.pm
|
||||
# t/lib/Percona/Toolkit.t
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.3.2';
|
||||
our $VERSION = '3.5.0';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -3939,7 +3939,7 @@ sub get_instances_to_check {
|
||||
my @instances_to_check;
|
||||
foreach my $instance ( @$instances ) {
|
||||
my $last_check_time = $last_check_time_for{ $instance->{id} };
|
||||
PTDEBUG && _d('Intsance', $instance->{id}, 'last checked',
|
||||
PTDEBUG && _d('Instance', $instance->{id}, 'last checked',
|
||||
$last_check_time, 'now', $now, 'diff', $now - ($last_check_time || 0),
|
||||
'hours until next check',
|
||||
sprintf '%.2f',
|
||||
@@ -5710,6 +5710,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-deadlock-logger 3.4.0
|
||||
pt-deadlock-logger 3.5.0
|
||||
|
||||
=cut
|
||||
|
@@ -30,15 +30,15 @@ BEGIN {
|
||||
# ###########################################################################
|
||||
# Percona::Toolkit package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/Percona/Toolkit.pm
|
||||
# t/lib/Percona/Toolkit.t
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.3.2';
|
||||
our $VERSION = '3.5.0';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -4475,7 +4475,7 @@ sub get_instances_to_check {
|
||||
my @instances_to_check;
|
||||
foreach my $instance ( @$instances ) {
|
||||
my $last_check_time = $last_check_time_for{ $instance->{id} };
|
||||
PTDEBUG && _d('Intsance', $instance->{id}, 'last checked',
|
||||
PTDEBUG && _d('Instance', $instance->{id}, 'last checked',
|
||||
$last_check_time, 'now', $now, 'diff', $now - ($last_check_time || 0),
|
||||
'hours until next check',
|
||||
sprintf '%.2f',
|
||||
@@ -5684,6 +5684,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-diskstats 3.4.0
|
||||
pt-diskstats 3.5.0
|
||||
|
||||
=cut
|
||||
|
@@ -31,15 +31,15 @@ BEGIN {
|
||||
# ###########################################################################
|
||||
# Percona::Toolkit package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/Percona/Toolkit.pm
|
||||
# t/lib/Percona/Toolkit.t
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.3.2';
|
||||
our $VERSION = '3.5.0';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -3240,10 +3240,10 @@ sub _d {
|
||||
# ###########################################################################
|
||||
# SchemaIterator package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/SchemaIterator.pm
|
||||
# t/lib/SchemaIterator.t
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
{
|
||||
package SchemaIterator;
|
||||
@@ -3648,7 +3648,7 @@ sub engine_is_allowed {
|
||||
my $filter = $self->{filters};
|
||||
|
||||
if ( $filter->{'ignore-engines'}->{$engine} ) {
|
||||
PTDEBUG && _d('Engine', $engine, 'is in --ignore-databases list');
|
||||
PTDEBUG && _d('Engine', $engine, 'is in --ignore-engines list');
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -4544,7 +4544,7 @@ sub get_instances_to_check {
|
||||
my @instances_to_check;
|
||||
foreach my $instance ( @$instances ) {
|
||||
my $last_check_time = $last_check_time_for{ $instance->{id} };
|
||||
PTDEBUG && _d('Intsance', $instance->{id}, 'last checked',
|
||||
PTDEBUG && _d('Instance', $instance->{id}, 'last checked',
|
||||
$last_check_time, 'now', $now, 'diff', $now - ($last_check_time || 0),
|
||||
'hours until next check',
|
||||
sprintf '%.2f',
|
||||
@@ -5771,6 +5771,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-duplicate-key-checker 3.4.0
|
||||
pt-duplicate-key-checker 3.5.0
|
||||
|
||||
=cut
|
||||
|
@@ -1653,6 +1653,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-fifo-split 3.4.0
|
||||
pt-fifo-split 3.5.0
|
||||
|
||||
=cut
|
||||
|
10
bin/pt-find
10
bin/pt-find
@@ -27,15 +27,15 @@ BEGIN {
|
||||
# ###########################################################################
|
||||
# Percona::Toolkit package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/Percona/Toolkit.pm
|
||||
# t/lib/Percona/Toolkit.t
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.3.2';
|
||||
our $VERSION = '3.5.0';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -3258,7 +3258,7 @@ sub get_instances_to_check {
|
||||
my @instances_to_check;
|
||||
foreach my $instance ( @$instances ) {
|
||||
my $last_check_time = $last_check_time_for{ $instance->{id} };
|
||||
PTDEBUG && _d('Intsance', $instance->{id}, 'last checked',
|
||||
PTDEBUG && _d('Instance', $instance->{id}, 'last checked',
|
||||
$last_check_time, 'now', $now, 'diff', $now - ($last_check_time || 0),
|
||||
'hours until next check',
|
||||
sprintf '%.2f',
|
||||
@@ -5132,6 +5132,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-find 3.4.0
|
||||
pt-find 3.5.0
|
||||
|
||||
=cut
|
||||
|
@@ -2262,6 +2262,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-fingerprint 3.4.0
|
||||
pt-fingerprint 3.5.0
|
||||
|
||||
=cut
|
||||
|
@@ -29,15 +29,15 @@ BEGIN {
|
||||
# ###########################################################################
|
||||
# Percona::Toolkit package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/Percona/Toolkit.pm
|
||||
# t/lib/Percona/Toolkit.t
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.3.2';
|
||||
our $VERSION = '3.5.0';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -3444,7 +3444,7 @@ sub get_instances_to_check {
|
||||
my @instances_to_check;
|
||||
foreach my $instance ( @$instances ) {
|
||||
my $last_check_time = $last_check_time_for{ $instance->{id} };
|
||||
PTDEBUG && _d('Intsance', $instance->{id}, 'last checked',
|
||||
PTDEBUG && _d('Instance', $instance->{id}, 'last checked',
|
||||
$last_check_time, 'now', $now, 'diff', $now - ($last_check_time || 0),
|
||||
'hours until next check',
|
||||
sprintf '%.2f',
|
||||
@@ -4693,6 +4693,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-fk-error-logger 3.4.0
|
||||
pt-fk-error-logger 3.5.0
|
||||
|
||||
=cut
|
||||
|
@@ -36,15 +36,15 @@ BEGIN {
|
||||
# ###########################################################################
|
||||
# Percona::Toolkit package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/Percona/Toolkit.pm
|
||||
# t/lib/Percona/Toolkit.t
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.3.2';
|
||||
our $VERSION = '3.5.0';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -5164,7 +5164,7 @@ sub get_instances_to_check {
|
||||
my @instances_to_check;
|
||||
foreach my $instance ( @$instances ) {
|
||||
my $last_check_time = $last_check_time_for{ $instance->{id} };
|
||||
PTDEBUG && _d('Intsance', $instance->{id}, 'last checked',
|
||||
PTDEBUG && _d('Instance', $instance->{id}, 'last checked',
|
||||
$last_check_time, 'now', $now, 'diff', $now - ($last_check_time || 0),
|
||||
'hours until next check',
|
||||
sprintf '%.2f',
|
||||
@@ -7394,6 +7394,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-heartbeat 3.4.0
|
||||
pt-heartbeat 3.5.0
|
||||
|
||||
=cut
|
||||
|
@@ -37,15 +37,15 @@ BEGIN {
|
||||
# ###########################################################################
|
||||
# Percona::Toolkit package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/Percona/Toolkit.pm
|
||||
# t/lib/Percona/Toolkit.t
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.3.2';
|
||||
our $VERSION = '3.5.0';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -4022,10 +4022,10 @@ sub _d {
|
||||
# ###########################################################################
|
||||
# SchemaIterator package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/SchemaIterator.pm
|
||||
# t/lib/SchemaIterator.t
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
{
|
||||
package SchemaIterator;
|
||||
@@ -4430,7 +4430,7 @@ sub engine_is_allowed {
|
||||
my $filter = $self->{filters};
|
||||
|
||||
if ( $filter->{'ignore-engines'}->{$engine} ) {
|
||||
PTDEBUG && _d('Engine', $engine, 'is in --ignore-databases list');
|
||||
PTDEBUG && _d('Engine', $engine, 'is in --ignore-engines list');
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -5946,7 +5946,7 @@ sub get_instances_to_check {
|
||||
my @instances_to_check;
|
||||
foreach my $instance ( @$instances ) {
|
||||
my $last_check_time = $last_check_time_for{ $instance->{id} };
|
||||
PTDEBUG && _d('Intsance', $instance->{id}, 'last checked',
|
||||
PTDEBUG && _d('Instance', $instance->{id}, 'last checked',
|
||||
$last_check_time, 'now', $now, 'diff', $now - ($last_check_time || 0),
|
||||
'hours until next check',
|
||||
sprintf '%.2f',
|
||||
@@ -7705,6 +7705,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-index-usage 3.4.0
|
||||
pt-index-usage 3.5.0
|
||||
|
||||
=cut
|
||||
|
@@ -572,6 +572,7 @@ tabulate_strace() {
|
||||
}
|
||||
/^COMMAND/ { mode = "lsof"; }
|
||||
/^Process/ { mode = "strace"; }
|
||||
/^strace/ { mode = "strace"; }
|
||||
{
|
||||
# Save the file descriptor and name for lookup later.
|
||||
if ( mode == "lsof" ) {
|
||||
@@ -1132,7 +1133,7 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-ioprofile 3.4.0
|
||||
pt-ioprofile 3.5.0
|
||||
|
||||
=cut
|
||||
|
||||
|
126
bin/pt-kill
126
bin/pt-kill
@@ -39,15 +39,15 @@ BEGIN {
|
||||
# ###########################################################################
|
||||
# Percona::Toolkit package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/Percona/Toolkit.pm
|
||||
# t/lib/Percona/Toolkit.t
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.3.2';
|
||||
our $VERSION = '3.5.0';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -6373,7 +6373,7 @@ sub get_instances_to_check {
|
||||
my @instances_to_check;
|
||||
foreach my $instance ( @$instances ) {
|
||||
my $last_check_time = $last_check_time_for{ $instance->{id} };
|
||||
PTDEBUG && _d('Intsance', $instance->{id}, 'last checked',
|
||||
PTDEBUG && _d('Instance', $instance->{id}, 'last checked',
|
||||
$last_check_time, 'now', $now, 'diff', $now - ($last_check_time || 0),
|
||||
'hours until next check',
|
||||
sprintf '%.2f',
|
||||
@@ -7373,21 +7373,50 @@ sub main {
|
||||
|
||||
MATCHING_QUERY:
|
||||
foreach my $query ( @queries ) {
|
||||
my $qinfo = ( $query->{Info} || 'NULL' );
|
||||
if( $o->get('fingerprint') && $qinfo ne 'NULL' ) {
|
||||
$qinfo = $qr->fingerprint($query->{'Info'});
|
||||
}
|
||||
my $chksm = '';
|
||||
if ( $qinfo ne 'NULL' ) {
|
||||
my $fp = $qr->fingerprint($query->{'Info'});
|
||||
# $chksm is used by query-id and json
|
||||
$chksm = Transformers::make_checksum($fp);
|
||||
}
|
||||
if ( $o->get('print') ) {
|
||||
my $qinfo = ($query->{Info} || 'NULL' );
|
||||
if( $o->get('fingerprint') && $qinfo ne 'NULL' ) {
|
||||
$qinfo = $qr->fingerprint($query->{'Info'});
|
||||
if ( $o->get('json') ) {
|
||||
my $reasons = join "\n", map {
|
||||
defined($_) ? $_ : "Unknown reason"
|
||||
} @{ $pl->{_reasons_for_matching}->{$query} };
|
||||
my %jsonOutput = (
|
||||
Timestamp => ts(time),
|
||||
Reason => $reasons,
|
||||
Kill_Error => $EVAL_ERROR,
|
||||
Id => $query->{Id},
|
||||
User => $query->{User},
|
||||
Host => $query->{Host},
|
||||
Db => $query->{db},
|
||||
Command => $query->{Command},
|
||||
Time => $query->{Time},
|
||||
State => $query->{State},
|
||||
Info => $qinfo,
|
||||
Digest => $chksm
|
||||
);
|
||||
if ( $o->get('json-fields') ) {
|
||||
my @logFieldKVs = split(",", $o->get('json-fields'));
|
||||
my %logFields = map { split(":", $_) } @logFieldKVs;
|
||||
%jsonOutput = (%jsonOutput, %logFields);
|
||||
}
|
||||
printf "%s\n", Transformers::hash_to_json(\%jsonOutput);
|
||||
} else {
|
||||
printf "# %s %s %d (%s %d sec) %s\n",
|
||||
ts(time), $o->get('kill-query') ? 'KILL QUERY' : 'KILL',
|
||||
$query->{Id}, ($query->{Command} || 'NULL'), $query->{Time},
|
||||
$qinfo;
|
||||
}
|
||||
|
||||
printf "# %s %s %d (%s %d sec) %s\n",
|
||||
ts(time), $o->get('kill-query') ? 'KILL QUERY' : 'KILL',
|
||||
$query->{Id}, ($query->{Command} || 'NULL'), $query->{Time},
|
||||
$qinfo;
|
||||
}
|
||||
if ( $o->get('query-id') ) {
|
||||
my $fp = $qr->fingerprint($query->{'Info'});
|
||||
my $chksm = Transformers::make_checksum($fp);
|
||||
print "Query ID: 0x$chksm\n";
|
||||
print "Query ID: 0x$chksm\n";
|
||||
}
|
||||
if ( $o->get('execute-command') ) {
|
||||
exec_cmd($o->get('execute-command'));
|
||||
@@ -7484,7 +7513,7 @@ sub log_to_table {
|
||||
|
||||
my $ts = Transformers::ts(time());
|
||||
my $reasons = join "\n", map {
|
||||
defined($_) ? $_ : "Unkown reason"
|
||||
defined($_) ? $_ : "Unknown reason"
|
||||
} @{ $pl->{_reasons_for_matching}->{$query} };
|
||||
$log->(
|
||||
$ts, $reasons, $args{eval_error},
|
||||
@@ -7845,7 +7874,7 @@ type: DSN
|
||||
Store each query killed in this DSN.
|
||||
|
||||
The argument specifies a table to store all killed queries. The DSN
|
||||
passed in must have the databse (D) and table (t) options. The
|
||||
passed in must have the database (D) and table (t) options. The
|
||||
table must have at least the following columns. You can add more columns for
|
||||
your own special purposes, but they won't be used by pt-kill. The
|
||||
following CREATE TABLE definition is also used for L<"--create-log-table">.
|
||||
@@ -7869,6 +7898,67 @@ MAGIC_create_log_table:
|
||||
PRIMARY KEY (kill_id)
|
||||
) DEFAULT CHARSET=utf8
|
||||
|
||||
=item --json
|
||||
|
||||
Prints killed queries as JSON, must be used with L<"--print">. For example:
|
||||
|
||||
--print --json
|
||||
|
||||
The usual plain-text output from L<"--print"> will not be displayed.
|
||||
|
||||
JSON output will be in the format of:
|
||||
|
||||
{
|
||||
"Command": "Query",
|
||||
"Host": "10.0.0.1:9999",
|
||||
"Id": 1234,
|
||||
"Info": "SELECT SLEEP(5)",
|
||||
"State": "User sleep",
|
||||
"Time": 10,
|
||||
"User": "my_user",
|
||||
"Db": "my_db",
|
||||
"Kill_Error": "",
|
||||
"Digest": "58A43A7DA83F58C1",
|
||||
"Reason": "Exceeds busy time\nQuery matches Command spec",
|
||||
"Timestamp": "2022-01-01T00:00:00"
|
||||
}
|
||||
|
||||
=item --json-fields
|
||||
|
||||
type: string
|
||||
|
||||
Specify a list of additional key:value pairs to include in JSON output when
|
||||
using L<"--json">, the value of this parameter must be specified in the
|
||||
format of:
|
||||
|
||||
--json-fields key1:value1,key2:value2
|
||||
|
||||
Any fields specified using L<"--json-fields"> will be included in the
|
||||
L<"--json"> output.
|
||||
|
||||
For example:
|
||||
|
||||
--print --json --json-fields hostname:$(hostname),tag:my_tag
|
||||
|
||||
Will result in JSON records being written to "kill_log.json" using this format:
|
||||
|
||||
{
|
||||
"Command": "Query",
|
||||
"Host": "10.0.0.1:9999",
|
||||
"Id": 1234,
|
||||
"Info": "SELECT SLEEP(5)",
|
||||
"State": "User sleep",
|
||||
"Time": 10,
|
||||
"User": "my_user",
|
||||
"Db": "my_db",
|
||||
"Kill_Error": "",
|
||||
"Digest": "58A43A7DA83F58C1",
|
||||
"Reason": "Exceeds busy time\nQuery matches Command spec",
|
||||
"Timestamp": "2022-01-01T00:00:00",
|
||||
"hostname": "my_host",
|
||||
"tag": "my_tag"
|
||||
}
|
||||
|
||||
=item --password
|
||||
|
||||
short form: -p; type: string
|
||||
@@ -8576,6 +8666,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-kill 3.4.0
|
||||
pt-kill 3.5.0
|
||||
|
||||
=cut
|
||||
|
@@ -809,7 +809,7 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-mext 3.4.0
|
||||
pt-mext 3.5.0
|
||||
|
||||
=cut
|
||||
|
||||
|
@@ -3296,7 +3296,7 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-mysql-summary 3.4.0
|
||||
pt-mysql-summary 3.5.0
|
||||
|
||||
=cut
|
||||
|
||||
|
@@ -48,15 +48,15 @@ BEGIN {
|
||||
# ###########################################################################
|
||||
# Percona::Toolkit package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/Percona/Toolkit.pm
|
||||
# t/lib/Percona/Toolkit.t
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.3.2';
|
||||
our $VERSION = '3.5.0';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -4294,7 +4294,7 @@ sub recurse_to_slaves {
|
||||
my $slave_dsn = $dsn;
|
||||
if ($slave_user) {
|
||||
$slave_dsn->{u} = $slave_user;
|
||||
PTDEBUG && _d("Using slave user $slave_user on ".$slave_dsn->{h}.":".$slave_dsn->{P});
|
||||
PTDEBUG && _d("Using slave user $slave_user on ".$slave_dsn->{h}.":".($slave_dsn->{P}?$slave_dsn->{P}:""));
|
||||
}
|
||||
if ($slave_password) {
|
||||
$slave_dsn->{p} = $slave_password;
|
||||
@@ -7726,7 +7726,7 @@ sub get_instances_to_check {
|
||||
my @instances_to_check;
|
||||
foreach my $instance ( @$instances ) {
|
||||
my $last_check_time = $last_check_time_for{ $instance->{id} };
|
||||
PTDEBUG && _d('Intsance', $instance->{id}, 'last checked',
|
||||
PTDEBUG && _d('Instance', $instance->{id}, 'last checked',
|
||||
$last_check_time, 'now', $now, 'diff', $now - ($last_check_time || 0),
|
||||
'hours until next check',
|
||||
sprintf '%.2f',
|
||||
@@ -12073,7 +12073,7 @@ C<wsrep_OSU_method> is not C<TOI>. There is no way to disable these checks.
|
||||
=head1 MySQL 5.7 + Generated columns
|
||||
|
||||
The tools ignores MySQL 5.7+ C<GENERATED> columns since the value for those columns
|
||||
is generated according to the expresion used to compute column values.
|
||||
is generated according to the expression used to compute column values.
|
||||
|
||||
=head1 OUTPUT
|
||||
|
||||
@@ -13469,6 +13469,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-online-schema-change 3.4.0
|
||||
pt-online-schema-change 3.5.0
|
||||
|
||||
=cut
|
||||
|
@@ -901,7 +901,7 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-pmp 3.4.0
|
||||
pt-pmp 3.5.0
|
||||
|
||||
=cut
|
||||
|
||||
|
42
bin/pt-query-digest
Executable file → Normal file
42
bin/pt-query-digest
Executable file → Normal file
@@ -56,15 +56,15 @@ BEGIN {
|
||||
# ###########################################################################
|
||||
# Percona::Toolkit package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/Percona/Toolkit.pm
|
||||
# t/lib/Percona/Toolkit.t
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.3.2';
|
||||
our $VERSION = '3.5.0';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -12665,7 +12665,7 @@ sub get_instances_to_check {
|
||||
my @instances_to_check;
|
||||
foreach my $instance ( @$instances ) {
|
||||
my $last_check_time = $last_check_time_for{ $instance->{id} };
|
||||
PTDEBUG && _d('Intsance', $instance->{id}, 'last checked',
|
||||
PTDEBUG && _d('Instance', $instance->{id}, 'last checked',
|
||||
$last_check_time, 'now', $now, 'diff', $now - ($last_check_time || 0),
|
||||
'hours until next check',
|
||||
sprintf '%.2f',
|
||||
@@ -15078,7 +15078,7 @@ Report the slowest queries from the processlist on host1:
|
||||
|
||||
pt-query-digest --processlist h=host1
|
||||
|
||||
Capture MySQL protocol data with tcppdump, then report the slowest queries:
|
||||
Capture MySQL protocol data with tcpdump, then report the slowest queries:
|
||||
|
||||
tcpdump -s 65535 -x -nn -q -tttt -i any -c 1000 port 3306 > mysql.tcp.txt
|
||||
|
||||
@@ -15184,7 +15184,7 @@ The information is very similar to what you'll see for each class of queries in
|
||||
the log, but it doesn't have some information that would be too expensive to
|
||||
keep globally for the analysis. It also has some statistics about the code's
|
||||
execution itself, such as the CPU and memory usage, the local date and time
|
||||
of the run, and a list of input file read/parsed.
|
||||
of the run, and a list of input files read/parsed.
|
||||
|
||||
Following this is the response-time profile over the events. This is a
|
||||
highly summarized view of the unique events in the detailed query report
|
||||
@@ -15491,7 +15491,7 @@ Prompt for a password when connecting to MySQL.
|
||||
|
||||
type: array; default: db|Schema
|
||||
|
||||
List of attribute|alias,etc.
|
||||
List of attribute|alias, etc.
|
||||
|
||||
Certain attributes have multiple names, like db and Schema. If an event does
|
||||
not have the primary attribute, pt-query-digest looks for an alias attribute.
|
||||
@@ -15653,7 +15653,7 @@ The subroutine template is:
|
||||
|
||||
sub { $event = shift; filter && return $event; }
|
||||
|
||||
Filters given on the command line are wrapped inside parentheses like like
|
||||
Filters given on the command line are wrapped inside parentheses like
|
||||
C<( filter )>. For complex, multi-line filters, you must put the code inside
|
||||
a file so it will not be wrapped inside parentheses. Either way, the filter
|
||||
must produce syntactically valid code given the template. For example, an
|
||||
@@ -15929,7 +15929,7 @@ Note that we store the count (cnt) for the ts attribute only; it will be
|
||||
redundant to store this for other attributes.
|
||||
|
||||
Starting from Percona Toolkit 3.0.11, the checksum function has been updated to use 32 chars in the MD5 sum.
|
||||
This causes the checksum field in the history table will have a different value than in the previous versions of the tool.
|
||||
This causes the checksum field in the history table to have a different value than in the previous versions of the tool.
|
||||
|
||||
=item --host
|
||||
|
||||
@@ -16033,7 +16033,7 @@ For example, the default C<Query_time:sum> means that queries in the
|
||||
query analysis report will be ordered (sorted) by their total query execution
|
||||
time ("Exec time"). C<Query_time:max> orders the queries by their
|
||||
maximum query execution time, so the query with the single largest
|
||||
C<Query_time> will be list first. C<cnt> refers more to the frequency
|
||||
C<Query_time> will be listed first. C<cnt> refers more to the frequency
|
||||
of the query as a whole, how often it appears; "Count" is its corresponding
|
||||
line in the query analysis report. So any attribute and C<cnt> should yield
|
||||
the same report wherein queries are sorted by the number of times they
|
||||
@@ -16075,10 +16075,10 @@ type: string; default: report
|
||||
How to format and print the query analysis results. Accepted values are:
|
||||
|
||||
VALUE FORMAT
|
||||
======= ==============================
|
||||
======= ===============================
|
||||
report Standard query analysis report
|
||||
slowlog MySQL slow log
|
||||
json JSON, on array per query class
|
||||
json JSON, one array per query class
|
||||
json-anon JSON without example queries
|
||||
secure-slowlog JSON without example queries
|
||||
|
||||
@@ -16115,8 +16115,8 @@ Port number to use for connection.
|
||||
=item --preserve-embedded-numbers
|
||||
|
||||
Preserve numbers in database/table names when fingerprinting queries.
|
||||
The standar fingeprint method replaces numbers in db/tables names, making
|
||||
a query like 'SELECT * FROM db1.table2' to be figerprinted as 'SELECT * FROM db?.table?'.
|
||||
The standard fingerprint method replaces numbers in db/tables names, making
|
||||
a query like 'SELECT * FROM db1.table2' to be fingerprinted as 'SELECT * FROM db?.table?'.
|
||||
This option changes that behaviour and the fingerprint will become
|
||||
'SELECT * FROM db1.table2'.
|
||||
|
||||
@@ -16180,7 +16180,7 @@ Print these sections of the query analysis report.
|
||||
rusage CPU times and memory usage reported by ps
|
||||
date Current local date and time
|
||||
hostname Hostname of machine on which pt-query-digest was run
|
||||
files Input files read/parse
|
||||
files Input files read/parsed
|
||||
header Summary of the entire analysis run
|
||||
profile Compact table of queries for an overview of the report
|
||||
query_report Detailed information about each unique query
|
||||
@@ -16392,7 +16392,7 @@ MAGIC_set_vars
|
||||
wait_timeout=10000
|
||||
|
||||
Variables specified on the command line override these defaults. For
|
||||
example, specifying C<--set-vars wait_timeout=500> overrides the defaultvalue of C<10000>.
|
||||
example, specifying C<--set-vars wait_timeout=500> overrides the default value of C<10000>.
|
||||
|
||||
The tool prints a warning and continues if a variable cannot be set.
|
||||
|
||||
@@ -16402,7 +16402,7 @@ type: Hash
|
||||
|
||||
Show all values for these attributes.
|
||||
|
||||
By default pt-query-digest only shows as many of an attribute's value that
|
||||
By default pt-query-digest only shows as many of an attribute's value as
|
||||
fit on a single line. This option allows you to specify attributes for which
|
||||
all values will be shown (line width is ignored). This only works for
|
||||
attributes with string values like user, host, db, etc. Multiple attributes
|
||||
@@ -16438,7 +16438,7 @@ The MySQL time expression is wrapped inside a query like
|
||||
valid inside this query. For example, do not use UNIX_TIMESTAMP() because
|
||||
UNIX_TIMESTAMP(UNIX_TIMESTAMP()) returns 0.
|
||||
|
||||
Events are assumed to be in chronological: older events at the beginning of
|
||||
Events are assumed to be in chronological order: older events at the beginning of
|
||||
the log and newer events at the end of the log. L<"--since"> is strict: it
|
||||
ignores all queries until one is found that is new enough. Therefore, if
|
||||
the query events are not consistently timestamped, some may be ignored which
|
||||
@@ -16459,7 +16459,7 @@ Show a timeline of events.
|
||||
This option makes pt-query-digest print another kind of report: a timeline of
|
||||
the events. Each query is still grouped and aggregate into classes according to
|
||||
L<"--group-by">, but then they are printed in chronological order. The timeline
|
||||
report prints out the timestamp, interval, count and value of each classes.
|
||||
report prints out the timestamp, interval, count and value of each class.
|
||||
|
||||
If all you want is the timeline report, then specify C<--no-report> to
|
||||
suppress the default query analysis report. Otherwise, the timeline report
|
||||
@@ -16551,7 +16551,7 @@ queries. (See L<http://www.mysqlperformanceblog.com/?p=6092> for details.)
|
||||
'port 3306 and tcp[1] & 7 == 2 and tcp[3] & 7 == 2'
|
||||
|
||||
All MySQL servers running on port 3306 are automatically detected in the
|
||||
tcpdump output. Therefore, if the tcpdump out contains packets from
|
||||
tcpdump output. Therefore, if the tcpdump output contains packets from
|
||||
multiple servers on port 3306 (for example, 10.0.0.1:3306, 10.0.0.2:3306,
|
||||
etc.), all packets/queries from all these servers will be analyzed
|
||||
together as if they were one server.
|
||||
@@ -16977,6 +16977,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-query-digest 3.4.0
|
||||
pt-query-digest 3.5.0
|
||||
|
||||
=cut
|
||||
|
@@ -2618,6 +2618,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-show-grants 3.4.0
|
||||
pt-show-grants 3.5.0
|
||||
|
||||
=cut
|
||||
|
@@ -1250,7 +1250,7 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-sift 3.4.0
|
||||
pt-sift 3.5.0
|
||||
|
||||
=cut
|
||||
|
||||
|
@@ -32,15 +32,15 @@ BEGIN {
|
||||
# ###########################################################################
|
||||
# Percona::Toolkit package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/Percona/Toolkit.pm
|
||||
# t/lib/Percona/Toolkit.t
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.3.2';
|
||||
our $VERSION = '3.5.0';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -3761,7 +3761,7 @@ sub get_instances_to_check {
|
||||
my @instances_to_check;
|
||||
foreach my $instance ( @$instances ) {
|
||||
my $last_check_time = $last_check_time_for{ $instance->{id} };
|
||||
PTDEBUG && _d('Intsance', $instance->{id}, 'last checked',
|
||||
PTDEBUG && _d('Instance', $instance->{id}, 'last checked',
|
||||
$last_check_time, 'now', $now, 'diff', $now - ($last_check_time || 0),
|
||||
'hours until next check',
|
||||
sprintf '%.2f',
|
||||
@@ -4993,6 +4993,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-slave-delay 3.4.0
|
||||
pt-slave-delay 3.5.0
|
||||
|
||||
=cut
|
||||
|
@@ -4528,6 +4528,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-slave-find 3.4.0
|
||||
pt-slave-find 3.5.0
|
||||
|
||||
=cut
|
||||
|
@@ -33,15 +33,15 @@ BEGIN {
|
||||
# ###########################################################################
|
||||
# Percona::Toolkit package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/Percona/Toolkit.pm
|
||||
# t/lib/Percona/Toolkit.t
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.3.2';
|
||||
our $VERSION = '3.5.0';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -4489,7 +4489,7 @@ sub get_instances_to_check {
|
||||
my @instances_to_check;
|
||||
foreach my $instance ( @$instances ) {
|
||||
my $last_check_time = $last_check_time_for{ $instance->{id} };
|
||||
PTDEBUG && _d('Intsance', $instance->{id}, 'last checked',
|
||||
PTDEBUG && _d('Instance', $instance->{id}, 'last checked',
|
||||
$last_check_time, 'now', $now, 'diff', $now - ($last_check_time || 0),
|
||||
'hours until next check',
|
||||
sprintf '%.2f',
|
||||
@@ -6164,6 +6164,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-slave-restart 3.4.0
|
||||
pt-slave-restart 3.5.0
|
||||
|
||||
=cut
|
||||
|
142
bin/pt-stalk
142
bin/pt-stalk
@@ -809,6 +809,7 @@ collect() {
|
||||
local mysql_error_log=""
|
||||
local tail_error_log_pid=""
|
||||
local have_lock_waits_table=""
|
||||
local lock_table_p_s=""
|
||||
local have_oprofile=""
|
||||
local mysqladmin_pid=""
|
||||
local mutex=""
|
||||
@@ -932,6 +933,13 @@ collect_mysql_data_one() {
|
||||
| grep -i "INNODB_LOCK_WAITS" >/dev/null 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
have_lock_waits_table="yes"
|
||||
else
|
||||
$CMD_MYSQL $EXT_ARGV -e "SHOW TABLES FROM performance_schema" \
|
||||
| grep -i "data_lock_waits" >/dev/null 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
have_lock_waits_table="yes"
|
||||
lock_table_p_s="yes"
|
||||
fi
|
||||
fi
|
||||
|
||||
$CMD_MYSQLADMIN $EXT_ARGV ext -i$OPT_SLEEP_COLLECT -c$cnt >>"$d/$p-mysqladmin" &
|
||||
@@ -979,7 +987,7 @@ collect_mysql_data_loop() {
|
||||
(echo $ts; $CMD_MYSQL $EXT_ARGV -e "SHOW FULL PROCESSLIST\G") \
|
||||
>> "$d/$p-processlist" &
|
||||
if [ "$have_lock_waits_table" ]; then
|
||||
(echo $ts; lock_waits) >>"$d/$p-lock-waits" &
|
||||
(echo $ts; lock_waits "$d/lock_waits.running") >>"$d/$p-lock-waits" &
|
||||
(echo $ts; transactions) >>"$d/$p-transactions" &
|
||||
fi
|
||||
|
||||
@@ -988,7 +996,7 @@ collect_mysql_data_loop() {
|
||||
fi
|
||||
|
||||
if [ "${mysql_version}" '>' "5.6" ]; then
|
||||
(echo $ts; ps_prepared_statements) >> "$d/$p-prepared-statements" &
|
||||
(echo $ts; ps_prepared_statements "$d/prepared_statements.isrunnning") >> "$d/$p-prepared-statements" &
|
||||
fi
|
||||
|
||||
slave_status "$d/$p-slave-status" "${mysql_version}"
|
||||
@@ -1028,6 +1036,10 @@ collect_system_data_loop() {
|
||||
(echo $ts; df -k) >> "$d/$p-df" &
|
||||
(echo $ts; netstat -antp) >> "$d/$p-netstat" &
|
||||
(echo $ts; netstat -s) >> "$d/$p-netstat_s" &
|
||||
(echo $ts;
|
||||
for node in `ls -d /sys/devices/system/node/node*`; do
|
||||
echo `basename $node`; cat "$node/numastat"
|
||||
done) >> "$d/$p-numastat" &
|
||||
}
|
||||
|
||||
collect_mysql_data_two() {
|
||||
@@ -1089,42 +1101,89 @@ open_tables() {
|
||||
}
|
||||
|
||||
lock_waits() {
|
||||
local sql1="SELECT SQL_NO_CACHE
|
||||
CONCAT('thread ', b.trx_mysql_thread_id, ' from ', p.host) AS who_blocks,
|
||||
IF(p.command = \"Sleep\", p.time, 0) AS idle_in_trx,
|
||||
MAX(TIMESTAMPDIFF(SECOND, r.trx_wait_started, CURRENT_TIMESTAMP)) AS max_wait_time,
|
||||
COUNT(*) AS num_waiters
|
||||
FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS AS w
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX AS b ON b.trx_id = w.blocking_trx_id
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX AS r ON r.trx_id = w.requesting_trx_id
|
||||
LEFT JOIN INFORMATION_SCHEMA.PROCESSLIST AS p ON p.id = b.trx_mysql_thread_id
|
||||
GROUP BY who_blocks ORDER BY num_waiters DESC\G"
|
||||
$CMD_MYSQL $EXT_ARGV -e "$sql1"
|
||||
local flag_file=$1
|
||||
if test -f "$flag_file"; then
|
||||
echo "Lock collection already running, skipping this iteration"
|
||||
else
|
||||
touch "$flag_file"
|
||||
local sql1=""
|
||||
local sql2=""
|
||||
if [ "${lock_table_p_s}" != "yes" ]; then
|
||||
sql1="SELECT SQL_NO_CACHE
|
||||
CONCAT('thread ', b.trx_mysql_thread_id, ' from ', p.host) AS who_blocks,
|
||||
MAX(IF(p.command = \"Sleep\", p.time, 0)) AS idle_in_trx,
|
||||
MAX(TIMESTAMPDIFF(SECOND, r.trx_wait_started, CURRENT_TIMESTAMP)) AS max_wait_time,
|
||||
COUNT(*) AS num_waiters
|
||||
FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS AS w
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX AS b ON b.trx_id = w.blocking_trx_id
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX AS r ON r.trx_id = w.requesting_trx_id
|
||||
LEFT JOIN INFORMATION_SCHEMA.PROCESSLIST AS p ON p.id = b.trx_mysql_thread_id
|
||||
GROUP BY who_blocks ORDER BY num_waiters DESC\G"
|
||||
|
||||
local sql2="SELECT SQL_NO_CACHE
|
||||
r.trx_id AS waiting_trx_id,
|
||||
r.trx_mysql_thread_id AS waiting_thread,
|
||||
TIMESTAMPDIFF(SECOND, r.trx_wait_started, CURRENT_TIMESTAMP) AS wait_time,
|
||||
r.trx_query AS waiting_query,
|
||||
l.lock_table AS waiting_table_lock,
|
||||
b.trx_id AS blocking_trx_id, b.trx_mysql_thread_id AS blocking_thread,
|
||||
SUBSTRING(p.host, 1, INSTR(p.host, ':') - 1) AS blocking_host,
|
||||
SUBSTRING(p.host, INSTR(p.host, ':') +1) AS blocking_port,
|
||||
IF(p.command = \"Sleep\", p.time, 0) AS idle_in_trx,
|
||||
b.trx_query AS blocking_query
|
||||
FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS AS w
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX AS b ON b.trx_id = w.blocking_trx_id
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX AS r ON r.trx_id = w.requesting_trx_id
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_LOCKS AS l ON w.requested_lock_id = l.lock_id
|
||||
LEFT JOIN INFORMATION_SCHEMA.PROCESSLIST AS p ON p.id = b.trx_mysql_thread_id
|
||||
ORDER BY wait_time DESC\G"
|
||||
$CMD_MYSQL $EXT_ARGV -e "$sql2"
|
||||
sql2="SELECT SQL_NO_CACHE
|
||||
r.trx_id AS waiting_trx_id,
|
||||
r.trx_mysql_thread_id AS waiting_thread,
|
||||
TIMESTAMPDIFF(SECOND, r.trx_wait_started, CURRENT_TIMESTAMP) AS wait_time,
|
||||
r.trx_query AS waiting_query,
|
||||
l.lock_table AS waiting_table_lock,
|
||||
b.trx_id AS blocking_trx_id, b.trx_mysql_thread_id AS blocking_thread,
|
||||
SUBSTRING(p.host, 1, INSTR(p.host, ':') - 1) AS blocking_host,
|
||||
SUBSTRING(p.host, INSTR(p.host, ':') +1) AS blocking_port,
|
||||
IF(p.command = \"Sleep\", p.time, 0) AS idle_in_trx,
|
||||
b.trx_query AS blocking_query
|
||||
FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS AS w
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX AS b ON b.trx_id = w.blocking_trx_id
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX AS r ON r.trx_id = w.requesting_trx_id
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_LOCKS AS l ON w.requested_lock_id = l.lock_id
|
||||
LEFT JOIN INFORMATION_SCHEMA.PROCESSLIST AS p ON p.id = b.trx_mysql_thread_id
|
||||
ORDER BY wait_time DESC\G"
|
||||
else
|
||||
sql1="SELECT SQL_NO_CACHE
|
||||
CONCAT('thread ', b.trx_mysql_thread_id, ' from ', p.host) AS who_blocks,
|
||||
MAX(IF(p.command = \"Sleep\", p.time, 0)) AS idle_in_trx,
|
||||
MAX(TIMESTAMPDIFF(SECOND, r.trx_wait_started, CURRENT_TIMESTAMP)) AS max_wait_time,
|
||||
COUNT(*) AS num_waiters
|
||||
FROM performance_schema.data_lock_waits AS w
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX AS b ON b.trx_id = w.BLOCKING_ENGINE_TRANSACTION_ID
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX AS r ON r.trx_id = w.REQUESTING_ENGINE_TRANSACTION_ID
|
||||
LEFT JOIN INFORMATION_SCHEMA.PROCESSLIST AS p ON p.id = b.trx_mysql_thread_id
|
||||
GROUP BY who_blocks ORDER BY num_waiters DESC\G"
|
||||
|
||||
sql2="SELECT SQL_NO_CACHE
|
||||
r.trx_id AS waiting_trx_id,
|
||||
r.trx_mysql_thread_id AS waiting_thread,
|
||||
TIMESTAMPDIFF(SECOND, r.trx_wait_started, CURRENT_TIMESTAMP) AS wait_time,
|
||||
r.trx_query AS waiting_query,
|
||||
CONCAT('\`', l.OBJECT_SCHEMA, '\`.\`', l.OBJECT_NAME, '\`') AS waiting_table_lock,
|
||||
b.trx_id AS blocking_trx_id, b.trx_mysql_thread_id AS blocking_thread,
|
||||
SUBSTRING(p.host, 1, INSTR(p.host, ':') - 1) AS blocking_host,
|
||||
SUBSTRING(p.host, INSTR(p.host, ':') +1) AS blocking_port,
|
||||
IF(p.command = \"Sleep\", p.time, 0) AS idle_in_trx,
|
||||
b.trx_query AS blocking_query
|
||||
FROM performance_schema.data_lock_waits AS w
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX AS b ON b.trx_id = w.BLOCKING_ENGINE_TRANSACTION_ID
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX AS r ON r.trx_id = w.REQUESTING_ENGINE_TRANSACTION_ID
|
||||
INNER JOIN performance_schema.data_locks AS l ON w.REQUESTING_ENGINE_LOCK_ID = l.ENGINE_LOCK_ID
|
||||
LEFT JOIN INFORMATION_SCHEMA.PROCESSLIST AS p ON p.id = b.trx_mysql_thread_id
|
||||
ORDER BY wait_time DESC\G"
|
||||
fi
|
||||
|
||||
$CMD_MYSQL $EXT_ARGV -e "$sql1"
|
||||
$CMD_MYSQL $EXT_ARGV -e "$sql2"
|
||||
|
||||
rm "$flag_file"
|
||||
fi
|
||||
}
|
||||
|
||||
transactions() {
|
||||
$CMD_MYSQL $EXT_ARGV -e "SELECT SQL_NO_CACHE * FROM INFORMATION_SCHEMA.INNODB_TRX ORDER BY trx_id\G"
|
||||
$CMD_MYSQL $EXT_ARGV -e "SELECT SQL_NO_CACHE * FROM INFORMATION_SCHEMA.INNODB_LOCKS ORDER BY lock_trx_id\G"
|
||||
$CMD_MYSQL $EXT_ARGV -e "SELECT SQL_NO_CACHE * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS ORDER BY blocking_trx_id, requesting_trx_id\G"
|
||||
if [ "${lock_table_p_s}" != "yes" ]; then
|
||||
$CMD_MYSQL $EXT_ARGV -e "SELECT SQL_NO_CACHE * FROM INFORMATION_SCHEMA.INNODB_LOCKS ORDER BY lock_trx_id\G"
|
||||
$CMD_MYSQL $EXT_ARGV -e "SELECT SQL_NO_CACHE * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS ORDER BY blocking_trx_id, requesting_trx_id\G"
|
||||
else
|
||||
$CMD_MYSQL $EXT_ARGV -e "SELECT SQL_NO_CACHE * FROM performance_schema.data_locks ORDER BY ENGINE_TRANSACTION_ID\G"
|
||||
$CMD_MYSQL $EXT_ARGV -e "SELECT SQL_NO_CACHE * FROM performance_schema.data_lock_waits ORDER BY BLOCKING_ENGINE_TRANSACTION_ID, REQUESTING_ENGINE_TRANSACTION_ID\G"
|
||||
fi
|
||||
}
|
||||
|
||||
tokudb_status() {
|
||||
@@ -1200,10 +1259,17 @@ ps_locks_transactions() {
|
||||
}
|
||||
|
||||
ps_prepared_statements() {
|
||||
$CMD_MYSQL $EXT_ARGV -e "SELECT t.processlist_id, pse.* \
|
||||
FROM performance_schema.prepared_statements_instances pse \
|
||||
JOIN performance_schema.threads t \
|
||||
ON (pse.OWNER_THREAD_ID=t.thread_id)\G"
|
||||
local flag_file=$1
|
||||
if test -f "$flag_file"; then
|
||||
echo "Prepared statements collection already running, skipping this iteration"
|
||||
else
|
||||
touch "$flag_file"
|
||||
$CMD_MYSQL $EXT_ARGV -e "SELECT t.processlist_id, pse.* \
|
||||
FROM performance_schema.prepared_statements_instances pse \
|
||||
JOIN performance_schema.threads t \
|
||||
ON (pse.OWNER_THREAD_ID=t.thread_id)\G"
|
||||
rm "$flag_file"
|
||||
fi
|
||||
}
|
||||
|
||||
slave_status() {
|
||||
@@ -2486,7 +2552,7 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-stalk 3.4.0
|
||||
pt-stalk 3.5.0
|
||||
|
||||
=cut
|
||||
|
||||
|
124
bin/pt-summary
124
bin/pt-summary
@@ -16,10 +16,10 @@ export POSIXLY_CORRECT
|
||||
# ###########################################################################
|
||||
# log_warn_die package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/bash/log_warn_die.sh
|
||||
# t/lib/bash/log_warn_die.sh
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
|
||||
|
||||
@@ -64,10 +64,10 @@ _d () {
|
||||
# ###########################################################################
|
||||
# parse_options package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/bash/parse_options.sh
|
||||
# t/lib/bash/parse_options.sh
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
|
||||
|
||||
@@ -289,7 +289,7 @@ _eval_po() {
|
||||
*)
|
||||
echo "Invalid attribute in $opt_spec: $line" >&2
|
||||
exit 1
|
||||
esac
|
||||
esac
|
||||
done < "$opt_spec"
|
||||
|
||||
if [ -z "$opt" ]; then
|
||||
@@ -413,7 +413,6 @@ _parse_command_line() {
|
||||
else
|
||||
spec=$(grep "^short form:-$opt\$" "$PT_TMPDIR"/po/* | cut -d ':' -f 1)
|
||||
if [ -z "$spec" ]; then
|
||||
option_error "Unknown option: $real_opt"
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
@@ -429,7 +428,7 @@ _parse_command_line() {
|
||||
if [ "$val" ]; then
|
||||
option_error "Option $real_opt does not take a value"
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
if [ "$opt_is_negated" ]; then
|
||||
val=""
|
||||
else
|
||||
@@ -472,10 +471,10 @@ size_to_bytes() {
|
||||
# ###########################################################################
|
||||
# tmpdir package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/bash/tmpdir.sh
|
||||
# t/lib/bash/tmpdir.sh
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
|
||||
|
||||
@@ -513,10 +512,10 @@ rm_tmpdir() {
|
||||
# ###########################################################################
|
||||
# alt_cmds package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/bash/alt_cmds.sh
|
||||
# t/lib/bash/alt_cmds.sh
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
|
||||
|
||||
@@ -560,10 +559,10 @@ _which() {
|
||||
# ###########################################################################
|
||||
# summary_common package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/bash/summary_common.sh
|
||||
# t/lib/bash/summary_common.sh
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
|
||||
|
||||
@@ -690,10 +689,10 @@ get_var () {
|
||||
# ###########################################################################
|
||||
# report_formatting package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/bash/report_formatting.sh
|
||||
# t/lib/bash/report_formatting.sh
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
|
||||
|
||||
@@ -782,10 +781,10 @@ group_concat () {
|
||||
# ###########################################################################
|
||||
# collect_system_info package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/bash/collect_system_info.sh
|
||||
# t/lib/bash/collect_system_info.sh
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
|
||||
|
||||
@@ -860,6 +859,7 @@ collect_system_data () { local PTFUNCNAME=collect_system_data;
|
||||
[ "$CMD_DMIDECODE" ] && $CMD_DMIDECODE > "$data_dir/dmidecode" 2>/dev/null
|
||||
|
||||
find_memory_stats "$platform" > "$data_dir/memory"
|
||||
find_numa_stats > "$data_dir/numactl"
|
||||
[ "$OPT_SUMMARIZE_MOUNTS" ] && mounted_fs_info "$platform" > "$data_dir/mounted_fs"
|
||||
raid_controller "$data_dir/dmesg_file" "$data_dir/lspci_file" >> "$data_dir/summary"
|
||||
|
||||
@@ -888,7 +888,7 @@ collect_system_data () { local PTFUNCNAME=collect_system_data;
|
||||
fi
|
||||
|
||||
fio_status_minus_a "$data_dir/fusion-io_card"
|
||||
|
||||
|
||||
for file in $data_dir/*; do
|
||||
[ "$file" = "vmstat" ] && continue
|
||||
[ ! -s "$file" ] && rm "$file"
|
||||
@@ -925,7 +925,7 @@ fio_status_minus_a () {
|
||||
|
||||
print "${adapter}_general $adapter_general";
|
||||
print "${adapter}_modules @connected_modules";
|
||||
|
||||
|
||||
for my $module (@connected_modules) {
|
||||
my ($rest, $attached, $general, $firmware, $temperature, $media_status) = /(
|
||||
^ \s* $module \s+ (Attached[^\n]+) \n
|
||||
@@ -946,7 +946,7 @@ fio_status_minus_a () {
|
||||
} while <>;
|
||||
|
||||
print "adapters @adapters\n";
|
||||
|
||||
|
||||
exit;
|
||||
EOP
|
||||
|
||||
@@ -976,6 +976,12 @@ linux_exclusive_collection () { local PTFUNCNAME=linux_exclusive_collection;
|
||||
echo "dirtystatus $(awk '/vm.dirty_bytes/{print $3}' "$data_dir/sysctl"), $(awk '/vm.dirty_background_bytes/{print $3}' "$data_dir/sysctl")" >> "$data_dir/summary"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -e "$data_dir/numactl" ]; then
|
||||
echo "numa-available $(awk '/available/{print $2}' "$data_dir/numactl")" >> "$data_dir/summary"
|
||||
echo "numa-policy $(awk '/policy/{print $2}' "$data_dir/numactl")" >> "$data_dir/summary"
|
||||
echo "numa-preferred-node $(awk '/preferred node/{print $3}' "$data_dir/numactl")" >> "$data_dir/summary"
|
||||
fi
|
||||
|
||||
schedulers_and_queue_size "$data_dir/summary" > "$data_dir/partitioning"
|
||||
|
||||
@@ -1174,13 +1180,20 @@ find_memory_stats () { local PTFUNCNAME=find_memory_stats;
|
||||
local platform="$1"
|
||||
|
||||
if [ "${platform}" = "Linux" ]; then
|
||||
free -bw
|
||||
free -b
|
||||
cat /proc/meminfo
|
||||
elif [ "${platform}" = "SunOS" ]; then
|
||||
$CMD_PRTCONF | awk -F: '/Memory/{print $2}'
|
||||
fi
|
||||
}
|
||||
|
||||
find_numa_stats () { local PTFUNCNAME=find_numa_stats;
|
||||
if command -v numactl >/dev/null; then
|
||||
numactl --hardware
|
||||
numactl --show
|
||||
fi
|
||||
}
|
||||
|
||||
mounted_fs_info () { local PTFUNCNAME=mounted_fs_info;
|
||||
local platform="$1"
|
||||
|
||||
@@ -1278,7 +1291,7 @@ top_processes () { local PTFUNCNAME=top_processes;
|
||||
|
||||
notable_processes_info () { local PTFUNCNAME=notable_processes_info;
|
||||
local format="%5s %+2d %s\n"
|
||||
local sshd_pid=$(ps -eo pid,args | awk '$0 ~ /\/usr\/sbin\/sshd/ { print $1; exit }')
|
||||
local sshd_pid=$(ps -eo pid,args | awk '$2 ~ /\/usr\/sbin\/sshd/ { print $1; exit }')
|
||||
|
||||
echo " PID OOM COMMAND"
|
||||
|
||||
@@ -1304,7 +1317,7 @@ processor_info () { local PTFUNCNAME=processor_info;
|
||||
cat /proc/cpuinfo > "$data_dir/proc_cpuinfo_copy" 2>/dev/null
|
||||
elif [ "${platform}" = "SunOS" ]; then
|
||||
$CMD_PSRINFO -v > "$data_dir/psrinfo_minus_v"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
propietary_raid_controller () { local PTFUNCNAME=propietary_raid_controller;
|
||||
@@ -1327,7 +1340,7 @@ propietary_raid_controller () { local PTFUNCNAME=propietary_raid_controller;
|
||||
echo "internal::raid_opt 2" >> "$variable_file"
|
||||
fi
|
||||
elif [ "${controller}" = "LSI Logic MegaRAID SAS" ]; then
|
||||
if [ -z "$CMD_MEGACLI64" ]; then
|
||||
if [ -z "$CMD_MEGACLI64" ]; then
|
||||
notfound="your package repository or the manufacturer's website"
|
||||
else
|
||||
echo "internal::raid_opt 3" >> "$variable_file"
|
||||
@@ -1351,16 +1364,16 @@ propietary_raid_controller () { local PTFUNCNAME=propietary_raid_controller;
|
||||
# ###########################################################################
|
||||
# report_system_info package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/bash/report_system_info.sh
|
||||
# t/lib/bash/report_system_info.sh
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
|
||||
|
||||
set -u
|
||||
|
||||
|
||||
|
||||
parse_proc_cpuinfo () { local PTFUNCNAME=parse_proc_cpuinfo;
|
||||
local file="$1"
|
||||
local virtual="$(grep -c ^processor "${file}")";
|
||||
@@ -1521,6 +1534,27 @@ parse_dmidecode_mem_devices () { local PTFUNCNAME=parse_dmidecode_mem_devices;
|
||||
| awk -F'|' '{printf(" %-9s %-8s %-17s %-13s %-13s %-8s\n", $4, $2, $7, $3, $5, $6);}'
|
||||
}
|
||||
|
||||
parse_numactl () { local PTFUNCNAME=parse_numactl;
|
||||
local file="$1"
|
||||
|
||||
[ -e "$file" ] || return
|
||||
|
||||
echo " Node Size Free CPUs"
|
||||
echo " ==== ==== ==== ===="
|
||||
|
||||
sed -n -e 's/node /node/g' \
|
||||
-e '/node[[:digit:]]/p' \
|
||||
"${file}" \
|
||||
| sort -r \
|
||||
| awk '$1 == cnode {
|
||||
if (NF > 4) { for(i=3;i<=NF;i++){printf("%s ", $i)} printf "\n" }
|
||||
else { printf("%-12s", $3" "$4); }
|
||||
}
|
||||
$1 != cnode { cnode = $1; printf(" %-8s", $1); printf("%-12s", $3" "$4); }'
|
||||
|
||||
echo
|
||||
}
|
||||
|
||||
parse_ip_s_link () { local PTFUNCNAME=parse_ip_s_link;
|
||||
local file="$1"
|
||||
|
||||
@@ -2045,6 +2079,9 @@ section_Memory () {
|
||||
local platform="$1"
|
||||
local data_dir="$2"
|
||||
|
||||
local name_val_len_orig=$NAME_VAL_LEN;
|
||||
local NAME_VAL_LEN=14
|
||||
|
||||
section "Memory"
|
||||
if [ "${platform}" = "Linux" ]; then
|
||||
parse_free_minus_b "$data_dir/memory"
|
||||
@@ -2070,6 +2107,16 @@ section_Memory () {
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -s "$data_dir/numactl" ]; then
|
||||
name_val "Numa Nodes" "$(get_var "numa-available" "$data_dir/summary")"
|
||||
name_val "Numa Policy" "$(get_var "numa-policy" "$data_dir/summary")"
|
||||
name_val "Preferred Node" "$(get_var "numa-preferred-node" "$data_dir/summary")"
|
||||
|
||||
parse_numactl "$data_dir/numactl"
|
||||
fi
|
||||
|
||||
local NAME_VAL_LEN=$name_val_len_orig;
|
||||
|
||||
if [ -s "$data_dir/dmidecode" ]; then
|
||||
parse_dmidecode_mem_devices "$data_dir/dmidecode"
|
||||
fi
|
||||
@@ -2091,7 +2138,7 @@ report_fio_minus_a () {
|
||||
local file="$1"
|
||||
|
||||
name_val "fio Driver" "$(get_var driver_version "$file")"
|
||||
|
||||
|
||||
local adapters="$( get_var "adapters" "$file" )"
|
||||
for adapter in $( echo $adapters | awk '{for (i=1; i<=NF; i++) print $i;}' ); do
|
||||
local adapter_for_output="$(echo "$adapter" | sed 's/::[0-9]*$//' | tr ':' ' ')"
|
||||
@@ -2161,7 +2208,7 @@ report_system_summary () { local PTFUNCNAME=report_system_summary;
|
||||
section "Fusion-io Card"
|
||||
report_fio_minus_a "$data_dir/fusion-io_card"
|
||||
fi
|
||||
|
||||
|
||||
if [ -s "$data_dir/mounted_fs" ]; then
|
||||
section "Mounted Filesystems"
|
||||
parse_filesystems "$data_dir/mounted_fs" "${platform}"
|
||||
@@ -2176,7 +2223,7 @@ report_system_summary () { local PTFUNCNAME=report_system_summary;
|
||||
name_val "${disk}" "${scheduler:-"UNREADABLE"}"
|
||||
done
|
||||
|
||||
section "Disk Partioning"
|
||||
section "Disk Partitioning"
|
||||
parse_fdisk "$data_dir/partitioning"
|
||||
|
||||
section "Kernel Inode State"
|
||||
@@ -2253,23 +2300,17 @@ report_system_summary () { local PTFUNCNAME=report_system_summary;
|
||||
|
||||
section "Memory management"
|
||||
report_transparent_huge_pages
|
||||
|
||||
section "The End"
|
||||
}
|
||||
|
||||
report_transparent_huge_pages () {
|
||||
|
||||
STATUS_THP_SYSTEM=""
|
||||
if [ -f /sys/kernel/mm/transparent_hugepage/enabled ]; then
|
||||
CONTENT_TRANSHP=$(cat /sys/kernel/mm/transparent_hugepage/enabled)
|
||||
STATUS_THP_SYSTEM=$(echo $CONTENT_TRANSHP | grep -cv '\[never\]')
|
||||
elif [ -f /sys/kernel/mm/redhat_transparent_hugepage/enabled ]; then
|
||||
CONTENT_TRANSHP=$(</sys/kernel/mm/redhat_transparent_hugepage/enabled)
|
||||
CONTENT_TRANSHP=$(</sys/kernel/mm/transparent_hugepage/enabled)
|
||||
STATUS_THP_SYSTEM=$(echo $CONTENT_TRANSHP | grep -cv '\[never\]')
|
||||
fi
|
||||
|
||||
if [ -z $STATUS_THP_SYSTEM ]; then
|
||||
echo "Unable to get Transparent huge pages status."
|
||||
elif [ $STATUS_THP_SYSTEM = 0 ]; then
|
||||
if [ $STATUS_THP_SYSTEM = 0 ]; then
|
||||
echo "Transparent huge pages are currently disabled on the system."
|
||||
else
|
||||
echo "Transparent huge pages are enabled."
|
||||
@@ -2277,7 +2318,6 @@ report_transparent_huge_pages () {
|
||||
|
||||
}
|
||||
|
||||
|
||||
# ###########################################################################
|
||||
# End report_system_info package
|
||||
# ###########################################################################
|
||||
@@ -2476,7 +2516,7 @@ C<df>. This section is skipped if you disable L<"--summarize-mounts">.
|
||||
The disk scheduler information is extracted from the F</sys> filesystem in
|
||||
Linux.
|
||||
|
||||
# Disk Partioning ############################################
|
||||
# Disk Partitioning ######################################
|
||||
Device Type Start End Size
|
||||
============ ==== ========== ========== ==================
|
||||
/dev/sda Disk 17179869184
|
||||
@@ -2729,7 +2769,7 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-summary 3.4.0
|
||||
pt-summary 3.5.0
|
||||
|
||||
=cut
|
||||
|
||||
|
62
bin/pt-table-checksum
Executable file → Normal file
62
bin/pt-table-checksum
Executable file → Normal file
@@ -50,15 +50,15 @@ BEGIN {
|
||||
# ###########################################################################
|
||||
# Percona::Toolkit package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/Percona/Toolkit.pm
|
||||
# t/lib/Percona/Toolkit.t
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.3.2';
|
||||
our $VERSION = '3.5.0';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -939,7 +939,7 @@ sub get_instances_to_check {
|
||||
my @instances_to_check;
|
||||
foreach my $instance ( @$instances ) {
|
||||
my $last_check_time = $last_check_time_for{ $instance->{id} };
|
||||
PTDEBUG && _d('Intsance', $instance->{id}, 'last checked',
|
||||
PTDEBUG && _d('Instance', $instance->{id}, 'last checked',
|
||||
$last_check_time, 'now', $now, 'diff', $now - ($last_check_time || 0),
|
||||
'hours until next check',
|
||||
sprintf '%.2f',
|
||||
@@ -7566,10 +7566,10 @@ sub _d {
|
||||
# ###########################################################################
|
||||
# SchemaIterator package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/SchemaIterator.pm
|
||||
# t/lib/SchemaIterator.t
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
{
|
||||
package SchemaIterator;
|
||||
@@ -7974,7 +7974,7 @@ sub engine_is_allowed {
|
||||
my $filter = $self->{filters};
|
||||
|
||||
if ( $filter->{'ignore-engines'}->{$engine} ) {
|
||||
PTDEBUG && _d('Engine', $engine, 'is in --ignore-databases list');
|
||||
PTDEBUG && _d('Engine', $engine, 'is in --ignore-engines list');
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -10591,20 +10591,24 @@ sub main {
|
||||
}
|
||||
}
|
||||
|
||||
for my $slave (@$slaves) {
|
||||
my $qrt_plugin_status;
|
||||
eval {
|
||||
($qrt_plugin_status) = $slave->{dbh}->selectrow_arrayref('SELECT @@QUERY_RESPONSE_TIME_SESSION_STATS' );
|
||||
};
|
||||
if ($EVAL_ERROR) {
|
||||
PTDEBUG && _d('QRT plugin is not installed on slave '.$slave->{dsn_name});
|
||||
$slave->{qrt_plugin_status} = undef;
|
||||
next;
|
||||
}
|
||||
$slave->{qrt_plugin_status} = $qrt_plugin_status->[0];
|
||||
if ($slave->{qrt_plugin_status}) {
|
||||
PTDEBUG && _d("Disabling qrt plugin state on slave ".$slave->{dsn_name});
|
||||
$slave->{dbh}->do('SET GLOBAL query_response_time_stats = off');
|
||||
# don't touch the QRT plugin on the slave unless we asked for it
|
||||
# to be disabled.
|
||||
if ($o->get('disable-qrt-plugin')) {
|
||||
for my $slave (@$slaves) {
|
||||
my $qrt_plugin_status;
|
||||
eval {
|
||||
($qrt_plugin_status) = $slave->{dbh}->selectrow_arrayref('SELECT @@QUERY_RESPONSE_TIME_SESSION_STATS' );
|
||||
};
|
||||
if ($EVAL_ERROR) {
|
||||
PTDEBUG && _d('QRT plugin is not installed on slave '.$slave->{dsn_name});
|
||||
$slave->{qrt_plugin_status} = undef;
|
||||
next;
|
||||
}
|
||||
$slave->{qrt_plugin_status} = $qrt_plugin_status->[0];
|
||||
if ($slave->{qrt_plugin_status}) {
|
||||
PTDEBUG && _d("Disabling qrt plugin state on slave ".$slave->{dsn_name});
|
||||
$slave->{dbh}->do('SET GLOBAL query_response_time_stats = off');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11488,7 +11492,7 @@ sub main {
|
||||
TABLE:
|
||||
while ( $oktorun && $have_time->() && (my $tbl = $schema_iter->next()) ) {
|
||||
eval {
|
||||
# Results, stats, and info related to checksuming this table can
|
||||
# Results, stats, and info related to checksumming this table can
|
||||
# be saved here. print_checksum_results() uses this info.
|
||||
$tbl->{checksum_results} = {};
|
||||
|
||||
@@ -13101,7 +13105,7 @@ type: string
|
||||
Channel name used when connected to a server using replication channels.
|
||||
Suppose you have two masters, master_a at port 12345, master_b at port 1236 and
|
||||
a slave connected to both masters using channels chan_master_a and chan_master_b.
|
||||
If you want to run pt-table-sync to syncronize the slave against master_a, pt-table-sync
|
||||
If you want to run pt-table-sync to synchronize the slave against master_a, pt-table-sync
|
||||
won't be able to determine what's the correct master since SHOW SLAVE STATUS
|
||||
will return 2 rows. In this case, you can use --channel=chan_master_a to specify
|
||||
the channel name to use in the SHOW SLAVE STATUS command.
|
||||
@@ -13119,7 +13123,7 @@ See "Replicas using row-based replication" under L<"LIMITATIONS">.
|
||||
This option modifies the behavior of L<"--create-replicate-table"> such that the
|
||||
replicate table's upper and lower boundary columns are created with the BLOB
|
||||
data type.
|
||||
This is useful in cases where you have trouble checksuming tables with keys that
|
||||
This is useful in cases where you have trouble checksumming tables with keys that
|
||||
include a binary data type or that have non-standard character sets.
|
||||
See L<"--replicate">.
|
||||
|
||||
@@ -13347,7 +13351,9 @@ Only checksum this comma-separated list of databases.
|
||||
|
||||
type: string; group: Filter
|
||||
|
||||
Only checksum databases whose names match this Perl regex.
|
||||
Only checksum databases whose names match this Perl regex. This is matched
|
||||
against the lowercase table name. This is the bare regex; it should not be
|
||||
enclosed in slashes.
|
||||
|
||||
=item --defaults-file
|
||||
|
||||
@@ -13478,7 +13484,9 @@ the database name. The L<"--replicate"> table is always automatically ignored.
|
||||
|
||||
type: string; group: Filter
|
||||
|
||||
Ignore tables whose names match the Perl regex.
|
||||
Ignore tables whose names match the Perl regex. This is matched
|
||||
against the lowercase table name. This is the bare regex; it should not be
|
||||
enclosed in slashes.
|
||||
|
||||
=item --max-lag
|
||||
|
||||
@@ -14188,6 +14196,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-table-checksum 3.4.0
|
||||
pt-table-checksum 3.5.0
|
||||
|
||||
=cut
|
||||
|
@@ -47,15 +47,15 @@ BEGIN {
|
||||
# ###########################################################################
|
||||
# Percona::Toolkit package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/Percona/Toolkit.pm
|
||||
# t/lib/Percona/Toolkit.t
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.3.2';
|
||||
our $VERSION = '3.5.0';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -7666,10 +7666,10 @@ sub _d {
|
||||
# ###########################################################################
|
||||
# SchemaIterator package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/SchemaIterator.pm
|
||||
# t/lib/SchemaIterator.t
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
{
|
||||
package SchemaIterator;
|
||||
@@ -8074,7 +8074,7 @@ sub engine_is_allowed {
|
||||
my $filter = $self->{filters};
|
||||
|
||||
if ( $filter->{'ignore-engines'}->{$engine} ) {
|
||||
PTDEBUG && _d('Engine', $engine, 'is in --ignore-databases list');
|
||||
PTDEBUG && _d('Engine', $engine, 'is in --ignore-engines list');
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -9403,7 +9403,7 @@ sub get_instances_to_check {
|
||||
my @instances_to_check;
|
||||
foreach my $instance ( @$instances ) {
|
||||
my $last_check_time = $last_check_time_for{ $instance->{id} };
|
||||
PTDEBUG && _d('Intsance', $instance->{id}, 'last checked',
|
||||
PTDEBUG && _d('Instance', $instance->{id}, 'last checked',
|
||||
$last_check_time, 'now', $now, 'diff', $now - ($last_check_time || 0),
|
||||
'hours until next check',
|
||||
sprintf '%.2f',
|
||||
@@ -9964,7 +9964,7 @@ sub main {
|
||||
$o->save_error("--conflict-comparison $cc requires --conflict-value")
|
||||
}
|
||||
|
||||
# Override --algorithms becuase only TableSyncChunk works with
|
||||
# Override --algorithms because only TableSyncChunk works with
|
||||
# bidirectional syncing.
|
||||
$o->set('algorithms', 'Chunk');
|
||||
$o->set('buffer-to-client', 0);
|
||||
@@ -12199,7 +12199,7 @@ type: string
|
||||
Channel name used when connected to a server using replication channels.
|
||||
Suppose you have two masters, master_a at port 12345, master_b at port 1236 and
|
||||
a slave connected to both masters using channels chan_master_a and chan_master_b.
|
||||
If you want to run pt-table-sync to syncronize the slave against master_a, pt-table-sync
|
||||
If you want to run pt-table-sync to synchronize the slave against master_a, pt-table-sync
|
||||
won't be able to determine what's the correct master since SHOW SLAVE STATUS
|
||||
will return 2 rows. In this case, you can use --channel=chan_master_a to specify
|
||||
the channel name to use in the SHOW SLAVE STATUS command.
|
||||
@@ -13101,6 +13101,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-table-sync 3.4.0
|
||||
pt-table-sync 3.5.0
|
||||
|
||||
=cut
|
||||
|
@@ -8519,6 +8519,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-table-usage 3.4.0
|
||||
pt-table-usage 3.5.0
|
||||
|
||||
=cut
|
||||
|
@@ -53,15 +53,15 @@ BEGIN {
|
||||
# ###########################################################################
|
||||
# Percona::Toolkit package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/Percona/Toolkit.pm
|
||||
# t/lib/Percona/Toolkit.t
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.3.2';
|
||||
our $VERSION = '3.5.0';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -4250,7 +4250,7 @@ sub get_instances_to_check {
|
||||
my @instances_to_check;
|
||||
foreach my $instance ( @$instances ) {
|
||||
my $last_check_time = $last_check_time_for{ $instance->{id} };
|
||||
PTDEBUG && _d('Intsance', $instance->{id}, 'last checked',
|
||||
PTDEBUG && _d('Instance', $instance->{id}, 'last checked',
|
||||
$last_check_time, 'now', $now, 'diff', $now - ($last_check_time || 0),
|
||||
'hours until next check',
|
||||
sprintf '%.2f',
|
||||
@@ -10697,7 +10697,7 @@ on the new version of MySQL.
|
||||
|
||||
pt-upgrade executes queries from slow, general, binary, tcpdump, and
|
||||
"raw" logs on two servers, compares many aspects of each query's exeuction
|
||||
and results, and reports any signficant differences. The two servers are
|
||||
and results, and reports any significant differences. The two servers are
|
||||
typically development servers, one running the current production version
|
||||
of MySQL and the other running the new version of MySQL.
|
||||
|
||||
@@ -10785,7 +10785,7 @@ network intensive. It executes queries as fast as possible.
|
||||
|
||||
=head1 QUERY DIFFERENCES
|
||||
|
||||
Signficant query differences are determined by comparing these aspects
|
||||
Significant query differences are determined by comparing these aspects
|
||||
of each query from both hosts:
|
||||
|
||||
=over
|
||||
@@ -11137,7 +11137,7 @@ should be printed, in percentage, seconds, or number of iterations.
|
||||
default: yes
|
||||
|
||||
Execute only C<SELECT> and C<SET> statements. If C<--no-read-only> is
|
||||
specified, I<all> queries are exeucted: C<DROP>, C<DELETE>, C<UPDATE>, etc.
|
||||
specified, I<all> queries are executed: C<DROP>, C<DELETE>, C<UPDATE>, etc.
|
||||
Even when running in default read-only mode, you should use a MySQL user
|
||||
with only C<SELECT> privileges to insure against bugs in the tool.
|
||||
|
||||
@@ -11454,6 +11454,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-upgrade 3.4.0
|
||||
pt-upgrade 3.5.0
|
||||
|
||||
=cut
|
||||
|
@@ -36,15 +36,15 @@ BEGIN {
|
||||
# ###########################################################################
|
||||
# Percona::Toolkit package
|
||||
# This package is a copy without comments from the original. The original
|
||||
# with comments and its test file can be found in the Bazaar repository at,
|
||||
# with comments and its test file can be found in the GitHub repository at,
|
||||
# lib/Percona/Toolkit.pm
|
||||
# t/lib/Percona/Toolkit.t
|
||||
# See https://launchpad.net/percona-toolkit for more information.
|
||||
# See https://github.com/percona/percona-toolkit for more information.
|
||||
# ###########################################################################
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.3.2';
|
||||
our $VERSION = '3.5.0';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -4668,7 +4668,7 @@ sub get_instances_to_check {
|
||||
my @instances_to_check;
|
||||
foreach my $instance ( @$instances ) {
|
||||
my $last_check_time = $last_check_time_for{ $instance->{id} };
|
||||
PTDEBUG && _d('Intsance', $instance->{id}, 'last checked',
|
||||
PTDEBUG && _d('Instance', $instance->{id}, 'last checked',
|
||||
$last_check_time, 'now', $now, 'diff', $now - ($last_check_time || 0),
|
||||
'hours until next check',
|
||||
sprintf '%.2f',
|
||||
@@ -6262,6 +6262,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-variable-advisor 3.4.0
|
||||
pt-variable-advisor 3.5.0
|
||||
|
||||
=cut
|
||||
|
@@ -3308,6 +3308,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
pt-visual-explain 3.4.0
|
||||
pt-visual-explain 3.5.0
|
||||
|
||||
=cut
|
||||
|
@@ -15,6 +15,9 @@ BuildArch: x86_64
|
||||
|
||||
BuildRequires: perl(ExtUtils::MakeMaker) make
|
||||
Requires: perl(DBI) >= 1.13, perl(DBD::mysql) >= 1.0, perl(Time::HiRes), perl(IO::Socket::SSL), perl(Digest::MD5), perl(Term::ReadKey)
|
||||
%if 0%{?rhel} > 9
|
||||
Requires: perl(English)
|
||||
%endif
|
||||
AutoReq: no
|
||||
|
||||
%description
|
||||
|
@@ -50,6 +50,12 @@ html:
|
||||
@echo
|
||||
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
|
||||
|
||||
thtml:
|
||||
@echo "Building html doc"
|
||||
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) -c conf-material $(BUILDDIR)/html
|
||||
@echo
|
||||
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
|
||||
|
||||
dirhtml:
|
||||
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
|
||||
@echo
|
||||
|
BIN
config/sphinx-build/Percona_Logo_Color.png
Normal file
BIN
config/sphinx-build/Percona_Logo_Color.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
BIN
config/sphinx-build/__pycache__/conf.cpython-37.pyc
Normal file
BIN
config/sphinx-build/__pycache__/conf.cpython-37.pyc
Normal file
Binary file not shown.
BIN
config/sphinx-build/__pycache__/conf.cpython-38.pyc
Normal file
BIN
config/sphinx-build/__pycache__/conf.cpython-38.pyc
Normal file
Binary file not shown.
39
config/sphinx-build/_static/_templates/theme/header.html
Normal file
39
config/sphinx-build/_static/_templates/theme/header.html
Normal file
@@ -0,0 +1,39 @@
|
||||
<header class="md-header" data-md-component="header">
|
||||
<nav class="md-header-nav md-grid">
|
||||
<div class="md-flex navheader">
|
||||
<div class="md-flex__cell md-flex__cell--shrink">
|
||||
<a href="https://www.percona.com/software/documentation" title="{{ docstitle|e }}"
|
||||
class="md-header-nav__button md-logo">
|
||||
{% if theme_logo_icon|e %}
|
||||
<i class="md-icon">{{ theme_logo_icon }}</i>
|
||||
{% elif logo %}
|
||||
<img src="{{ pathto('_static/' ~ logo, 1) }}" height="26"
|
||||
alt="{{ shorttitle|striptags|e }} logo">
|
||||
{% else %}
|
||||
|
||||
{% endif %}
|
||||
</a>
|
||||
</div>
|
||||
<div class="md-flex__cell md-flex__cell--shrink">
|
||||
<label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label>
|
||||
</div>
|
||||
<div class="md-flex__cell md-flex__cell--stretch">
|
||||
<div class="md-flex__ellipsis md-header-nav__title" data-md-component="title">
|
||||
<span class="md-header-nav__topic"> {{ title|striptags|e }} </span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-flex__cell md-flex__cell--shrink">
|
||||
<label class="md-icon md-icon--search md-header-nav__button" for="__search"></label>
|
||||
{% include "searchbox.html" %}
|
||||
</div>
|
||||
{% if theme_repo_url %}
|
||||
<div class="md-flex__cell md-flex__cell--shrink">
|
||||
<div class="md-header-nav__source">
|
||||
{% include "repo.html" %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% include "version_dropdown.html" %}
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
19
config/sphinx-build/_static/_templates/theme/layout.html
Normal file
19
config/sphinx-build/_static/_templates/theme/layout.html
Normal file
@@ -0,0 +1,19 @@
|
||||
{# Import the theme's layout. #}
|
||||
{% extends "!layout.html" %}
|
||||
|
||||
{# Adds Google Analytics events on button click. #}
|
||||
{%- block extrahead %}
|
||||
<script>
|
||||
var _gaq = _gaq || [];
|
||||
_gaq.push(['_setAccount', 'UA-343802-3']);
|
||||
_gaq.push(['_trackPageview']);
|
||||
</script>
|
||||
{{ super() }}
|
||||
{%- endblock %}
|
||||
|
||||
|
||||
{%- block relbar2 %}
|
||||
{% include "relbar2.html" %}
|
||||
{%- endblock %}
|
||||
|
||||
|
26
config/sphinx-build/_static/_templates/theme/localtoc.html
Normal file
26
config/sphinx-build/_static/_templates/theme/localtoc.html
Normal file
@@ -0,0 +1,26 @@
|
||||
{% set toc_nodes = derender_toc(toc, True, pagename) if display_toc else [] %}
|
||||
<nav class="md-nav md-nav--secondary">
|
||||
{%- if display_toc and toc_nodes and sidebars and 'localtoc.html' in sidebars %}
|
||||
<label class="md-nav__title" for="__toc">Contents</label>
|
||||
{%- endif %}
|
||||
<ul class="md-nav__list" data-md-scrollfix="">
|
||||
{%- if display_toc and sidebars and 'localtoc.html' in sidebars %}
|
||||
{%- for item in toc_nodes recursive %}
|
||||
<li class="md-nav__item"><a href="{{ item.href|e }}" class="md-nav__link">{{ item.contents }}</a>
|
||||
{%- if item.children -%}
|
||||
<nav class="md-nav">
|
||||
<ul class="md-nav__list">{{ loop(item.children) }}</ul>
|
||||
</nav>
|
||||
{%- endif %}
|
||||
</li>
|
||||
{%- endfor %}
|
||||
{%- endif %}
|
||||
{%- if show_source %}
|
||||
{% include "sourcelink.html" %}
|
||||
{%- endif %}
|
||||
{% if theme_repo_url|e %}
|
||||
<li class="md-nav__item"><a class="md-nav__extra_link" href="{{ theme_repo_url }}/{{ edit_uri }}/{{ pagename }}.rst" target="_blank">
|
||||
<i class="fa fa-github"></i> Edit this page</a> </li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</nav>
|
14
config/sphinx-build/_static/_templates/theme/relbar2.html
Normal file
14
config/sphinx-build/_static/_templates/theme/relbar2.html
Normal file
@@ -0,0 +1,14 @@
|
||||
<div class="md-relbar2__inner md-grid">
|
||||
<div class="md-content">
|
||||
<article class="md-content__inner md-typeset" role="main">
|
||||
<h4>Contact Us </h4>
|
||||
<p>For free technical help, visit the Percona <a class="reference external" href="https://forums.percona.com/c/mongodb/percona-server-for-mongodb/17?utm_campaign=Doc%20pages" target="_blank">Community Forum</a>.<br>
|
||||
<p>To report bugs or submit feature requests, open a <a class="reference external" href="https://jira.percona.com/projects/PT/issues/" target="_blank">JIRA</a> ticket.<br>
|
||||
<p>For paid <a class="reference external" href="https://www.percona.com/services/support"> support </a> and <a class="reference external" href="https://www.percona.com/services/managed-services"> managed </a> or <a class="reference external" href="https://www.percona.com/services/consulting">consulting services </a>, contact <a class="reference external" href="https://www.percona.com/about-percona/contact" target="_blank">Percona Sales</a>.</p>
|
||||
<hr>
|
||||
{# Add the last updated timestamp from git commits using gitstamp extension #}
|
||||
{%- if gitstamp %} <small> Last update: {{gitstamp}} </small>
|
||||
{%- endif %}
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
22
config/sphinx-build/_static/_templates/theme/sidebar.html
Normal file
22
config/sphinx-build/_static/_templates/theme/sidebar.html
Normal file
@@ -0,0 +1,22 @@
|
||||
<nav class="md-nav md-nav--primary" data-md-level="0">
|
||||
<label class="md-nav__title md-nav__title--site" for="__drawer">
|
||||
<a href="{{ pathto(master_doc)|e }}" title="{{ docstitle|striptags|e }}" class="md-nav__button md-logo">
|
||||
{% if theme_logo_icon %}
|
||||
<i class="md-icon">{{ theme_logo_icon }}</i>
|
||||
{% else %}
|
||||
<img src="{{ pathto('_static/' ~ logo, 1) }}" alt="{{ html_title }} logo" width="48" height="48">
|
||||
{% endif %}
|
||||
</a>
|
||||
<a href="{{ pathto(master_doc)|e }}"
|
||||
title="{{ docstitle|striptags|e }}">{{ theme_nav_title or shorttitle }}</a>
|
||||
</label>
|
||||
{%- if theme_repo_url %}
|
||||
<div class="md-nav__source">
|
||||
{% include "repo.html" %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% include "globaltoc.html" %}
|
||||
<label class="md-nav__title md-nav__title--site" for="__drawer">
|
||||
<a title="Download PDF Manual" onclick="_gaq.push(['b._trackEvent', 'Percona Toolkit', 'Download', 'Download Percona Toolkit {{version}} Manual']);" href="https://learn.percona.com/download-percona-toolkit-3-manual" class="md-nav__link">Download PDF Manual <span class="glyphicon glyphicon-chevron-down"></span></a>
|
||||
</label>
|
||||
</nav>
|
33
config/sphinx-build/_static/css/material.css
Normal file
33
config/sphinx-build/_static/css/material.css
Normal file
@@ -0,0 +1,33 @@
|
||||
.md-relbar2__inner{
|
||||
padding-top:0;
|
||||
padding-bottom:0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.sphinx-tabs-tab {
|
||||
position: relative;
|
||||
font-family: "Chivo", "Colfax", Helvetica, Arial, sans-serif;
|
||||
color: #fb8c00;
|
||||
line-height: 24px;
|
||||
margin: 0;
|
||||
font-size: 19px;
|
||||
font-weight: 400;
|
||||
background-color: rgba(255, 255, 255, 0);
|
||||
border-radius: 5px 5px 0 0;
|
||||
border: 0;
|
||||
padding: 1rem 1.5rem;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.md-typeset{
|
||||
font-size:.7rem;
|
||||
line-height:1.6;
|
||||
-webkit-print-color-adjust:exact
|
||||
}
|
||||
|
||||
body,input{
|
||||
color:rgba(0,0,0,.87);
|
||||
-webkit-font-feature-settings:"kern","liga";
|
||||
font-feature-settings:"kern","liga";
|
||||
font-family:"Chivo", "Colfax", "Franziska", Helvetica, Arial, sans-serif;
|
||||
}
|
15
config/sphinx-build/_static/css/tabs.css
Normal file
15
config/sphinx-build/_static/css/tabs.css
Normal file
@@ -0,0 +1,15 @@
|
||||
.sphinx-tabs-tab {
|
||||
position: relative;
|
||||
font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
color: #fb8c00;
|
||||
line-height: 24px;
|
||||
margin: 0;
|
||||
font-size: 19px;
|
||||
font-weight: 400;
|
||||
background-color: rgba(255, 255, 255, 0);
|
||||
border-radius: 5px 5px 0 0;
|
||||
border: 0;
|
||||
padding: 1rem 1.5rem;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
BIN
config/sphinx-build/_static/percona-logo.jpg
Normal file
BIN
config/sphinx-build/_static/percona-logo.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 54 KiB |
12
config/sphinx-build/_static/percona-logo.svg
Normal file
12
config/sphinx-build/_static/percona-logo.svg
Normal file
@@ -0,0 +1,12 @@
|
||||
<svg width="74" height="74" viewBox="0 0 74 74" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="37" cy="37" r="37" fill="url(#paint0_linear)"/>
|
||||
<path d="M37.5003 58C49.3744 58 59 48.3743 59 36.5C59 24.6257 49.3744 15 37.5003 15C25.6261 15 16 24.6257 16 36.5C16 36.6671 16.0019 36.8338 16.0057 37H16V67.4672C18.744 69.3622 21.7566 70.896 24.969 72H25V53.9948C28.5225 56.5161 32.8381 58 37.5003 58Z" fill="white"/>
|
||||
<path d="M50 36.5C50 43.4036 44.4037 49 37.5001 49C30.5966 49 25 43.4036 25 36.5C25 29.5964 30.5966 24 37.5001 24C44.4037 24 50 29.5964 50 36.5Z" fill="#FCB42F"/>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear" x1="37" y1="0" x2="37" y2="74" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FBB32F"/>
|
||||
<stop offset="0.504739" stop-color="#C11511"/>
|
||||
<stop offset="1" stop-color="#C11411"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
After Width: | Height: | Size: 878 B |
34
config/sphinx-build/conf-material/conf.py
Normal file
34
config/sphinx-build/conf-material/conf.py
Normal file
@@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
import os
|
||||
sys.path.append(os.path.abspath("../"))
|
||||
from conf import *
|
||||
extensions.append('sphinx_gitstamp')
|
||||
extensions.append('sphinx_copybutton')
|
||||
html_sidebars['**']=['globaltoc.html', 'searchbox.html', 'localtoc.html', 'logo-text.html']
|
||||
html_theme = 'sphinx_material'
|
||||
html_theme_options = {
|
||||
'base_url': 'http://bashtage.github.io/sphinx-material/',
|
||||
'repo_url': 'https://github.com/percona/percona-toolkit',
|
||||
'repo_name': 'percona/percona-toolkit',
|
||||
'color_accent': 'grey',
|
||||
'color_primary': 'orange',
|
||||
'globaltoc_collapse': True,
|
||||
'version_dropdown': True
|
||||
}
|
||||
html_logo = '../_static/percona-logo.svg'
|
||||
html_favicon = '../_static/percona_favicon.ico'
|
||||
pygments_style = 'emacs'
|
||||
gitstamp_fmt = "%b %d, %Y"
|
||||
# Specify the text pattern that won't be copied with the code block contents
|
||||
copybutton_prompt_text = '$'
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['../_static/_templates/theme']
|
||||
#html_last_updated_fmt = ''
|
||||
|
||||
# Path to custom css files. These will override the default css attribute if they exist
|
||||
html_css_files = [
|
||||
'../_static/css/material.css',
|
||||
]
|
||||
|
@@ -41,16 +41,16 @@ master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = u'Percona Toolkit'
|
||||
copyright = u'2021, Percona LLC and/or its affiliates'
|
||||
copyright = u'2022, Percona LLC and/or its affiliates'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = '3.4'
|
||||
version = '3.5'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '3.4.0'
|
||||
release = '3.5.0'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
@@ -97,8 +97,20 @@ html_theme = 'percona-theme'
|
||||
# Theme options are theme-specific and customize the look and feel of a theme
|
||||
# further. For a list of options available for each theme, see the
|
||||
# documentation.
|
||||
#html_theme_options = {}
|
||||
#html_theme_options = {
|
||||
# 'base_url': 'http://bashtage.github.io/sphinx-material/',
|
||||
# 'repo_url': 'https://github.com/percona/percona-toolkit',
|
||||
# 'repo_name': 'percona/percona-toolkit',
|
||||
# 'color_accent': 'grey',
|
||||
# 'color_primary': 'orange',
|
||||
# 'google_analytics_account': 'UA-343802-3',
|
||||
# 'globaltoc_collapse': True,
|
||||
# 'version_dropdown': True
|
||||
#}
|
||||
|
||||
html_context = {
|
||||
'edit_uri': 'edit/3.x/source'
|
||||
}
|
||||
# Add any paths that contain custom themes here, relative to this directory.
|
||||
html_theme_path = ['.', './percona-theme']
|
||||
|
||||
@@ -111,17 +123,25 @@ html_short_title = 'Percona Toolkit'
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top
|
||||
# of the sidebar.
|
||||
#html_logo = None
|
||||
#html_logo = '_static/percona-logo.svg'
|
||||
|
||||
# The name of an image file (within the static path) to use as favicon of the
|
||||
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
|
||||
# pixels large.
|
||||
html_favicon = '_static/percona_favicon.ico'
|
||||
#html_favicon = '_static/percona_favicon.ico'
|
||||
|
||||
# Add any paths that contain custom static files (such as style sheets) here,
|
||||
# relative to this directory. They are copied after the builtin static files,
|
||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||
html_static_path = ['_static']
|
||||
#html_static_path = ['_static']
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
#templates_path = ['_static/_templates/theme']
|
||||
|
||||
# Path to custom css files. These will override the default css attribute if they exist
|
||||
html_css_files = [
|
||||
'_static/css/material.css',
|
||||
]
|
||||
|
||||
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
|
||||
# using the given strftime format.
|
||||
@@ -132,7 +152,10 @@ html_static_path = ['_static']
|
||||
#html_use_smartypants = True
|
||||
|
||||
# Custom sidebar templates, maps document names to template names.
|
||||
#html_sidebars = {}
|
||||
html_sidebars = {
|
||||
'**': ['globaltoc.html', 'searchbox.html', 'localtoc.html', 'sourcelink.html'],
|
||||
'using/windows': ['windowssidebar.html'],
|
||||
}
|
||||
|
||||
# Additional templates that should be rendered to pages, maps page names to
|
||||
# template names.
|
||||
@@ -180,12 +203,12 @@ htmlhelp_basename = 'PerconaToolkitdoc'
|
||||
# (source start file, target name, title, author, documentclass [howto/manual]).
|
||||
latex_documents = [
|
||||
('index', 'PerconaToolkit.tex', u'Percona Toolkit Documentation',
|
||||
u'2021, Percona LLC and/or its affiliates', 'manual'),
|
||||
u'2022, Percona LLC and/or its affiliates', 'manual'),
|
||||
]
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top of
|
||||
# the title page.
|
||||
latex_logo = 'percona-logo.jpg'
|
||||
latex_logo = 'Percona_Logo_Color.png'
|
||||
|
||||
# For "manual" documents, if this is true, then toplevel headings are parts,
|
||||
# not chapters.
|
||||
@@ -214,5 +237,5 @@ latex_toplevel_sectioning = 'part'
|
||||
# (source start file, name, description, authors, manual section).
|
||||
man_pages = [
|
||||
('index', 'perconatoolkit', u'Percona Toolkit Documentation',
|
||||
[u'2021, Percona LLC and/or its affiliates'], 1)
|
||||
[u'2022, Percona LLC and/or its affiliates'], 1)
|
||||
]
|
||||
|
@@ -86,6 +86,14 @@ Kill MySQL queries that match certain criteria.
|
||||
|
||||
Look at many samples of MySQL C<SHOW GLOBAL STATUS> side-by-side.
|
||||
|
||||
=item pt-mongodb-index-check
|
||||
|
||||
Performs checks on MongoDB indexes
|
||||
|
||||
=item pt-mongodb-query-digest
|
||||
|
||||
Reports query usage statistics by aggregating queries from MongoDB query profiler
|
||||
|
||||
=item pt-mysql-summary
|
||||
|
||||
Summarize MySQL information nicely.
|
||||
@@ -567,6 +575,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
Percona Toolkit v3.4.0 released 2022-04-05
|
||||
Percona Toolkit v3.5.0 released 2022-11-28
|
||||
|
||||
=cut
|
||||
|
@@ -18,7 +18,6 @@ Data that will be collected
|
||||
"replicationcontrollers",
|
||||
"events",
|
||||
"configmaps",
|
||||
"secrets",
|
||||
"cronjobs",
|
||||
"jobs",
|
||||
"podsecuritypolicies",
|
||||
@@ -37,6 +36,38 @@ Data that will be collected
|
||||
"modes",
|
||||
"your-custom-resource" (depends on 'resource' flag)
|
||||
|
||||
Data, collected for PXC
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
"perconaxtradbbackups",
|
||||
"perconaxtradbclusterbackups",
|
||||
"perconaxtradbclusterrestores",
|
||||
"perconaxtradbclusters"
|
||||
|
||||
Individual files, collected for PXC
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
"var/lib/mysql/mysqld-error.log",
|
||||
"var/lib/mysql/innobackup.backup.log",
|
||||
"var/lib/mysql/innobackup.move.log",
|
||||
"var/lib/mysql/innobackup.prepare.log",
|
||||
"var/lib/mysql/grastate.dat",
|
||||
"var/lib/mysql/gvwstate.dat",
|
||||
"var/lib/mysql/mysqld.post.processing.log",
|
||||
"var/lib/mysql/auto.cnf"
|
||||
|
||||
Data, collected for MongoDB
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
"perconaservermongodbbackups",
|
||||
"perconaservermongodbrestores",
|
||||
"perconaservermongodbs"
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
70
docs/pt-mongodb-index-check.rst
Normal file
70
docs/pt-mongodb-index-check.rst
Normal file
@@ -0,0 +1,70 @@
|
||||
.. _pt-mongodb-index-check:
|
||||
|
||||
=================================
|
||||
:program:`pt-mongodb-index-check`
|
||||
=================================
|
||||
|
||||
Performs checks on MongoDB indexes.
|
||||
|
||||
Checks available
|
||||
================
|
||||
|
||||
Duplicated indexes
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Check for indexes that are the prefix of other indexes. For example if we have these 2 indexes
|
||||
|
||||
.. code-block:: javascript
|
||||
|
||||
db.getSiblingDB("testdb").test_col.createIndex({"f1": 1, "f2": -1, "f3": 1, "f4": 1}, {"name": "idx_01"});
|
||||
db.getSiblingDB("testdb").test_col.createIndex({"f1": 1, "f2": -1, "f3": 1}, {"name": "idx_02"});
|
||||
|
||||
|
||||
The index ``idx_02`` is the prefix of ``idx_01`` because it has the same
|
||||
keys in the same order so, ``idx_02`` can be dropped.
|
||||
|
||||
Unused indexes.
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
This check gets the ``$indexstats`` for all indexes and reports those
|
||||
having ``accesses.ops`` = 0.
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
Run the program as ``pt-mongodb-index-check <command> [flags]``
|
||||
|
||||
Available commands
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
================ ==================================
|
||||
Command Description
|
||||
================ ==================================
|
||||
check-duplicated Run checks for duplicated indexes.
|
||||
check-unused Run check for unused indexes.
|
||||
check-all Run all checks
|
||||
================ ==================================
|
||||
|
||||
Available flags
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
+----------------------------+----------------------------------------+
|
||||
| Flag | Description |
|
||||
+============================+========================================+
|
||||
| –all-databases | Check in all databases excluding |
|
||||
| | system dbs. |
|
||||
+----------------------------+----------------------------------------+
|
||||
| –databases=DATABASES,… | Comma separated list of databases to |
|
||||
| | check. |
|
||||
+----------------------------+----------------------------------------+
|
||||
| –all-collections | Check in all collections in the |
|
||||
| | selected databases. |
|
||||
+----------------------------+----------------------------------------+
|
||||
| –collections=COLLECTIONS,… | Comma separated list of collections to |
|
||||
| | check. |
|
||||
+----------------------------+----------------------------------------+
|
||||
| –mongodb.uri= | Connection URI |
|
||||
+----------------------------+----------------------------------------+
|
||||
| –json | Show output as JSON |
|
||||
+----------------------------+----------------------------------------+
|
||||
|
@@ -1,6 +1,84 @@
|
||||
Percona Toolkit
|
||||
***************
|
||||
|
||||
v3.5.0 released 2022-11-28
|
||||
==============================
|
||||
|
||||
New Features
|
||||
------------
|
||||
|
||||
* :jirabug:`PT-191`: add SSL options to DSN field for pt-online-schema-change
|
||||
|
||||
|
||||
|
||||
Improvements
|
||||
------------------------------------------------------------
|
||||
|
||||
* :jirabug:`PT-1718`: Have pt-stalk collect performance_schema.threads along with information_schema.processlist
|
||||
* :jirabug:`PT-2033`: Avoid running same query concurrently from pt-stalk
|
||||
* :jirabug:`PT-2013`: Change Percona Toolkit tool names to eliminate offensive terminology
|
||||
|
||||
|
||||
|
||||
Bugs Fixed
|
||||
------------
|
||||
|
||||
* :jirabug:`PT-1926`: pt-k8s-debug-collector should not collect passwords
|
||||
* :jirabug:`PT-1628`: pt-mysql-summary checks installed mysqld binary which may not be the version in memory
|
||||
* :jirabug:`PT-1739`: disable-qrt-plugin option of pt-table-checksum is broken (Thanks to Ernie Souhrada for reporting this issue)
|
||||
* :jirabug:`PT-175`: Add support for replication channels on pt-slave-restart
|
||||
* :jirabug:`PT-1052`: Include NUMA information in in pt-summary and pt-stalk output
|
||||
|
||||
* :jirabug:`PT-1799`: pt-osc + PTDEBUG=1 fails with Use of uninitialized value in concatenation (.) or string at /usr/bin/pt-online-schema-change line 4270.
|
||||
* :jirabug:`PT-1897`: pt-stalk on MySQL 8 not collecting "lock" information
|
||||
* :jirabug:`PT-2092`: Improper version of protobuf in go.sum
|
||||
* :jirabug:`PT-2079`: Incorrect version is returned
|
||||
* :jirabug:`PT-2075`: Fix tests for pt-stalk, so they can work with 8.0
|
||||
* :jirabug:`PT-1959`: go part of the toolkit still has the version 3.3.0
|
||||
|
||||
Packaging Notes
|
||||
------------------------
|
||||
|
||||
``percona-toolkit`` is now available on Ubuntu 22.04 and Red Hat Enterprise Linux 9
|
||||
|
||||
v3.4.0 released 2022-07-11
|
||||
==========================
|
||||
|
||||
New Features
|
||||
------------
|
||||
|
||||
* :jirabug:`PT-1978`: Add reporting on unused/redundant indexes for MongoDB by pt-mongodb-summary
|
||||
|
||||
Improvements
|
||||
------------
|
||||
|
||||
* :jirabug:`PT-1417`: Inconsistent creation of toolkit tables
|
||||
* :jirabug:`PT-1800`: The environment variable PTDEBUG=1 exposes the passwords
|
||||
* :jirabug:`PT-1940`: ptsoc dropswap method that was rejected for Mysql 8 has been fixed with Mysql 8.0.14
|
||||
* :jirabug:`PT-1979`: Add gathering of admin parameters for MongoDB by pt-mongodb-summary
|
||||
* :jirabug:`PT-2037`: Add option --skip-mysql or --system-only for pt-stalk
|
||||
|
||||
Bugs Fixed
|
||||
----------
|
||||
|
||||
* :jirabug:`PT-1218`: pt-stalk ominous open_tables function
|
||||
* :jirabug:`PT-1336`: pt-stalk removes user's files from the destination directory
|
||||
* :jirabug:`PT-1398`: pt-stalk gets the incorrect mysqld pid when the host installed a multi MySQL instance
|
||||
* :jirabug:`PT-1627`: pt-mysql-summary doesn't verify which version of jemalloc is in use
|
||||
* :jirabug:`PT-1747`: pt-online-schema-change: metadata lock can break database for rebuild_constraints
|
||||
* :jirabug:`PT-1887`: pt-diskstat is not working for new kernels
|
||||
* :jirabug:`PT-1900`: At times, pt-query-digest does not hide the parameters properly when parameter=binary
|
||||
* :jirabug:`PT-1953`: pt-summary typo: Memory management.
|
||||
* :jirabug:`PT-1959`: go part of the toolkit still has the version 3.3.0
|
||||
* :jirabug:`PT-1965`: pt-stalk --mysql-only doesn't collect mysqladmin output
|
||||
* :jirabug:`PT-1966`: Test no_drop_no_swap for the pt-online-schema-change is broken
|
||||
* :jirabug:`PT-1974`: Support fingerprinting for --print in pt-kill
|
||||
* :jirabug:`PT-1983`: pt-summary missing one DIMM
|
||||
* :jirabug:`PT-2016`: pt-table-checksum fails to build replace query when table lacks primary key
|
||||
* :jirabug:`PT-2023`: pt-upgrade Error: Wide character in print
|
||||
|
||||
|
||||
|
||||
v3.3.1 released 2021-04-28
|
||||
==========================
|
||||
|
||||
|
41
docs/rn.3-5-0.txt
Normal file
41
docs/rn.3-5-0.txt
Normal file
@@ -0,0 +1,41 @@
|
||||
.. _PT-3.5.0:
|
||||
|
||||
================================================================================
|
||||
*Percona Toolkit* 3.5.0
|
||||
================================================================================
|
||||
|
||||
:Date: January 1, 0001
|
||||
:Installation: `Installing Percona Toolkit <https://www.percona.com/doc/percona-toolkit/LATEST/installation.html>`_
|
||||
|
||||
New Features
|
||||
================================================================================
|
||||
|
||||
* :jirabug:`PT-191`: add SSL options to DSN
|
||||
|
||||
|
||||
|
||||
Improvements
|
||||
================================================================================
|
||||
|
||||
* :jirabug:`PT-1718`: Have pt-stalk collect performance_schema.threads along with information_schema.processlist
|
||||
* :jirabug:`PT-2033`: Avoid running same query concurrently from pt-stalk
|
||||
* :jirabug:`PT-2013`: Change PT tool names changes to eliminate offensive terminology
|
||||
|
||||
|
||||
|
||||
Bugs Fixed
|
||||
================================================================================
|
||||
|
||||
* :jirabug:`PT-1926`: pt-k8s-debug-collector should not collect passwords
|
||||
* :jirabug:`PT-1628`: pt-mysql-summary checks installed mysqld binary which may not be the version in memory
|
||||
* :jirabug:`PT-1739`: disable-qrt-plugin option of pt-table-checksum is broken (Thanks to Ernie Souhrada for reporting this issue)
|
||||
* :jirabug:`PT-175`: Add support for replication channels on pt-slave-restart
|
||||
* :jirabug:`PT-1052`: LP #1083488: Include NUMA information in pt-tool output
|
||||
* :jirabug:`PT-1799`: pt-osc + PTDEBUG=1 fails with Use of uninitialized value in concatenation (.) or string at /usr/bin/pt-online-schema-change line 4270.
|
||||
* :jirabug:`PT-1897`: pt-stalk on MySQL 8 not collecting "lock" information
|
||||
* :jirabug:`PT-2092`: Improper version of protobuf in go.sum
|
||||
* :jirabug:`PT-2079`: Incorrect version is returned
|
||||
* :jirabug:`PT-2075`: Fix tests for pt-stalk, so they can work with 8.0
|
||||
* :jirabug:`PT-1959`: go part of the toolkit still has the version 3.3.0
|
||||
|
||||
|
18
go.mod
18
go.mod
@@ -1,8 +1,9 @@
|
||||
module github.com/percona/percona-toolkit
|
||||
|
||||
go 1.17
|
||||
go 1.19
|
||||
|
||||
require (
|
||||
github.com/AlekSi/pointer v1.2.0
|
||||
github.com/Masterminds/semver v1.4.2
|
||||
github.com/alecthomas/kingpin v2.2.6+incompatible
|
||||
github.com/alecthomas/kong v0.5.0
|
||||
@@ -22,12 +23,12 @@ require (
|
||||
github.com/stretchr/testify v1.7.0
|
||||
go.mongodb.org/mongo-driver v1.9.0
|
||||
golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29
|
||||
golang.org/x/exp v0.0.0-20221114191408-850992195362
|
||||
gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22
|
||||
k8s.io/api v0.23.5
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/StackExchange/wmi v1.2.1 // indirect
|
||||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect
|
||||
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect
|
||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||
@@ -36,17 +37,13 @@ require (
|
||||
github.com/go-stack/stack v1.8.1 // indirect
|
||||
github.com/gogo/protobuf v1.3.2 // indirect
|
||||
github.com/golang/snappy v0.0.4 // indirect
|
||||
github.com/google/go-cmp v0.5.7 // indirect
|
||||
github.com/google/go-cmp v0.5.8 // indirect
|
||||
github.com/google/gofuzz v1.2.0 // indirect
|
||||
github.com/json-iterator/go v1.1.12 // indirect
|
||||
github.com/klauspost/compress v1.15.1 // indirect
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.3 // indirect
|
||||
github.com/kr/text v0.2.0 // indirect
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||
github.com/rogpeppe/go-internal v1.6.1 // indirect
|
||||
github.com/smartystreets/goconvey v1.7.2 // indirect
|
||||
github.com/tklauser/go-sysconf v0.3.10 // indirect
|
||||
github.com/tklauser/numcpus v0.4.0 // indirect
|
||||
github.com/xdg-go/pbkdf2 v1.0.0 // indirect
|
||||
@@ -56,20 +53,15 @@ require (
|
||||
github.com/yusufpapurcu/wmi v1.2.2 // indirect
|
||||
golang.org/x/net v0.0.0-20220403103023-749bd193bc2b // indirect
|
||||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect
|
||||
golang.org/x/sys v0.0.0-20220406163625-3f8b81556e12 // indirect
|
||||
golang.org/x/sys v0.1.0 // indirect
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect
|
||||
golang.org/x/text v0.3.7 // indirect
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
|
||||
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect
|
||||
gopkg.in/inf.v0 v0.9.1 // indirect
|
||||
gopkg.in/ini.v1 v1.62.0 // indirect
|
||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
|
||||
k8s.io/apimachinery v0.23.5 // indirect
|
||||
k8s.io/klog v1.0.0 // indirect
|
||||
k8s.io/klog/v2 v2.60.1 // indirect
|
||||
k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 // indirect
|
||||
sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 // indirect
|
||||
sigs.k8s.io/structured-merge-diff/v3 v3.0.1 // indirect
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.2.1 // indirect
|
||||
)
|
||||
|
194
go.sum
194
go.sum
@@ -1,25 +1,20 @@
|
||||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
github.com/AlekSi/pointer v1.2.0 h1:glcy/gc4h8HnG2Z3ZECSzZ1IX1x2JxRVuDzaJwQE0+w=
|
||||
github.com/AlekSi/pointer v1.2.0/go.mod h1:gZGfd3dpW4vEc/UlyfKKi1roIqcCgwOIvb0tSNSBle0=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/Masterminds/semver v1.4.2 h1:WBLTQ37jOCzSLtXNdoo8bNM8876KhNqOKvrlGITgsTc=
|
||||
github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
|
||||
github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
|
||||
github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
|
||||
github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
|
||||
github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
|
||||
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
|
||||
github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 h1:fLjPD/aNc3UIOA6tDi6QXUemppXK3P9BI7mr2hd6gx8=
|
||||
github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
|
||||
github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA=
|
||||
github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8=
|
||||
github.com/alecthomas/kingpin v2.2.6+incompatible h1:5svnBTFgJjZvGKyYBtMB0+m5wvrbUHiqye8wRJMlnYI=
|
||||
github.com/alecthomas/kingpin v2.2.6+incompatible/go.mod h1:59OFYbFVLKQKq+mqrL6Rw5bR0c3ACQaawgXx0QYndlE=
|
||||
github.com/alecthomas/kong v0.5.0 h1:u8Kdw+eeml93qtMZ04iei0CFYve/WPcA5IFh+9wSskE=
|
||||
github.com/alecthomas/kong v0.5.0/go.mod h1:uzxf/HUh0tj43x1AyJROl3JT7SgsZ5m+icOv1csRhc0=
|
||||
github.com/alecthomas/repr v0.0.0-20210801044451-80ca428c5142 h1:8Uy0oSf5co/NZXje7U1z8Mpep++QJOldL2hs/sBQf48=
|
||||
github.com/alecthomas/repr v0.0.0-20210801044451-80ca428c5142/go.mod h1:2kn6fqh/zIyPLmm3ugklbEi5hg5wS435eygvNfaDQL8=
|
||||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM=
|
||||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||
github.com/alecthomas/units v0.0.0-20210208195552-ff826a37aa15 h1:AUNCr9CiJuwrRYS3XieqF+Z9B9gNxo/eANAJCF2eiN4=
|
||||
github.com/alecthomas/units v0.0.0-20210208195552-ff826a37aa15/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
|
||||
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc=
|
||||
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
|
||||
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
|
||||
@@ -29,21 +24,16 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM=
|
||||
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
|
||||
github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc=
|
||||
github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
|
||||
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||
github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
|
||||
github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
|
||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
||||
github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg=
|
||||
github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
||||
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
||||
github.com/go-ini/ini v1.46.0 h1:hDJFfs/9f75875scvqLkhNB5Jz5/DybKEOZ5MLF+ng4=
|
||||
github.com/go-ini/ini v1.46.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8=
|
||||
github.com/go-ini/ini v1.66.4 h1:dKjMqkcbkzfddhIhyglTPgMoJnkvmG+bSLrU9cTHc5M=
|
||||
github.com/go-ini/ini v1.66.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8=
|
||||
github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
|
||||
@@ -51,57 +41,21 @@ github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTg
|
||||
github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
||||
github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0=
|
||||
github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
||||
github.com/go-ole/go-ole v1.2.4 h1:nNBDSCOigTSiarFpYE9J/KtEA1IOW4CNeqT9TQDqCxI=
|
||||
github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM=
|
||||
github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
|
||||
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
|
||||
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
|
||||
github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0=
|
||||
github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
|
||||
github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
|
||||
github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg=
|
||||
github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8=
|
||||
github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc=
|
||||
github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I=
|
||||
github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
|
||||
github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk=
|
||||
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
||||
github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw=
|
||||
github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4=
|
||||
github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0=
|
||||
github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY=
|
||||
github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg=
|
||||
github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI=
|
||||
github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI=
|
||||
github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs=
|
||||
github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI=
|
||||
github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI=
|
||||
github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk=
|
||||
github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28=
|
||||
github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo=
|
||||
github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk=
|
||||
github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw=
|
||||
github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360=
|
||||
github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg=
|
||||
github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE=
|
||||
github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8=
|
||||
github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc=
|
||||
github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc=
|
||||
github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4=
|
||||
github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4=
|
||||
github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ=
|
||||
github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0=
|
||||
github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw=
|
||||
github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls=
|
||||
github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
|
||||
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
||||
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||
github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||
github.com/golang/mock v1.4.4 h1:l75CXGRSwbaYNpl/Z2X1XIIAMSCquvXgpVZDhwEIJsc=
|
||||
github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
|
||||
github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
||||
@@ -114,8 +68,6 @@ github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw
|
||||
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||
github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||
github.com/golang/snappy v0.0.2-0.20190904063534-ff6b7dc882cf h1:gFVkHXmVAhEbxZVDln5V9GKrLaluNoFHDbrZwAWZgws=
|
||||
github.com/golang/snappy v0.0.2-0.20190904063534-ff6b7dc882cf/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
|
||||
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||
@@ -123,80 +75,43 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
|
||||
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
|
||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o=
|
||||
github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
|
||||
github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
|
||||
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g=
|
||||
github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
|
||||
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
|
||||
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=
|
||||
github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=
|
||||
github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU=
|
||||
github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA=
|
||||
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
|
||||
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
|
||||
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
|
||||
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||
github.com/hashicorp/go-version v1.2.1-0.20190424083514-192140e6f3e6 h1:rL76JewpeImeqMtpkAHVZkHrXWt6B5sGSj6sAsL0VnI=
|
||||
github.com/hashicorp/go-version v1.2.1-0.20190424083514-192140e6f3e6/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
|
||||
github.com/hashicorp/go-version v1.4.0 h1:aAQzgqIrRKRa7w75CKpbBxYsmUoPjzVm1W59ca1L0J4=
|
||||
github.com/hashicorp/go-version v1.4.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
|
||||
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||
github.com/howeyc/gopass v0.0.0-20170109162249-bf9dde6d0d2c h1:kQWxfPIHVLbgLzphqk3QUflDy9QdksZR4ygR807bpy0=
|
||||
github.com/howeyc/gopass v0.0.0-20170109162249-bf9dde6d0d2c/go.mod h1:lADxMC39cJJqL93Duh1xhAs4I2Zs8mKS89XWXFGp9cs=
|
||||
github.com/howeyc/gopass v0.0.0-20210920133722-c8aef6fb66ef h1:A9HsByNhogrvm9cWb28sjiS3i7tcKCkflWFEkHfuAgM=
|
||||
github.com/howeyc/gopass v0.0.0-20210920133722-c8aef6fb66ef/go.mod h1:lADxMC39cJJqL93Duh1xhAs4I2Zs8mKS89XWXFGp9cs=
|
||||
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
||||
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
||||
github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
|
||||
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
|
||||
github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ=
|
||||
github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
||||
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
||||
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
|
||||
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
|
||||
github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4=
|
||||
github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA=
|
||||
github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
|
||||
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
|
||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||
github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
||||
github.com/klauspost/compress v1.10.10 h1:a/y8CglcM7gLGYmlbP/stPE5sR3hbhFRUjCBfd/0B3I=
|
||||
github.com/klauspost/compress v1.10.10/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
|
||||
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
|
||||
github.com/klauspost/compress v1.15.1 h1:y9FcTHGyrebwfP0ZZqFiaxTaiDnUrGkJkI+f583BL1A=
|
||||
github.com/klauspost/compress v1.15.1/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
|
||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||
github.com/lib/pq v1.2.0 h1:LXpIM/LZ5xGFhOpXAQUIMM1HdyqzVYM13zNdjCEEcA0=
|
||||
github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
|
||||
github.com/lib/pq v1.10.4 h1:SO9z7FRPzA03QhHKJrH5BXA6HU1rS4V2nIVrrNC1iYk=
|
||||
github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
|
||||
github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
||||
github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
||||
github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
||||
github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE=
|
||||
github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0=
|
||||
github.com/mattn/go-shellwords v1.0.6 h1:9Jok5pILi5S1MnDirGVTufYGtksUs/V2BWUP3ZkeUUI=
|
||||
github.com/mattn/go-shellwords v1.0.6/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o=
|
||||
github.com/mattn/go-shellwords v1.0.12 h1:M2zGm7EW6UQJvDeQxo4T51eKPurbeFbe8WtebGE2xrk=
|
||||
github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y=
|
||||
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
|
||||
@@ -204,79 +119,48 @@ github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0Gq
|
||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||
github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
|
||||
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
|
||||
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
||||
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe h1:iruDEfMl2E6fbMZ9s0scYfZQ84/6SPL6zC8ACM2oIL0=
|
||||
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
|
||||
github.com/montanaflynn/stats v0.6.6 h1:Duep6KMIDpY4Yo11iFsvyqJDyfzLF9+sndUKT+v64GQ=
|
||||
github.com/montanaflynn/stats v0.6.6/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow=
|
||||
github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
||||
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
|
||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
|
||||
github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
|
||||
github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
|
||||
github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
|
||||
github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
|
||||
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
|
||||
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
|
||||
github.com/pborman/getopt v0.0.0-20190409184431-ee0cd42419d3 h1:YtFkrqsMEj7YqpIhRteVxJxCeC3jJBieuLr0d4C4rSA=
|
||||
github.com/pborman/getopt v0.0.0-20190409184431-ee0cd42419d3/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o=
|
||||
github.com/pborman/getopt v1.1.0 h1:eJ3aFZroQqq0bWmraivjQNt6Dmm5M0h2JcDW38/Azb0=
|
||||
github.com/pborman/getopt v1.1.0/go.mod h1:FxXoW1Re00sQG/+KIkuSqRL/LwQgSkv7uyac+STFsbk=
|
||||
github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE=
|
||||
github.com/percona/go-mysql v0.0.0-20190903141930-197f4ad8db8d h1:ZkztfR4jYDnkFQtZfwMVm9z7wkK/WiCXRQ7l1CB1/1M=
|
||||
github.com/percona/go-mysql v0.0.0-20190903141930-197f4ad8db8d/go.mod h1:/SGLf9OMxlnK6jq4mkFiImBcJXXk5jwD+lDrwDaGXcw=
|
||||
github.com/percona/go-mysql v0.0.0-20210427141028-73d29c6da78c h1:1SZ7nS+kSaO63IpaKspf/gf8602QcgP2eXNPMNOIc0M=
|
||||
github.com/percona/go-mysql v0.0.0-20210427141028-73d29c6da78c/go.mod h1:/SGLf9OMxlnK6jq4mkFiImBcJXXk5jwD+lDrwDaGXcw=
|
||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||
github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||
github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k=
|
||||
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
|
||||
github.com/shirou/gopsutil v2.20.8+incompatible h1:8c7Atn0FAUZJo+f4wYbN0iVpdWniCQk7IYwGtgdh1mY=
|
||||
github.com/shirou/gopsutil v2.20.8+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
|
||||
github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI=
|
||||
github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
|
||||
github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
|
||||
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
|
||||
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
||||
github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I=
|
||||
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
|
||||
github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
|
||||
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
|
||||
github.com/smartystreets/assertions v1.2.0 h1:42S6lae5dvLc7BrLu/0ugRtcFVjoJNMC/N3yZFZkDFs=
|
||||
github.com/smartystreets/assertions v1.2.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
|
||||
github.com/smartystreets/goconvey v1.7.2 h1:9RBaZCeXEQ3UselpuwUQHltGVXvdwm6cv1hgR6gDIPg=
|
||||
github.com/smartystreets/goconvey v1.7.2/go.mod h1:Vw0tHAZW6lzCRk3xgdin6fKYcG+G3Pg9vgXWeJpQFMM=
|
||||
github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
|
||||
github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
|
||||
github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
|
||||
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
|
||||
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
||||
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||
github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
|
||||
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
|
||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4=
|
||||
github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
|
||||
@@ -286,15 +170,12 @@ github.com/tklauser/numcpus v0.4.0 h1:E53Dm1HjH1/R2/aoCtXtPgzmElmn51aOkhCFSuZq//
|
||||
github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ=
|
||||
github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c=
|
||||
github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
|
||||
github.com/xdg-go/scram v1.0.2 h1:akYIkZ28e6A96dkWNJQu3nmCzH3YfwMPQExUYDaRv7w=
|
||||
github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs=
|
||||
github.com/xdg-go/scram v1.1.1 h1:VOMT+81stJgXW3CpHyqHN3AXDYIMsx56mEFrB37Mb/E=
|
||||
github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g=
|
||||
github.com/xdg-go/stringprep v1.0.2 h1:6iq84/ryjjeRmMJwxutI51F2GIPlP5BfTvXHeYjyhBc=
|
||||
github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM=
|
||||
github.com/xdg-go/stringprep v1.0.3 h1:kdwGpVNwPFtjs98xCGkHjQtGKh86rDcRZN17QEMCOIs=
|
||||
github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8=
|
||||
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA=
|
||||
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
|
||||
github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a h1:fZHgsYlfvtyqToslyjUt3VOPF4J7aK/3MPcK7xp3PDk=
|
||||
github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a/go.mod h1:ul22v+Nro/R083muKhosV54bj5niojjWZvU8xrevuH4=
|
||||
@@ -303,28 +184,24 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec
|
||||
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
||||
github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg=
|
||||
github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
|
||||
go.mongodb.org/mongo-driver v1.7.1 h1:jwqTeEM3x6L9xDXrCxN0Hbg7vdGfPBOTIkr0+/LYZDA=
|
||||
go.mongodb.org/mongo-driver v1.7.1/go.mod h1:Q4oFMbo1+MSNqICAdYMlC/zSTrwCogR4R8NzkI+yfU8=
|
||||
go.mongodb.org/mongo-driver v1.9.0 h1:f3aLGJvQmBl8d9S40IL+jEyBC6hfLPbJjv9t5hEM9ck=
|
||||
go.mongodb.org/mongo-driver v1.9.0/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY=
|
||||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
|
||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
|
||||
golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 h1:tkVvjkPTB7pnW3jnid7kNyAMPVWllTNOf/qKDze4p9o=
|
||||
golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20221114191408-850992195362 h1:NoHlPRbyl1VFI6FjwHtPQCN7wAMXI6cKcqrmXhOOfBQ=
|
||||
golang.org/x/exp v0.0.0-20221114191408-850992195362/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc=
|
||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
||||
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
@@ -333,42 +210,28 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
||||
golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d h1:20cMwl2fHAzkJMEA+8J4JgqBQcQGzbisXo31MIeenXI=
|
||||
golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20220403103023-749bd193bc2b h1:vI32FkLJNAWtGD4BwkThwEy6XS7ZLLMHkSkYfF8M0W0=
|
||||
golang.org/x/net v0.0.0-20220403103023-749bd193bc2b/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a h1:DcqTD9SDLc+1P/r1EmRBwnVsrOwW+kk2vWf9n+1sGhs=
|
||||
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=
|
||||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
@@ -378,35 +241,25 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40 h1:JWgyZ1qgdTaF3N3oxC+MdTV7qvEEgHo3otj+HB5CM7Q=
|
||||
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220406163625-3f8b81556e12 h1:QyVthZKMsyaQwBTJE04jdNN0Pp5Fn9Qga0mrgxyERQM=
|
||||
golang.org/x/sys v0.0.0-20220406163625-3f8b81556e12/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.1.0 h1:kunALQeHf1/185U1i0GOB/fy1IPRDDpuoOOqRReG57U=
|
||||
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
|
||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
||||
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||
golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||
@@ -418,7 +271,6 @@ golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||
@@ -443,15 +295,12 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ
|
||||
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
|
||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
|
||||
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
|
||||
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
|
||||
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
|
||||
gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU=
|
||||
gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||
gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 h1:VpOs+IwYnYBaFnrNAeB8UUWtL3vEUnzSCL1nVjPhqrw=
|
||||
gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
|
||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
|
||||
@@ -463,30 +312,21 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
|
||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
k8s.io/api v0.18.6 h1:osqrAXbOQjkKIWDTjrqxWQ3w0GkKb1KA1XkUGHHYpeE=
|
||||
k8s.io/api v0.18.6/go.mod h1:eeyxr+cwCjMdLAmr2W3RyDI0VvTawSg/3RFFBEnmZGI=
|
||||
k8s.io/api v0.23.5 h1:zno3LUiMubxD/V1Zw3ijyKO3wxrhbUF1Ck+VjBvfaoA=
|
||||
k8s.io/api v0.23.5/go.mod h1:Na4XuKng8PXJ2JsploYYrivXrINeTaycCGcYgF91Xm8=
|
||||
k8s.io/apimachinery v0.18.6 h1:RtFHnfGNfd1N0LeSrKCUznz5xtUP1elRGvHJbL3Ntag=
|
||||
k8s.io/apimachinery v0.18.6/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko=
|
||||
k8s.io/apimachinery v0.23.5 h1:Va7dwhp8wgkUPWsEXk6XglXWU4IKYLKNlv8VkX7SDM0=
|
||||
k8s.io/apimachinery v0.23.5/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM=
|
||||
k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
|
||||
k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
|
||||
k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
|
||||
k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=
|
||||
k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
|
||||
k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE=
|
||||
k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
|
||||
k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
|
||||
k8s.io/klog/v2 v2.60.1 h1:VW25q3bZx9uE3vvdL6M8ezOX79vA2Aq1nEWLqNQclHc=
|
||||
k8s.io/klog/v2 v2.60.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
|
||||
k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E=
|
||||
k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk=
|
||||
k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
|
||||
k8s.io/utils v0.0.0-20211116205334-6203023598ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
|
||||
@@ -495,14 +335,8 @@ k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/
|
||||
sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs=
|
||||
sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 h1:kDi4JBNAsJWfz1aEXhO8Jg87JJaPNLh5tIzYHgStQ9Y=
|
||||
sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY=
|
||||
sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw=
|
||||
sigs.k8s.io/structured-merge-diff/v3 v3.0.0 h1:dOmIZBMfhcHS09XZkMyUgkq5trg3/jRyJYFZUiaOp8E=
|
||||
sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw=
|
||||
sigs.k8s.io/structured-merge-diff/v3 v3.0.1 h1:ISORLGKzslMY5RWkCSGNy5uDb3OHyEkGEhuSATvSp3A=
|
||||
sigs.k8s.io/structured-merge-diff/v3 v3.0.1/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw=
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.2.1 h1:bKCqE9GvQ5tiVHn5rfn1r+yao3aLQEaLzkkmAkf+A6Y=
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4=
|
||||
sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
|
||||
sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q=
|
||||
sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
|
||||
|
@@ -18,7 +18,7 @@
|
||||
# ###########################################################################
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.4.0';
|
||||
our $VERSION = '3.5.0';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
|
@@ -371,6 +371,7 @@ sub verify_test_data {
|
||||
grep { !/server_cost$/ }
|
||||
grep { !/tables_priv$/ }
|
||||
grep { !/user$/ }
|
||||
grep { !/proxies_priv$/ }
|
||||
@{$master->selectcol_arrayref('SHOW TABLES FROM mysql')};
|
||||
my @tables_in_sakila = qw(actor address category city country customer
|
||||
film film_actor film_category film_text inventory
|
||||
|
@@ -462,10 +462,10 @@ sub table_is_allowed {
|
||||
|slave_master_info
|
||||
|slave_relay_log_info
|
||||
|slave_worker_info
|
||||
|slow_log
|
||||
|slow_log
|
||||
)$/x;
|
||||
|
||||
if ( $filter->{'ignore-tables'}->{'*'}->{$tbl}
|
||||
if ( $filter->{'ignore-tables'}->{'*'}->{$tbl}
|
||||
|| $filter->{'ignore-tables'}->{$db}->{$tbl}) {
|
||||
PTDEBUG && _d('Table', $tbl, 'is in --ignore-tables list');
|
||||
return 0;
|
||||
@@ -478,7 +478,7 @@ sub table_is_allowed {
|
||||
}
|
||||
|
||||
if ( $filter->{'tables'}
|
||||
&& (!$filter->{'tables'}->{'*'}->{$tbl} && !$filter->{'tables'}->{$db}->{$tbl}) ) {
|
||||
&& (!$filter->{'tables'}->{'*'}->{$tbl} && !$filter->{'tables'}->{$db}->{$tbl}) ) {
|
||||
PTDEBUG && _d('Table', $tbl, 'is not in --tables list, ignoring');
|
||||
return 0;
|
||||
}
|
||||
@@ -527,7 +527,7 @@ sub engine_is_allowed {
|
||||
my $filter = $self->{filters};
|
||||
|
||||
if ( $filter->{'ignore-engines'}->{$engine} ) {
|
||||
PTDEBUG && _d('Engine', $engine, 'is in --ignore-databases list');
|
||||
PTDEBUG && _d('Engine', $engine, 'is in --ignore-engines list');
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@@ -234,7 +234,7 @@ sub get_instances_to_check {
|
||||
my @instances_to_check;
|
||||
foreach my $instance ( @$instances ) {
|
||||
my $last_check_time = $last_check_time_for{ $instance->{id} };
|
||||
PTDEBUG && _d('Intsance', $instance->{id}, 'last checked',
|
||||
PTDEBUG && _d('Instance', $instance->{id}, 'last checked',
|
||||
$last_check_time, 'now', $now, 'diff', $now - ($last_check_time || 0),
|
||||
'hours until next check',
|
||||
sprintf '%.2f',
|
||||
|
@@ -57,6 +57,7 @@ collect() {
|
||||
local mysql_error_log=""
|
||||
local tail_error_log_pid=""
|
||||
local have_lock_waits_table=""
|
||||
local lock_table_p_s=""
|
||||
local have_oprofile=""
|
||||
local mysqladmin_pid=""
|
||||
local mutex=""
|
||||
@@ -212,6 +213,15 @@ collect_mysql_data_one() {
|
||||
| grep -i "INNODB_LOCK_WAITS" >/dev/null 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
have_lock_waits_table="yes"
|
||||
else
|
||||
# We cannot simply check version here, because MariaDB uses
|
||||
# Information Schema in its 10.x series
|
||||
$CMD_MYSQL $EXT_ARGV -e "SHOW TABLES FROM performance_schema" \
|
||||
| grep -i "data_lock_waits" >/dev/null 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
have_lock_waits_table="yes"
|
||||
lock_table_p_s="yes"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Collect multiple snapshots of the status variables. We use
|
||||
@@ -266,7 +276,7 @@ collect_mysql_data_loop() {
|
||||
(echo $ts; $CMD_MYSQL $EXT_ARGV -e "SHOW FULL PROCESSLIST\G") \
|
||||
>> "$d/$p-processlist" &
|
||||
if [ "$have_lock_waits_table" ]; then
|
||||
(echo $ts; lock_waits) >>"$d/$p-lock-waits" &
|
||||
(echo $ts; lock_waits "$d/lock_waits.running") >>"$d/$p-lock-waits" &
|
||||
(echo $ts; transactions) >>"$d/$p-transactions" &
|
||||
fi
|
||||
|
||||
@@ -275,7 +285,7 @@ collect_mysql_data_loop() {
|
||||
fi
|
||||
|
||||
if [ "${mysql_version}" '>' "5.6" ]; then
|
||||
(echo $ts; ps_prepared_statements) >> "$d/$p-prepared-statements" &
|
||||
(echo $ts; ps_prepared_statements "$d/prepared_statements.isrunnning") >> "$d/$p-prepared-statements" &
|
||||
fi
|
||||
|
||||
slave_status "$d/$p-slave-status" "${mysql_version}"
|
||||
@@ -322,6 +332,10 @@ collect_system_data_loop() {
|
||||
(echo $ts; df -k) >> "$d/$p-df" &
|
||||
(echo $ts; netstat -antp) >> "$d/$p-netstat" &
|
||||
(echo $ts; netstat -s) >> "$d/$p-netstat_s" &
|
||||
(echo $ts;
|
||||
for node in `ls -d /sys/devices/system/node/node*`; do
|
||||
echo `basename $node`; cat "$node/numastat"
|
||||
done) >> "$d/$p-numastat" &
|
||||
}
|
||||
|
||||
collect_mysql_data_two() {
|
||||
@@ -387,42 +401,89 @@ open_tables() {
|
||||
}
|
||||
|
||||
lock_waits() {
|
||||
local sql1="SELECT SQL_NO_CACHE
|
||||
CONCAT('thread ', b.trx_mysql_thread_id, ' from ', p.host) AS who_blocks,
|
||||
IF(p.command = \"Sleep\", p.time, 0) AS idle_in_trx,
|
||||
MAX(TIMESTAMPDIFF(SECOND, r.trx_wait_started, CURRENT_TIMESTAMP)) AS max_wait_time,
|
||||
COUNT(*) AS num_waiters
|
||||
FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS AS w
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX AS b ON b.trx_id = w.blocking_trx_id
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX AS r ON r.trx_id = w.requesting_trx_id
|
||||
LEFT JOIN INFORMATION_SCHEMA.PROCESSLIST AS p ON p.id = b.trx_mysql_thread_id
|
||||
GROUP BY who_blocks ORDER BY num_waiters DESC\G"
|
||||
$CMD_MYSQL $EXT_ARGV -e "$sql1"
|
||||
local flag_file=$1
|
||||
if test -f "$flag_file"; then
|
||||
echo "Lock collection already running, skipping this iteration"
|
||||
else
|
||||
touch "$flag_file"
|
||||
local sql1=""
|
||||
local sql2=""
|
||||
if [ "${lock_table_p_s}" != "yes" ]; then
|
||||
sql1="SELECT SQL_NO_CACHE
|
||||
CONCAT('thread ', b.trx_mysql_thread_id, ' from ', p.host) AS who_blocks,
|
||||
MAX(IF(p.command = \"Sleep\", p.time, 0)) AS idle_in_trx,
|
||||
MAX(TIMESTAMPDIFF(SECOND, r.trx_wait_started, CURRENT_TIMESTAMP)) AS max_wait_time,
|
||||
COUNT(*) AS num_waiters
|
||||
FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS AS w
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX AS b ON b.trx_id = w.blocking_trx_id
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX AS r ON r.trx_id = w.requesting_trx_id
|
||||
LEFT JOIN INFORMATION_SCHEMA.PROCESSLIST AS p ON p.id = b.trx_mysql_thread_id
|
||||
GROUP BY who_blocks ORDER BY num_waiters DESC\G"
|
||||
|
||||
local sql2="SELECT SQL_NO_CACHE
|
||||
r.trx_id AS waiting_trx_id,
|
||||
r.trx_mysql_thread_id AS waiting_thread,
|
||||
TIMESTAMPDIFF(SECOND, r.trx_wait_started, CURRENT_TIMESTAMP) AS wait_time,
|
||||
r.trx_query AS waiting_query,
|
||||
l.lock_table AS waiting_table_lock,
|
||||
b.trx_id AS blocking_trx_id, b.trx_mysql_thread_id AS blocking_thread,
|
||||
SUBSTRING(p.host, 1, INSTR(p.host, ':') - 1) AS blocking_host,
|
||||
SUBSTRING(p.host, INSTR(p.host, ':') +1) AS blocking_port,
|
||||
IF(p.command = \"Sleep\", p.time, 0) AS idle_in_trx,
|
||||
b.trx_query AS blocking_query
|
||||
FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS AS w
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX AS b ON b.trx_id = w.blocking_trx_id
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX AS r ON r.trx_id = w.requesting_trx_id
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_LOCKS AS l ON w.requested_lock_id = l.lock_id
|
||||
LEFT JOIN INFORMATION_SCHEMA.PROCESSLIST AS p ON p.id = b.trx_mysql_thread_id
|
||||
ORDER BY wait_time DESC\G"
|
||||
$CMD_MYSQL $EXT_ARGV -e "$sql2"
|
||||
sql2="SELECT SQL_NO_CACHE
|
||||
r.trx_id AS waiting_trx_id,
|
||||
r.trx_mysql_thread_id AS waiting_thread,
|
||||
TIMESTAMPDIFF(SECOND, r.trx_wait_started, CURRENT_TIMESTAMP) AS wait_time,
|
||||
r.trx_query AS waiting_query,
|
||||
l.lock_table AS waiting_table_lock,
|
||||
b.trx_id AS blocking_trx_id, b.trx_mysql_thread_id AS blocking_thread,
|
||||
SUBSTRING(p.host, 1, INSTR(p.host, ':') - 1) AS blocking_host,
|
||||
SUBSTRING(p.host, INSTR(p.host, ':') +1) AS blocking_port,
|
||||
IF(p.command = \"Sleep\", p.time, 0) AS idle_in_trx,
|
||||
b.trx_query AS blocking_query
|
||||
FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS AS w
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX AS b ON b.trx_id = w.blocking_trx_id
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX AS r ON r.trx_id = w.requesting_trx_id
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_LOCKS AS l ON w.requested_lock_id = l.lock_id
|
||||
LEFT JOIN INFORMATION_SCHEMA.PROCESSLIST AS p ON p.id = b.trx_mysql_thread_id
|
||||
ORDER BY wait_time DESC\G"
|
||||
else
|
||||
sql1="SELECT SQL_NO_CACHE
|
||||
CONCAT('thread ', b.trx_mysql_thread_id, ' from ', p.host) AS who_blocks,
|
||||
MAX(IF(p.command = \"Sleep\", p.time, 0)) AS idle_in_trx,
|
||||
MAX(TIMESTAMPDIFF(SECOND, r.trx_wait_started, CURRENT_TIMESTAMP)) AS max_wait_time,
|
||||
COUNT(*) AS num_waiters
|
||||
FROM performance_schema.data_lock_waits AS w
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX AS b ON b.trx_id = w.BLOCKING_ENGINE_TRANSACTION_ID
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX AS r ON r.trx_id = w.REQUESTING_ENGINE_TRANSACTION_ID
|
||||
LEFT JOIN INFORMATION_SCHEMA.PROCESSLIST AS p ON p.id = b.trx_mysql_thread_id
|
||||
GROUP BY who_blocks ORDER BY num_waiters DESC\G"
|
||||
|
||||
sql2="SELECT SQL_NO_CACHE
|
||||
r.trx_id AS waiting_trx_id,
|
||||
r.trx_mysql_thread_id AS waiting_thread,
|
||||
TIMESTAMPDIFF(SECOND, r.trx_wait_started, CURRENT_TIMESTAMP) AS wait_time,
|
||||
r.trx_query AS waiting_query,
|
||||
CONCAT('\`', l.OBJECT_SCHEMA, '\`.\`', l.OBJECT_NAME, '\`') AS waiting_table_lock,
|
||||
b.trx_id AS blocking_trx_id, b.trx_mysql_thread_id AS blocking_thread,
|
||||
SUBSTRING(p.host, 1, INSTR(p.host, ':') - 1) AS blocking_host,
|
||||
SUBSTRING(p.host, INSTR(p.host, ':') +1) AS blocking_port,
|
||||
IF(p.command = \"Sleep\", p.time, 0) AS idle_in_trx,
|
||||
b.trx_query AS blocking_query
|
||||
FROM performance_schema.data_lock_waits AS w
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX AS b ON b.trx_id = w.BLOCKING_ENGINE_TRANSACTION_ID
|
||||
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX AS r ON r.trx_id = w.REQUESTING_ENGINE_TRANSACTION_ID
|
||||
INNER JOIN performance_schema.data_locks AS l ON w.REQUESTING_ENGINE_LOCK_ID = l.ENGINE_LOCK_ID
|
||||
LEFT JOIN INFORMATION_SCHEMA.PROCESSLIST AS p ON p.id = b.trx_mysql_thread_id
|
||||
ORDER BY wait_time DESC\G"
|
||||
fi
|
||||
|
||||
$CMD_MYSQL $EXT_ARGV -e "$sql1"
|
||||
$CMD_MYSQL $EXT_ARGV -e "$sql2"
|
||||
|
||||
rm "$flag_file"
|
||||
fi
|
||||
}
|
||||
|
||||
transactions() {
|
||||
$CMD_MYSQL $EXT_ARGV -e "SELECT SQL_NO_CACHE * FROM INFORMATION_SCHEMA.INNODB_TRX ORDER BY trx_id\G"
|
||||
$CMD_MYSQL $EXT_ARGV -e "SELECT SQL_NO_CACHE * FROM INFORMATION_SCHEMA.INNODB_LOCKS ORDER BY lock_trx_id\G"
|
||||
$CMD_MYSQL $EXT_ARGV -e "SELECT SQL_NO_CACHE * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS ORDER BY blocking_trx_id, requesting_trx_id\G"
|
||||
if [ "${lock_table_p_s}" != "yes" ]; then
|
||||
$CMD_MYSQL $EXT_ARGV -e "SELECT SQL_NO_CACHE * FROM INFORMATION_SCHEMA.INNODB_LOCKS ORDER BY lock_trx_id\G"
|
||||
$CMD_MYSQL $EXT_ARGV -e "SELECT SQL_NO_CACHE * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS ORDER BY blocking_trx_id, requesting_trx_id\G"
|
||||
else
|
||||
$CMD_MYSQL $EXT_ARGV -e "SELECT SQL_NO_CACHE * FROM performance_schema.data_locks ORDER BY ENGINE_TRANSACTION_ID\G"
|
||||
$CMD_MYSQL $EXT_ARGV -e "SELECT SQL_NO_CACHE * FROM performance_schema.data_lock_waits ORDER BY BLOCKING_ENGINE_TRANSACTION_ID, REQUESTING_ENGINE_TRANSACTION_ID\G"
|
||||
fi
|
||||
}
|
||||
|
||||
tokudb_status() {
|
||||
@@ -498,10 +559,21 @@ ps_locks_transactions() {
|
||||
}
|
||||
|
||||
ps_prepared_statements() {
|
||||
$CMD_MYSQL $EXT_ARGV -e "SELECT t.processlist_id, pse.* \
|
||||
FROM performance_schema.prepared_statements_instances pse \
|
||||
JOIN performance_schema.threads t \
|
||||
ON (pse.OWNER_THREAD_ID=t.thread_id)\G"
|
||||
# PS-2033:
|
||||
# If no flag file exists, create it, then collect data
|
||||
# After data collected, remove the file
|
||||
# If flag file exists, skip current iteration
|
||||
local flag_file=$1
|
||||
if test -f "$flag_file"; then
|
||||
echo "Prepared statements collection already running, skipping this iteration"
|
||||
else
|
||||
touch "$flag_file"
|
||||
$CMD_MYSQL $EXT_ARGV -e "SELECT t.processlist_id, pse.* \
|
||||
FROM performance_schema.prepared_statements_instances pse \
|
||||
JOIN performance_schema.threads t \
|
||||
ON (pse.OWNER_THREAD_ID=t.thread_id)\G"
|
||||
rm "$flag_file"
|
||||
fi
|
||||
}
|
||||
|
||||
slave_status() {
|
||||
|
@@ -101,6 +101,7 @@ collect_system_data () { local PTFUNCNAME=collect_system_data;
|
||||
[ "$CMD_DMIDECODE" ] && $CMD_DMIDECODE > "$data_dir/dmidecode" 2>/dev/null
|
||||
|
||||
find_memory_stats "$platform" > "$data_dir/memory"
|
||||
find_numa_stats > "$data_dir/numactl"
|
||||
[ "$OPT_SUMMARIZE_MOUNTS" ] && mounted_fs_info "$platform" > "$data_dir/mounted_fs"
|
||||
raid_controller "$data_dir/dmesg_file" "$data_dir/lspci_file" >> "$data_dir/summary"
|
||||
|
||||
@@ -225,6 +226,12 @@ linux_exclusive_collection () { local PTFUNCNAME=linux_exclusive_collection;
|
||||
echo "dirtystatus $(awk '/vm.dirty_bytes/{print $3}' "$data_dir/sysctl"), $(awk '/vm.dirty_background_bytes/{print $3}' "$data_dir/sysctl")" >> "$data_dir/summary"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -e "$data_dir/numactl" ]; then
|
||||
echo "numa-available $(awk '/available/{print $2}' "$data_dir/numactl")" >> "$data_dir/summary"
|
||||
echo "numa-policy $(awk '/policy/{print $2}' "$data_dir/numactl")" >> "$data_dir/summary"
|
||||
echo "numa-preferred-node $(awk '/preferred node/{print $3}' "$data_dir/numactl")" >> "$data_dir/summary"
|
||||
fi
|
||||
|
||||
schedulers_and_queue_size "$data_dir/summary" > "$data_dir/partitioning"
|
||||
|
||||
@@ -449,6 +456,13 @@ find_memory_stats () { local PTFUNCNAME=find_memory_stats;
|
||||
fi
|
||||
}
|
||||
|
||||
find_numa_stats () { local PTFUNCNAME=find_numa_stats;
|
||||
if command -v numactl >/dev/null; then
|
||||
numactl --hardware
|
||||
numactl --show
|
||||
fi
|
||||
}
|
||||
|
||||
mounted_fs_info () { local PTFUNCNAME=mounted_fs_info;
|
||||
local platform="$1"
|
||||
|
||||
|
@@ -141,6 +141,7 @@ parse_free_minus_b () { local PTFUNCNAME=parse_free_minus_b;
|
||||
name_val "Total" $(shorten $(awk '/Mem:/{print $2}' "${file}") 1)
|
||||
name_val "Free" $(shorten $(awk '/Mem:/{print $4}' "${file}") 1)
|
||||
name_val "Used" "physical = $(shorten ${physical} 1), swap allocated = $(shorten ${swap_alloc} 1), swap used = $(shorten ${swap_used} 1), virtual = ${virtual}"
|
||||
name_val "Shared" $(shorten $(awk '/Mem:/{print $5}' "${file}") 1)
|
||||
name_val "Buffers" $(shorten $(awk '/Mem:/{print $6}' "${file}") 1)
|
||||
name_val "Caches" $(shorten $(awk '/Mem:/{print $7}' "${file}") 1)
|
||||
name_val "Dirty" "$(awk '/Dirty:/ {print $2, $3}' "${file}")"
|
||||
@@ -230,12 +231,38 @@ parse_dmidecode_mem_devices () { local PTFUNCNAME=parse_dmidecode_mem_devices;
|
||||
-e 's/>/}/g' \
|
||||
-e 's/[ \t]*\n/\n/g' \
|
||||
"${file}" \
|
||||
| awk -F: '/Size|Type|Form.Factor|Type.Detail|^[\t ]+Locator/{printf("|%s", $2)}/^[\t ]+Speed/{print "|" $2}' \
|
||||
| awk -F: '/Size|Type|Form.Factor|Type.Detail|^[\t ]+Locator|^[\t ]+Speed/{printf("|%s", $2)}/^$/{print}' \
|
||||
| sed '/^$/d' \
|
||||
| sed -e 's/No Module Installed/{EMPTY}/' \
|
||||
| sort \
|
||||
| awk -F'|' '{printf(" %-9s %-8s %-17s %-13s %-13s %-8s\n", $4, $2, $7, $3, $5, $6);}'
|
||||
}
|
||||
|
||||
# ##############################################################################
|
||||
# Parse the output of 'numactl'.
|
||||
# ##############################################################################
|
||||
parse_numactl () { local PTFUNCNAME=parse_numactl;
|
||||
local file="$1"
|
||||
|
||||
[ -e "$file" ] || return
|
||||
|
||||
# Print info about NUMA nodes
|
||||
echo " Node Size Free CPUs"
|
||||
echo " ==== ==== ==== ===="
|
||||
|
||||
sed -n -e 's/node /node/g' \
|
||||
-e '/node[[:digit:]]/p' \
|
||||
"${file}" \
|
||||
| sort -r \
|
||||
| awk '$1 == cnode {
|
||||
if (NF > 4) { for(i=3;i<=NF;i++){printf("%s ", $i)} printf "\n" }
|
||||
else { printf("%-12s", $3" "$4); }
|
||||
}
|
||||
$1 != cnode { cnode = $1; printf(" %-8s", $1); printf("%-12s", $3" "$4); }'
|
||||
|
||||
echo
|
||||
}
|
||||
|
||||
# ##############################################################################
|
||||
# Parse the output of 'ip -s link'
|
||||
# ##############################################################################
|
||||
@@ -842,6 +869,9 @@ section_Memory () {
|
||||
local platform="$1"
|
||||
local data_dir="$2"
|
||||
|
||||
local name_val_len_orig=$NAME_VAL_LEN;
|
||||
local NAME_VAL_LEN=14
|
||||
|
||||
section "Memory"
|
||||
if [ "${platform}" = "Linux" ]; then
|
||||
parse_free_minus_b "$data_dir/memory"
|
||||
@@ -867,6 +897,16 @@ section_Memory () {
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -s "$data_dir/numactl" ]; then
|
||||
name_val "Numa Nodes" "$(get_var "numa-available" "$data_dir/summary")"
|
||||
name_val "Numa Policy" "$(get_var "numa-policy" "$data_dir/summary")"
|
||||
name_val "Preferred Node" "$(get_var "numa-preferred-node" "$data_dir/summary")"
|
||||
|
||||
parse_numactl "$data_dir/numactl"
|
||||
fi
|
||||
|
||||
local NAME_VAL_LEN=$name_val_len_orig;
|
||||
|
||||
if [ -s "$data_dir/dmidecode" ]; then
|
||||
parse_dmidecode_mem_devices "$data_dir/dmidecode"
|
||||
fi
|
||||
@@ -1071,12 +1111,29 @@ report_system_summary () { local PTFUNCNAME=report_system_summary;
|
||||
"$data_dir/vmstat" \
|
||||
"$platform"
|
||||
|
||||
section "Memory management"
|
||||
report_transparent_huge_pages
|
||||
|
||||
# ########################################################################
|
||||
# All done. Signal the end so it's explicit.
|
||||
# ########################################################################
|
||||
section "The End"
|
||||
}
|
||||
|
||||
report_transparent_huge_pages () {
|
||||
|
||||
if [ -f /sys/kernel/mm/transparent_hugepage/enabled ]; then
|
||||
CONTENT_TRANSHP=$(</sys/kernel/mm/transparent_hugepage/enabled)
|
||||
STATUS_THP_SYSTEM=$(echo $CONTENT_TRANSHP | grep -cv '\[never\]')
|
||||
fi
|
||||
if [ $STATUS_THP_SYSTEM = 0 ]; then
|
||||
echo "Transparent huge pages are currently disabled on the system."
|
||||
else
|
||||
echo "Transparent huge pages are enabled."
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
# ###########################################################################
|
||||
# End report_system_info package
|
||||
# ###########################################################################
|
||||
|
15
requirements-docbuild.txt
Normal file
15
requirements-docbuild.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
Sphinx==4.2.0
|
||||
sphinx-copybutton
|
||||
sphinx-gitstamp
|
||||
sphinx-material
|
||||
sphinxcontrib-applehelp
|
||||
sphinxcontrib-contentui
|
||||
sphinxcontrib-devhelp
|
||||
sphinxcontrib-fulltoc
|
||||
sphinxcontrib-htmlhelp
|
||||
sphinxcontrib-jsmath
|
||||
sphinxcontrib-qthelp
|
||||
sphinxcontrib-serializinghtml
|
||||
sphinxcontrib-srclinks
|
||||
sphinx-tabs
|
||||
|
1
runtime.txt
Normal file
1
runtime.txt
Normal file
@@ -0,0 +1 @@
|
||||
3.7
|
@@ -111,6 +111,7 @@ endef
|
||||
env:
|
||||
@echo $(TEST_ENV) | tr ' ' '\n' >.env
|
||||
|
||||
# TODO: create envs specific to products: MySQL, PostgreSQL, MongoDB, K8
|
||||
env-up: env ## Start MongoDB docker containers cluster
|
||||
TEST_PSMDB_VERSION=$(TEST_PSMDB_VERSION) \
|
||||
docker-compose up \
|
||||
|
@@ -1,8 +1,9 @@
|
||||
package proto
|
||||
|
||||
// ProfilerStatus is a struct to hold the results of db.getProfilingLevel()
|
||||
// var ps proto.ProfilerStatus
|
||||
// err := db.Run(bson.M{"profile": -1}, &ps)
|
||||
//
|
||||
// var ps proto.ProfilerStatus
|
||||
// err := db.Run(bson.M{"profile": -1}, &ps)
|
||||
type ProfilerStatus struct {
|
||||
Was int64 `bson:"was"`
|
||||
SlowMs int64 `bson:"slowms"`
|
||||
|
@@ -184,21 +184,22 @@ func GetHostnames(ctx context.Context, client *mongo.Client) ([]string, error) {
|
||||
}
|
||||
|
||||
/*
|
||||
"members" : [
|
||||
{
|
||||
"_id" : 0,
|
||||
"name" : "localhost:17001",
|
||||
"health" : 1,
|
||||
"state" : 1,
|
||||
"stateStr" : "PRIMARY",
|
||||
"uptime" : 4700,
|
||||
"optime" : Timestamp(1486554836, 1),
|
||||
"optimeDate" : ISODate("2017-02-08T11:53:56Z"),
|
||||
"electionTime" : Timestamp(1486651810, 1),
|
||||
"electionDate" : ISODate("2017-02-09T14:50:10Z"),
|
||||
"configVersion" : 1,
|
||||
"self" : true
|
||||
},
|
||||
"members" : [
|
||||
|
||||
{
|
||||
"_id" : 0,
|
||||
"name" : "localhost:17001",
|
||||
"health" : 1,
|
||||
"state" : 1,
|
||||
"stateStr" : "PRIMARY",
|
||||
"uptime" : 4700,
|
||||
"optime" : Timestamp(1486554836, 1),
|
||||
"optimeDate" : ISODate("2017-02-08T11:53:56Z"),
|
||||
"electionTime" : Timestamp(1486651810, 1),
|
||||
"electionDate" : ISODate("2017-02-09T14:50:10Z"),
|
||||
"configVersion" : 1,
|
||||
"self" : true
|
||||
},
|
||||
*/
|
||||
func buildHostsListFromReplStatus(replStatus proto.ReplicaSetStatus) []string {
|
||||
hostnames := []string{}
|
||||
@@ -211,17 +212,20 @@ func buildHostsListFromReplStatus(replStatus proto.ReplicaSetStatus) []string {
|
||||
return hostnames
|
||||
}
|
||||
|
||||
/* Example
|
||||
/*
|
||||
Example
|
||||
|
||||
mongos> db.getSiblingDB('admin').runCommand('getShardMap')
|
||||
{
|
||||
"map" : {
|
||||
"config" : "localhost:19001,localhost:19002,localhost:19003",
|
||||
"localhost:17001" : "r1/localhost:17001,localhost:17002,localhost:17003",
|
||||
"r1" : "r1/localhost:17001,localhost:17002,localhost:17003",
|
||||
"r1/localhost:17001,localhost:17002,localhost:17003" : "r1/localhost:17001,localhost:17002,localhost:17003",
|
||||
},
|
||||
"ok" : 1
|
||||
}.
|
||||
|
||||
{
|
||||
"map" : {
|
||||
"config" : "localhost:19001,localhost:19002,localhost:19003",
|
||||
"localhost:17001" : "r1/localhost:17001,localhost:17002,localhost:17003",
|
||||
"r1" : "r1/localhost:17001,localhost:17002,localhost:17003",
|
||||
"r1/localhost:17001,localhost:17002,localhost:17003" : "r1/localhost:17001,localhost:17002,localhost:17003",
|
||||
},
|
||||
"ok" : 1
|
||||
}.
|
||||
*/
|
||||
func buildHostsListFromShardMap(shardsMap proto.ShardsMap) []string {
|
||||
hostnames := []string{}
|
||||
|
@@ -4,6 +4,8 @@ Collects debug data (logs, resource statuses etc.) from a k8s/OpenShift cluster.
|
||||
|
||||
## Data that will be collected
|
||||
|
||||
### Data, collected for all resources
|
||||
|
||||
```
|
||||
"pods",
|
||||
"replicasets",
|
||||
@@ -12,7 +14,6 @@ Collects debug data (logs, resource statuses etc.) from a k8s/OpenShift cluster.
|
||||
"replicationcontrollers",
|
||||
"events",
|
||||
"configmaps",
|
||||
"secrets",
|
||||
"cronjobs",
|
||||
"jobs",
|
||||
"podsecuritypolicies",
|
||||
@@ -31,6 +32,38 @@ Collects debug data (logs, resource statuses etc.) from a k8s/OpenShift cluster.
|
||||
"modes",
|
||||
"your-custom-resource" (depends on 'resource' flag)
|
||||
|
||||
```
|
||||
|
||||
### Data, collected for PXC
|
||||
|
||||
```
|
||||
"perconaxtradbbackups",
|
||||
"perconaxtradbclusterbackups",
|
||||
"perconaxtradbclusterrestores",
|
||||
"perconaxtradbclusters"
|
||||
```
|
||||
|
||||
### Individual files, collected for PXC
|
||||
|
||||
```
|
||||
"var/lib/mysql/mysqld-error.log",
|
||||
"var/lib/mysql/innobackup.backup.log",
|
||||
"var/lib/mysql/innobackup.move.log",
|
||||
"var/lib/mysql/innobackup.prepare.log",
|
||||
"var/lib/mysql/grastate.dat",
|
||||
"var/lib/mysql/gvwstate.dat",
|
||||
"var/lib/mysql/mysqld.post.processing.log",
|
||||
"var/lib/mysql/auto.cnf"
|
||||
```
|
||||
|
||||
### Data, collected for MongoDB
|
||||
|
||||
```
|
||||
"perconaservermongodbbackups",
|
||||
"perconaservermongodbrestores",
|
||||
"perconaservermongodbs"
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
`pt-k8s-debug-collector <flags>`
|
||||
@@ -39,9 +72,9 @@ Flags:
|
||||
|
||||
`--resource` targeted custom resource name (default "pxc")
|
||||
|
||||
`--namespace` targeted namespace. By default data will be collected from all namespaces
|
||||
`--namespace` targeted namespace. By default, data will be collected from all namespaces
|
||||
|
||||
`--cluster` targeted pxc/psmdb cluster. By default data from all available clusters to be collected
|
||||
`--cluster` targeted pxc/psmdb cluster. By default, data from all available clusters to be collected
|
||||
|
||||
## Requirements
|
||||
|
||||
|
@@ -22,6 +22,7 @@ import (
|
||||
type Dumper struct {
|
||||
cmd string
|
||||
resources []string
|
||||
filePaths []string
|
||||
namespace string
|
||||
location string
|
||||
errors string
|
||||
@@ -51,6 +52,7 @@ func New(location, namespace, resource string) Dumper {
|
||||
"persistentvolumeclaims",
|
||||
"persistentvolumes",
|
||||
}
|
||||
filePaths := make([]string, 0)
|
||||
if len(resource) > 0 {
|
||||
resources = append(resources, resource)
|
||||
|
||||
@@ -60,6 +62,16 @@ func New(location, namespace, resource string) Dumper {
|
||||
"perconaxtradbclusterbackups",
|
||||
"perconaxtradbclusterrestores",
|
||||
"perconaxtradbclusters")
|
||||
filePaths = append(filePaths,
|
||||
"var/lib/mysql/mysqld-error.log",
|
||||
"var/lib/mysql/innobackup.backup.log",
|
||||
"var/lib/mysql/innobackup.move.log",
|
||||
"var/lib/mysql/innobackup.prepare.log",
|
||||
"var/lib/mysql/grastate.dat",
|
||||
"var/lib/mysql/gvwstate.dat",
|
||||
"var/lib/mysql/mysqld.post.processing.log",
|
||||
"var/lib/mysql/auto.cnf",
|
||||
)
|
||||
} else if resourceType(resource) == "psmdb" {
|
||||
resources = append(resources,
|
||||
"perconaservermongodbbackups",
|
||||
@@ -71,6 +83,7 @@ func New(location, namespace, resource string) Dumper {
|
||||
return Dumper{
|
||||
cmd: "kubectl",
|
||||
resources: resources,
|
||||
filePaths: filePaths,
|
||||
location: "cluster-dump",
|
||||
mode: int64(0o777),
|
||||
namespace: namespace,
|
||||
@@ -187,6 +200,7 @@ func (d *Dumper) DumpCluster() error {
|
||||
}
|
||||
}
|
||||
if pod.Labels["app.kubernetes.io/component"] == component {
|
||||
// Get summary
|
||||
output, err = d.getPodSummary(resourceType(d.crType), pod.Name, pod.Labels["app.kubernetes.io/instance"], tw)
|
||||
if err != nil {
|
||||
d.logError(err.Error(), d.crType, pod.Name)
|
||||
@@ -194,12 +208,22 @@ func (d *Dumper) DumpCluster() error {
|
||||
if err != nil {
|
||||
log.Printf("Error: create pt-summary errors archive for pod %s in namespace %s: %v", pod.Name, ns.Name, err)
|
||||
}
|
||||
continue
|
||||
} else {
|
||||
err = addToArchive(location, d.mode, output, tw)
|
||||
if err != nil {
|
||||
d.logError(err.Error(), "create pt-summary archive for pod "+pod.Name)
|
||||
log.Printf("Error: create pt-summary archive for pod %s: %v", pod.Name, err)
|
||||
}
|
||||
}
|
||||
err = addToArchive(location, d.mode, output, tw)
|
||||
if err != nil {
|
||||
d.logError(err.Error(), "create pt-summary archive for pod "+pod.Name)
|
||||
log.Printf("Error: create pt-summary archive for pod %s: %v", pod.Name, err)
|
||||
|
||||
// get individual Logs
|
||||
location = filepath.Join(d.location, ns.Name, pod.Name)
|
||||
for _, path := range d.filePaths {
|
||||
err = d.getIndividualFiles(resourceType(d.crType), ns.Name, pod.Name, path, location, tw)
|
||||
if err != nil {
|
||||
d.logError(err.Error(), "get file "+path+" for pod "+pod.Name)
|
||||
log.Printf("Error: get %s file: %v", path, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -264,9 +288,10 @@ func (d *Dumper) logError(err string, args ...string) {
|
||||
|
||||
func addToArchive(location string, mode int64, content []byte, tw *tar.Writer) error {
|
||||
hdr := &tar.Header{
|
||||
Name: location,
|
||||
Mode: mode,
|
||||
Size: int64(len(content)),
|
||||
Name: location,
|
||||
Mode: mode,
|
||||
ModTime: time.Now(),
|
||||
Size: int64(len(content)),
|
||||
}
|
||||
if err := tw.WriteHeader(hdr); err != nil {
|
||||
return errors.Wrapf(err, "write header to %s", location)
|
||||
@@ -287,6 +312,22 @@ type crSecrets struct {
|
||||
} `json:"spec"`
|
||||
}
|
||||
|
||||
// TODO: check if resource parameter is really needed
|
||||
func (d *Dumper) getIndividualFiles(resource, namespace string, podName, path, location string, tw *tar.Writer) error {
|
||||
args := []string{"-n", namespace, "cp", podName + ":" + path, "/dev/stdout"}
|
||||
output, err := d.runCmd(args...)
|
||||
if err != nil {
|
||||
d.logError(err.Error(), args...)
|
||||
log.Printf("Error: get path %s for resource %s in namespace %s: %v", path, resource, d.namespace, err)
|
||||
return addToArchive(location, d.mode, []byte(err.Error()), tw)
|
||||
}
|
||||
|
||||
if len(output) == 0 {
|
||||
return nil
|
||||
}
|
||||
return addToArchive(location+"/"+path, d.mode, output, tw)
|
||||
}
|
||||
|
||||
func (d *Dumper) getPodSummary(resource, podName, crName string, tw *tar.Writer) ([]byte, error) {
|
||||
var (
|
||||
summCmdName string
|
||||
|
79
src/go/pt-k8s-debug-collector/main_test.go
Normal file
79
src/go/pt-k8s-debug-collector/main_test.go
Normal file
@@ -0,0 +1,79 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"os/exec"
|
||||
"path"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"golang.org/x/exp/slices"
|
||||
)
|
||||
|
||||
/*
|
||||
Tests collection of the individual files by pt-k8s-debug-collector.
|
||||
Requires running K8SPXC instance and kubectl, configured to access that instance by default.
|
||||
*/
|
||||
func TestIndividualFiles(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
cmd []string
|
||||
want []string
|
||||
preprocesor func(string) string
|
||||
}{
|
||||
{
|
||||
// If the tool collects required log files
|
||||
name: "pxc_logs_list",
|
||||
// tar -tf cluster-dump-test.tar.gz --wildcards 'cluster-dump/*/var/lib/mysql/*'
|
||||
cmd: []string{"tar", "-tf", "cluster-dump.tar.gz", "--wildcards", "cluster-dump/*/var/lib/mysql/*"},
|
||||
want: []string{"auto.cnf", "grastate.dat", "gvwstate.dat", "innobackup.backup.log", "innobackup.move.log", "innobackup.prepare.log", "mysqld-error.log", "mysqld.post.processing.log"},
|
||||
preprocesor: func(in string) string {
|
||||
files := strings.Split(in, "\n")
|
||||
var result []string
|
||||
for _, f := range files {
|
||||
b := path.Base(f)
|
||||
if !slices.Contains(result, b) && b != "." && b != "" {
|
||||
result = append(result, b)
|
||||
}
|
||||
}
|
||||
slices.Sort(result)
|
||||
return strings.Join(result, "\n")
|
||||
},
|
||||
},
|
||||
{
|
||||
// If MySQL error log is not empty
|
||||
name: "pxc_mysqld_error_log",
|
||||
// tar --to-command="grep -m 1 -o Version:" -xzf cluster-dump-test.tar.gz --wildcards 'cluster-dump/*/var/lib/mysql/mysqld-error.log'
|
||||
cmd: []string{"tar", "--to-command", "grep -m 1 -o Version:", "-xzf", "cluster-dump.tar.gz", "--wildcards", "cluster-dump/*/var/lib/mysql/mysqld-error.log"},
|
||||
want: []string{"Version:"},
|
||||
preprocesor: func(in string) string {
|
||||
nl := strings.Index(in, "\n")
|
||||
if nl == -1 {
|
||||
return ""
|
||||
}
|
||||
return in[:nl]
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
cmd := exec.Command("../../../bin/pt-k8s-debug-collector")
|
||||
if err := cmd.Run(); err != nil {
|
||||
t.Errorf("error executing pt-k8s-debug-collector: %s", err.Error())
|
||||
}
|
||||
defer func() {
|
||||
cmd = exec.Command("rm", "-f", "cluster-dump.tar.gz")
|
||||
if err := cmd.Run(); err != nil {
|
||||
t.Errorf("error cleaning up test data: %s", err.Error())
|
||||
}
|
||||
}()
|
||||
|
||||
for _, test := range tests {
|
||||
out, err := exec.Command(test.cmd[0], test.cmd[1:]...).CombinedOutput()
|
||||
if err != nil {
|
||||
t.Errorf("test %s, error running command %s:\n%s\n\nCommand output:\n%s", test.name, test.cmd[0], err.Error(), out)
|
||||
}
|
||||
if test.preprocesor(bytes.NewBuffer(out).String()) != strings.Join(test.want, "\n") {
|
||||
t.Errorf("test %s, output is not as expected\nOutput: %s\nWanted: %s", test.name, test.preprocesor(bytes.NewBuffer(out).String()), test.want)
|
||||
}
|
||||
}
|
||||
}
|
@@ -48,7 +48,7 @@ const (
|
||||
var (
|
||||
Build string = "2020-04-23" //nolint
|
||||
GoVersion string = "1.14.1" //nolint
|
||||
Version string = "3.4.0" //nolint
|
||||
Version string = "3.5.0" //nolint
|
||||
Commit string //nolint
|
||||
)
|
||||
|
||||
|
@@ -41,7 +41,7 @@ const (
|
||||
var (
|
||||
Build string = "2020-04-23" //nolint
|
||||
GoVersion string = "1.14.1" //nolint
|
||||
Version string = "3.4.0" //nolint
|
||||
Version string = "3.5.0" //nolint
|
||||
Commit string //nolint
|
||||
)
|
||||
|
||||
|
@@ -57,7 +57,7 @@ const (
|
||||
var (
|
||||
Build string = "2020-04-23"
|
||||
GoVersion string = "1.14.1"
|
||||
Version string = "3.4.0"
|
||||
Version string = "3.5.0"
|
||||
Commit string
|
||||
|
||||
defaultConnectionTimeout = 3 * time.Second
|
||||
|
@@ -10,8 +10,8 @@ import (
|
||||
"github.com/alecthomas/kingpin"
|
||||
_ "github.com/lib/pq"
|
||||
"github.com/pkg/errors"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"github.com/sirupsen/logrus"
|
||||
log "github.com/sirupsen/logrus"
|
||||
|
||||
"github.com/percona/percona-toolkit/src/go/lib/pginfo"
|
||||
"github.com/percona/percona-toolkit/src/go/pt-pg-summary/templates"
|
||||
@@ -21,7 +21,7 @@ var (
|
||||
Build string = "2020-04-23" //nolint
|
||||
Commit string //nolint
|
||||
GoVersion string = "1.14.1" //nolint
|
||||
Version string = "3.4.0" //nolint
|
||||
Version string = "3.5.0" //nolint
|
||||
)
|
||||
|
||||
type connOpts struct {
|
||||
|
@@ -15,8 +15,8 @@ import (
|
||||
"github.com/alecthomas/kingpin"
|
||||
"github.com/go-ini/ini"
|
||||
"github.com/pkg/errors"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"github.com/sirupsen/logrus"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"golang.org/x/crypto/ssh/terminal"
|
||||
)
|
||||
|
||||
@@ -86,7 +86,7 @@ var (
|
||||
|
||||
Build string = "2020-04-23" //nolint
|
||||
GoVersion string = "1.14.1" //nolint
|
||||
Version string = "3.4.0" //nolint
|
||||
Version string = "3.5.0" //nolint
|
||||
Commit string //nolint
|
||||
)
|
||||
|
||||
|
@@ -9,7 +9,7 @@ BEGIN {
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
use English qw(-no_match_vars);
|
||||
use Test::More tests => 16;
|
||||
use Test::More tests => 17;
|
||||
|
||||
use PerconaTest;
|
||||
use Sandbox;
|
||||
@@ -147,6 +147,16 @@ like(
|
||||
'--query-id'
|
||||
);
|
||||
|
||||
# --json option
|
||||
$output = output(
|
||||
sub { pt_kill::main(@args, "$trunk/t/lib/samples/pl/recset011.txt", qw(--match-all --print --json --json-fields key:value)); }
|
||||
);
|
||||
like(
|
||||
$output,
|
||||
qr/\{"Command"\:"Query","Db"\:"db","Digest"\:"69962191E64980E6","Host"\:"127\.0\.0\.1\:3306","Id"\:"4","Info"\:"\\\/\* fruit\=orange \*\\\/ select 1 from fuits;","Kill_Error"\:"","Reason"\:"","State"\:"statistics","Time"\:"6","Timestamp"\:".*","User"\:"foo","key"\:"value"\}/,
|
||||
'--json'
|
||||
);
|
||||
|
||||
# #############################################################################
|
||||
# Live tests.
|
||||
# #############################################################################
|
||||
|
@@ -518,7 +518,7 @@ $sb->load_file('master', "$sample/bug-1340728_cleanup.sql");
|
||||
# If this test fails it might lead to "segmentation fault" or "out of memory"
|
||||
# #############################################################################
|
||||
|
||||
$output = output(
|
||||
($output, $exit_status) = full_output(
|
||||
sub { pt_online_schema_change::main(@args, "$master_dsn,D=sakila,t=actor",
|
||||
'--execute',
|
||||
'--alter-foreign-keys-method=drop_swap',
|
||||
@@ -526,7 +526,6 @@ $output = output(
|
||||
'--nocheck-plan',
|
||||
),
|
||||
},
|
||||
stderr => 1,
|
||||
);
|
||||
|
||||
like(
|
||||
|
@@ -521,14 +521,16 @@ $output = `du -s $dest | cut -f 1`;
|
||||
|
||||
PerconaTest::wait_until(sub { !-f $pid_file });
|
||||
|
||||
$retval = system("$trunk/bin/pt-stalk --no-stalk --run-time 2 --dest $dest --retention-size 1 --pid $pid_file --iterations 1 -- --defaults-file=$cnf >$log_file 2>&1");
|
||||
$retval = system("$trunk/bin/pt-stalk --no-stalk --run-time 2 --dest $dest --retention-size 1 --pid $pid_file --iterations 2 -- --defaults-file=$cnf >$log_file 2>&1");
|
||||
|
||||
PerconaTest::wait_until(sub { !-f $pid_file });
|
||||
|
||||
$output = $output / `du -s $dest | cut -f 1`;
|
||||
|
||||
ok(
|
||||
$output >= 5,
|
||||
# --retention-size
|
||||
# Keep up to –retention-size MB of data. It will keep at least 1 run even if the size is bigger than the specified in this parameter
|
||||
$output >= 1,
|
||||
"Retention test 4: retention by size works as expected"
|
||||
);
|
||||
|
||||
@@ -755,7 +757,7 @@ SKIP: {
|
||||
|
||||
like(
|
||||
$output,
|
||||
qr/Slave has read all relay log; waiting for more updates/,
|
||||
qr/SERVICE_STATE: ON/,
|
||||
"MySQL 5.7 SLAVE STATUS"
|
||||
) or diag ($output);
|
||||
$sb->stop_sandbox(qw(chan_master1 chan_master2 chan_slave1));
|
||||
@@ -826,6 +828,98 @@ SKIP: {
|
||||
);
|
||||
}
|
||||
|
||||
# #############################################################################
|
||||
# Test if locks and transactions are printed
|
||||
# #############################################################################
|
||||
|
||||
cleanup();
|
||||
|
||||
# We are not using SKIP here, because lock tables exist since version 5.1
|
||||
# Currently, all active MySQL versions support them
|
||||
|
||||
sub start_thread_pt_1897_1 {
|
||||
# this must run in a thread because we need to have an active session
|
||||
# with open transaction
|
||||
my ($dsn_opts) = @_;
|
||||
my $dp = new DSNParser(opts=>$dsn_opts);
|
||||
my $sb = new Sandbox(basedir => '/tmp', DSNParser => $dp);
|
||||
my $dbh = $sb->get_dbh_for('master');
|
||||
$sb->load_file('master', "t/pt-stalk/samples/PT-1897-1.sql");
|
||||
}
|
||||
my $thr1 = threads->create('start_thread_pt_1897_1', $dsn_opts);
|
||||
$thr1->detach();
|
||||
threads->yield();
|
||||
sleep 1;
|
||||
|
||||
sub start_thread_pt_1897_2 {
|
||||
# this must run in a thread because we need to have an active session
|
||||
# with waiting transaction
|
||||
my ($dsn_opts) = @_;
|
||||
my $dp = new DSNParser(opts=>$dsn_opts);
|
||||
my $sb = new Sandbox(basedir => '/tmp', DSNParser => $dp);
|
||||
my $dbh = $sb->get_dbh_for('master');
|
||||
$sb->load_file('master', "t/pt-stalk/samples/PT-1897-2.sql");
|
||||
}
|
||||
my $thr2 = threads->create('start_thread_pt_1897_2', $dsn_opts);
|
||||
$thr2->detach();
|
||||
threads->yield();
|
||||
|
||||
my $cmd = "$trunk/bin/pt-stalk --no-stalk --iterations=1 --host=127.0.0.1 --port=12345 --user=msandbox "
|
||||
. "--password=msandbox --sleep 0 --run-time=10 --dest $dest --log $log_file --pid $pid_file "
|
||||
. "--defaults-file=$cnf >$log_file 2>&1";
|
||||
system($cmd);
|
||||
sleep 15;
|
||||
PerconaTest::kill_program(pid_file => $pid_file);
|
||||
|
||||
$output = `cat $dest/*-lock-waits 2>/dev/null`;
|
||||
like(
|
||||
$output,
|
||||
qr/waiting_query: UPDATE test.t1 SET f1=3/,
|
||||
"lock-wait: LOCK_WAITS collected correctly"
|
||||
);
|
||||
|
||||
$output = `cat $dest/*[[:digit:]]-transactions 2>/dev/null`;
|
||||
like(
|
||||
$output,
|
||||
qr/trx_query: UPDATE test.t1 SET f1=3/,
|
||||
"transactions: InnoDB transaction info collected"
|
||||
);
|
||||
like(
|
||||
$output,
|
||||
qr/lock_type/i,
|
||||
"transactions: Lock information collected"
|
||||
);
|
||||
like(
|
||||
$output,
|
||||
qr/requesting_(trx|ENGINE_TRANSACTION)_id/i,
|
||||
"transactions: Lock wait information collected"
|
||||
);
|
||||
|
||||
# ###########################################################################
|
||||
# Test if option numastat collection works
|
||||
# ###########################################################################
|
||||
|
||||
cleanup();
|
||||
|
||||
$retval = system("$trunk/bin/pt-stalk --no-stalk --system-only --run-time 10 --sleep 2 --dest $dest --pid $pid_file --iterations 1 -- --defaults-file=$cnf >$log_file 2>&1");
|
||||
|
||||
PerconaTest::wait_until(sub { !-f $pid_file });
|
||||
|
||||
$output = `ls $dest`;
|
||||
|
||||
like(
|
||||
$output,
|
||||
qr/numastat/,
|
||||
"numastat data collected"
|
||||
);
|
||||
|
||||
$output = `cat $dest/*-numastat`;
|
||||
|
||||
like(
|
||||
$output,
|
||||
qr/(numa_)/,
|
||||
"numastat collection has data"
|
||||
);
|
||||
|
||||
# #############################################################################
|
||||
# Done.
|
||||
|
9
t/pt-stalk/samples/PT-1897-1.sql
Normal file
9
t/pt-stalk/samples/PT-1897-1.sql
Normal file
@@ -0,0 +1,9 @@
|
||||
CREATE SCHEMA IF NOT EXISTS test;
|
||||
DROP TABLE IF EXISTS test.t1;
|
||||
CREATE TABLE test.t1 (f1 INT) ENGINE=INNODB;
|
||||
INSERT INTO test.t1 VALUES(1);
|
||||
BEGIN;
|
||||
UPDATE test.t1 SET f1=2;
|
||||
SELECT SLEEP(11);
|
||||
ROLLBACK;
|
||||
DROP DATABASE IF EXISTS test;
|
3
t/pt-stalk/samples/PT-1897-2.sql
Normal file
3
t/pt-stalk/samples/PT-1897-2.sql
Normal file
@@ -0,0 +1,3 @@
|
||||
SET innodb_lock_wait_timeout=30;
|
||||
BEGIN;
|
||||
UPDATE test.t1 SET f1=3;
|
@@ -14,12 +14,12 @@ use PerconaTest;
|
||||
|
||||
my ($tool) = $PROGRAM_NAME =~ m/([\w-]+)\.t$/;
|
||||
|
||||
use Test::More tests => 3;
|
||||
use Test::More tests => 5;
|
||||
|
||||
for my $i (2..3,5) {
|
||||
for my $i (2..3,5..7) {
|
||||
ok(
|
||||
no_diff(
|
||||
sub { print `$trunk/bin/pt-summary --read-samples "$trunk/t/pt-summary/samples/Linux/00$i/" | tail -n+3` },
|
||||
sub { print `LC_NUMERIC=POSIX $trunk/bin/pt-summary --read-samples "$trunk/t/pt-summary/samples/Linux/00$i/" | tail -n+3` },
|
||||
"t/pt-summary/samples/Linux/output_00$i.txt"),
|
||||
"--read-samples samples/Linux/00$i works",
|
||||
);
|
||||
|
2
t/pt-summary/samples/Linux/006/collect.err
Normal file
2
t/pt-summary/samples/Linux/006/collect.err
Normal file
@@ -0,0 +1,2 @@
|
||||
join: -:4: is not sorted: cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
|
||||
join: /tmp/pt-summary.2397616.XMBMxL/mounted_fs_info.tmp:11: is not sorted: /dev/loop1 9,0M 9,0M 0 100% /snap/canonical-livepatch/146
|
1210
t/pt-summary/samples/Linux/006/dmesg_file
Normal file
1210
t/pt-summary/samples/Linux/006/dmesg_file
Normal file
File diff suppressed because it is too large
Load Diff
1068
t/pt-summary/samples/Linux/006/dmidecode
Normal file
1068
t/pt-summary/samples/Linux/006/dmidecode
Normal file
File diff suppressed because it is too large
Load Diff
36
t/pt-summary/samples/Linux/006/ip
Normal file
36
t/pt-summary/samples/Linux/006/ip
Normal file
@@ -0,0 +1,36 @@
|
||||
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
|
||||
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
|
||||
RX: bytes packets errors dropped overrun mcast
|
||||
7535270 73015 0 0 0 0
|
||||
TX: bytes packets errors dropped carrier collsns
|
||||
7535270 73015 0 0 0 0
|
||||
2: wlp0s20f3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
|
||||
link/ether 98:af:65:26:69:57 brd ff:ff:ff:ff:ff:ff
|
||||
RX: bytes packets errors dropped overrun mcast
|
||||
1657084859 1627351 0 3636 0 0
|
||||
TX: bytes packets errors dropped carrier collsns
|
||||
428035923 961445 0 0 0 0
|
||||
3: br-5bbb6abaea1c: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default
|
||||
link/ether 02:42:1f:31:64:19 brd ff:ff:ff:ff:ff:ff
|
||||
RX: bytes packets errors dropped overrun mcast
|
||||
0 0 0 0 0 0
|
||||
TX: bytes packets errors dropped carrier collsns
|
||||
0 0 0 0 0 0
|
||||
4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
|
||||
link/ether 02:42:b7:f9:b8:f1 brd ff:ff:ff:ff:ff:ff
|
||||
RX: bytes packets errors dropped overrun mcast
|
||||
9263705 72006 0 0 0 0
|
||||
TX: bytes packets errors dropped carrier collsns
|
||||
38436691 83442 0 0 0 0
|
||||
6: veth311b798@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP mode DEFAULT group default
|
||||
link/ether 6e:52:2e:46:58:3f brd ff:ff:ff:ff:ff:ff link-netnsid 0
|
||||
RX: bytes packets errors dropped overrun mcast
|
||||
9194725 58288 0 0 0 0
|
||||
TX: bytes packets errors dropped carrier collsns
|
||||
8681936 66908 0 0 0 0
|
||||
8: veth505c1de@if7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP mode DEFAULT group default
|
||||
link/ether 46:fd:9c:ed:47:ab brd ff:ff:ff:ff:ff:ff link-netnsid 1
|
||||
RX: bytes packets errors dropped overrun mcast
|
||||
1077064 13718 0 0 0 0
|
||||
TX: bytes packets errors dropped carrier collsns
|
||||
30420523 20005 0 0 0 0
|
25
t/pt-summary/samples/Linux/006/lspci_file
Normal file
25
t/pt-summary/samples/Linux/006/lspci_file
Normal file
@@ -0,0 +1,25 @@
|
||||
00:00.0 Host bridge: Intel Corporation Device 8a12 (rev 03)
|
||||
00:02.0 VGA compatible controller: Intel Corporation Iris Plus Graphics G7 (rev 07)
|
||||
00:04.0 Signal processing controller: Intel Corporation Device 8a03 (rev 03)
|
||||
00:05.0 Multimedia controller: Intel Corporation Device 8a19 (rev 03)
|
||||
00:07.0 PCI bridge: Intel Corporation Ice Lake Thunderbolt 3 PCI Express Root Port #0 (rev 03)
|
||||
00:07.2 PCI bridge: Intel Corporation Ice Lake Thunderbolt 3 PCI Express Root Port #2 (rev 03)
|
||||
00:0d.0 USB controller: Intel Corporation Ice Lake Thunderbolt 3 USB Controller (rev 03)
|
||||
00:0d.2 System peripheral: Intel Corporation Ice Lake Thunderbolt 3 NHI #0 (rev 03)
|
||||
00:0d.3 System peripheral: Intel Corporation Ice Lake Thunderbolt 3 NHI #1 (rev 03)
|
||||
00:12.0 Serial controller: Intel Corporation Device 34fc (rev 30)
|
||||
00:14.0 USB controller: Intel Corporation Ice Lake-LP USB 3.1 xHCI Host Controller (rev 30)
|
||||
00:14.2 RAM memory: Intel Corporation Device 34ef (rev 30)
|
||||
00:14.3 Network controller: Intel Corporation Killer Wi-Fi 6 AX1650i 160MHz Wireless Network Adapter (201NGW) (rev 30)
|
||||
00:15.0 Serial bus controller [0c80]: Intel Corporation Ice Lake-LP Serial IO I2C Controller #0 (rev 30)
|
||||
00:15.1 Serial bus controller [0c80]: Intel Corporation Ice Lake-LP Serial IO I2C Controller #1 (rev 30)
|
||||
00:15.3 Serial bus controller [0c80]: Intel Corporation Ice Lake-LP Serial IO I2C Controller #3 (rev 30)
|
||||
00:16.0 Communication controller: Intel Corporation Management Engine Interface (rev 30)
|
||||
00:1d.0 PCI bridge: Intel Corporation Ice Lake-LP PCI Express Root Port #9 (rev 30)
|
||||
00:1d.7 PCI bridge: Intel Corporation Device 34b7 (rev 30)
|
||||
00:1f.0 ISA bridge: Intel Corporation Ice Lake-LP LPC Controller (rev 30)
|
||||
00:1f.3 Audio device: Intel Corporation Smart Sound Technology Audio Controller (rev 30)
|
||||
00:1f.4 SMBus: Intel Corporation Ice Lake-LP SMBus Controller (rev 30)
|
||||
00:1f.5 Serial bus controller [0c80]: Intel Corporation Ice Lake-LP SPI Controller (rev 30)
|
||||
57:00.0 Non-Volatile memory controller: KIOXIA Corporation Device 0001
|
||||
58:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS525A PCI Express Card Reader (rev 01)
|
3
t/pt-summary/samples/Linux/006/lvs
Normal file
3
t/pt-summary/samples/Linux/006/lvs
Normal file
@@ -0,0 +1,3 @@
|
||||
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
|
||||
root vgubuntu -wi-ao---- <930,37g
|
||||
swap_1 vgubuntu -wi-ao---- 976,00m
|
54
t/pt-summary/samples/Linux/006/memory
Normal file
54
t/pt-summary/samples/Linux/006/memory
Normal file
@@ -0,0 +1,54 @@
|
||||
total used free shared buff/cache available
|
||||
Mem: 33426010112 13475635200 2393817088 5954158592 17556557824 13557874688
|
||||
Swap: 1023406080 128450560 894955520
|
||||
MemTotal: 32642588 kB
|
||||
MemFree: 2337712 kB
|
||||
MemAvailable: 13240112 kB
|
||||
Buffers: 2027332 kB
|
||||
Cached: 14349788 kB
|
||||
SwapCached: 12984 kB
|
||||
Active: 9644920 kB
|
||||
Inactive: 18029536 kB
|
||||
Active(anon): 2285512 kB
|
||||
Inactive(anon): 14784956 kB
|
||||
Active(file): 7359408 kB
|
||||
Inactive(file): 3244580 kB
|
||||
Unevictable: 901668 kB
|
||||
Mlocked: 144 kB
|
||||
SwapTotal: 999420 kB
|
||||
SwapFree: 873980 kB
|
||||
Dirty: 3992 kB
|
||||
Writeback: 0 kB
|
||||
AnonPages: 12185872 kB
|
||||
Mapped: 2033720 kB
|
||||
Shmem: 5814608 kB
|
||||
KReclaimable: 767956 kB
|
||||
Slab: 1063368 kB
|
||||
SReclaimable: 767956 kB
|
||||
SUnreclaim: 295412 kB
|
||||
KernelStack: 47372 kB
|
||||
PageTables: 188572 kB
|
||||
NFS_Unstable: 0 kB
|
||||
Bounce: 0 kB
|
||||
WritebackTmp: 0 kB
|
||||
CommitLimit: 17320712 kB
|
||||
Committed_AS: 43974304 kB
|
||||
VmallocTotal: 34359738367 kB
|
||||
VmallocUsed: 83948 kB
|
||||
VmallocChunk: 0 kB
|
||||
Percpu: 10688 kB
|
||||
HardwareCorrupted: 0 kB
|
||||
AnonHugePages: 12288 kB
|
||||
ShmemHugePages: 0 kB
|
||||
ShmemPmdMapped: 0 kB
|
||||
FileHugePages: 0 kB
|
||||
FilePmdMapped: 0 kB
|
||||
HugePages_Total: 0
|
||||
HugePages_Free: 0
|
||||
HugePages_Rsvd: 0
|
||||
HugePages_Surp: 0
|
||||
Hugepagesize: 2048 kB
|
||||
Hugetlb: 0 kB
|
||||
DirectMap4k: 1220240 kB
|
||||
DirectMap2M: 22661120 kB
|
||||
DirectMap1G: 10485760 kB
|
39
t/pt-summary/samples/Linux/006/mounted_fs
Normal file
39
t/pt-summary/samples/Linux/006/mounted_fs
Normal file
@@ -0,0 +1,39 @@
|
||||
/dev/mapper/vgubuntu-root 915G 646G 223G 75% / on / type ext4 (rw,relatime,errors=remount-ro)
|
||||
/dev/mmcblk0p1 239G 214G 26G 90% /media/sveta/disk1 on /media/sveta/disk1 type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096,uhelper=udisks2)
|
||||
/dev/nvme0n1p1 511M 19M 493M 4% /boot/efi on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
|
||||
/dev/nvme0n1p2 704M 269M 384M 42% /boot on /boot type ext4 (rw,relatime)
|
||||
overlay 915G 646G 223G 75% /var/lib/docker/overlay2/c9349dd66a824eb0883d69eb6114a6d713a48901579c45267ef1bea3c6ab7a1a/merged on /var/lib/docker/overlay2/c9349dd66a824eb0883d69eb6114a6d713a48901579c45267ef1bea3c6ab7a1a/merged type overlay (rw,relatime,lowerdir=/var/lib/docker/overlay2/l/FQIQG2VFFXJ426FBUGGBSCWRG2:/var/lib/docker/overlay2/l/33C2CVPTOUZAT35KSL6I6DIWBZ:/var/lib/docker/overlay2/l/JTYFHSFS4TSV4PYBIQ7R57HCJ7,upperdir=/var/lib/docker/overlay2/c9349dd66a824eb0883d69eb6114a6d713a48901579c45267ef1bea3c6ab7a1a/diff,workdir=/var/lib/docker/overlay2/c9349dd66a824eb0883d69eb6114a6d713a48901579c45267ef1bea3c6ab7a1a/work)
|
||||
overlay 915G 646G 223G 75% /var/lib/docker/overlay2/c9349dd66a824eb0883d69eb6114a6d713a48901579c45267ef1bea3c6ab7a1a/merged on /var/lib/docker/overlay2/f70a41a21dd8b3172c92e29fe1b91dfde0a65cfc878ee78acfad91e47124385c/merged type overlay (rw,relatime,lowerdir=/var/lib/docker/overlay2/l/RFAP7AE62T2GF223V7KCEJDN64:/var/lib/docker/overlay2/l/33C2CVPTOUZAT35KSL6I6DIWBZ:/var/lib/docker/overlay2/l/JTYFHSFS4TSV4PYBIQ7R57HCJ7,upperdir=/var/lib/docker/overlay2/f70a41a21dd8b3172c92e29fe1b91dfde0a65cfc878ee78acfad91e47124385c/diff,workdir=/var/lib/docker/overlay2/f70a41a21dd8b3172c92e29fe1b91dfde0a65cfc878ee78acfad91e47124385c/work)
|
||||
overlay 915G 646G 223G 75% /var/lib/docker/overlay2/f70a41a21dd8b3172c92e29fe1b91dfde0a65cfc878ee78acfad91e47124385c/merged on /var/lib/docker/overlay2/c9349dd66a824eb0883d69eb6114a6d713a48901579c45267ef1bea3c6ab7a1a/merged type overlay (rw,relatime,lowerdir=/var/lib/docker/overlay2/l/FQIQG2VFFXJ426FBUGGBSCWRG2:/var/lib/docker/overlay2/l/33C2CVPTOUZAT35KSL6I6DIWBZ:/var/lib/docker/overlay2/l/JTYFHSFS4TSV4PYBIQ7R57HCJ7,upperdir=/var/lib/docker/overlay2/c9349dd66a824eb0883d69eb6114a6d713a48901579c45267ef1bea3c6ab7a1a/diff,workdir=/var/lib/docker/overlay2/c9349dd66a824eb0883d69eb6114a6d713a48901579c45267ef1bea3c6ab7a1a/work)
|
||||
overlay 915G 646G 223G 75% /var/lib/docker/overlay2/f70a41a21dd8b3172c92e29fe1b91dfde0a65cfc878ee78acfad91e47124385c/merged on /var/lib/docker/overlay2/f70a41a21dd8b3172c92e29fe1b91dfde0a65cfc878ee78acfad91e47124385c/merged type overlay (rw,relatime,lowerdir=/var/lib/docker/overlay2/l/RFAP7AE62T2GF223V7KCEJDN64:/var/lib/docker/overlay2/l/33C2CVPTOUZAT35KSL6I6DIWBZ:/var/lib/docker/overlay2/l/JTYFHSFS4TSV4PYBIQ7R57HCJ7,upperdir=/var/lib/docker/overlay2/f70a41a21dd8b3172c92e29fe1b91dfde0a65cfc878ee78acfad91e47124385c/diff,workdir=/var/lib/docker/overlay2/f70a41a21dd8b3172c92e29fe1b91dfde0a65cfc878ee78acfad91e47124385c/work)
|
||||
tmpfs 16G 0 16G 0% /sys/fs/cgroup on /dev/shm type tmpfs (rw,nosuid,nodev,inode64)
|
||||
tmpfs 16G 0 16G 0% /sys/fs/cgroup on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k,inode64)
|
||||
tmpfs 16G 0 16G 0% /sys/fs/cgroup on /run/snapd/ns type tmpfs (rw,nosuid,nodev,noexec,relatime,size=3264260k,mode=755,inode64)
|
||||
tmpfs 16G 0 16G 0% /sys/fs/cgroup on /run type tmpfs (rw,nosuid,nodev,noexec,relatime,size=3264260k,mode=755,inode64)
|
||||
tmpfs 16G 0 16G 0% /sys/fs/cgroup on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=3264256k,mode=700,uid=1000,gid=1000,inode64)
|
||||
tmpfs 16G 0 16G 0% /sys/fs/cgroup on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755,inode64)
|
||||
tmpfs 16G 205M 16G 2% /dev/shm on /dev/shm type tmpfs (rw,nosuid,nodev,inode64)
|
||||
tmpfs 16G 205M 16G 2% /dev/shm on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k,inode64)
|
||||
tmpfs 16G 205M 16G 2% /dev/shm on /run/snapd/ns type tmpfs (rw,nosuid,nodev,noexec,relatime,size=3264260k,mode=755,inode64)
|
||||
tmpfs 16G 205M 16G 2% /dev/shm on /run type tmpfs (rw,nosuid,nodev,noexec,relatime,size=3264260k,mode=755,inode64)
|
||||
tmpfs 16G 205M 16G 2% /dev/shm on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=3264256k,mode=700,uid=1000,gid=1000,inode64)
|
||||
tmpfs 16G 205M 16G 2% /dev/shm on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755,inode64)
|
||||
tmpfs 3,2G 2,8M 3,2G 1% /run on /dev/shm type tmpfs (rw,nosuid,nodev,inode64)
|
||||
tmpfs 3,2G 2,8M 3,2G 1% /run on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k,inode64)
|
||||
tmpfs 3,2G 2,8M 3,2G 1% /run on /run/snapd/ns type tmpfs (rw,nosuid,nodev,noexec,relatime,size=3264260k,mode=755,inode64)
|
||||
tmpfs 3,2G 2,8M 3,2G 1% /run on /run type tmpfs (rw,nosuid,nodev,noexec,relatime,size=3264260k,mode=755,inode64)
|
||||
tmpfs 3,2G 2,8M 3,2G 1% /run on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=3264256k,mode=700,uid=1000,gid=1000,inode64)
|
||||
tmpfs 3,2G 2,8M 3,2G 1% /run on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755,inode64)
|
||||
tmpfs 3,2G 88K 3,2G 1% /run/user/1000 on /dev/shm type tmpfs (rw,nosuid,nodev,inode64)
|
||||
tmpfs 3,2G 88K 3,2G 1% /run/user/1000 on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k,inode64)
|
||||
tmpfs 3,2G 88K 3,2G 1% /run/user/1000 on /run/snapd/ns type tmpfs (rw,nosuid,nodev,noexec,relatime,size=3264260k,mode=755,inode64)
|
||||
tmpfs 3,2G 88K 3,2G 1% /run/user/1000 on /run type tmpfs (rw,nosuid,nodev,noexec,relatime,size=3264260k,mode=755,inode64)
|
||||
tmpfs 3,2G 88K 3,2G 1% /run/user/1000 on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=3264256k,mode=700,uid=1000,gid=1000,inode64)
|
||||
tmpfs 3,2G 88K 3,2G 1% /run/user/1000 on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755,inode64)
|
||||
tmpfs 5,0M 4,0K 5,0M 1% /run/lock on /dev/shm type tmpfs (rw,nosuid,nodev,inode64)
|
||||
tmpfs 5,0M 4,0K 5,0M 1% /run/lock on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k,inode64)
|
||||
tmpfs 5,0M 4,0K 5,0M 1% /run/lock on /run/snapd/ns type tmpfs (rw,nosuid,nodev,noexec,relatime,size=3264260k,mode=755,inode64)
|
||||
tmpfs 5,0M 4,0K 5,0M 1% /run/lock on /run type tmpfs (rw,nosuid,nodev,noexec,relatime,size=3264260k,mode=755,inode64)
|
||||
tmpfs 5,0M 4,0K 5,0M 1% /run/lock on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=3264256k,mode=700,uid=1000,gid=1000,inode64)
|
||||
tmpfs 5,0M 4,0K 5,0M 1% /run/lock on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755,inode64)
|
||||
udev 16G 0 16G 0% /dev on /dev type devtmpfs (rw,nosuid,noexec,relatime,size=16256608k,nr_inodes=4064152,mode=755,inode64)
|
87
t/pt-summary/samples/Linux/006/netstat
Normal file
87
t/pt-summary/samples/Linux/006/netstat
Normal file
@@ -0,0 +1,87 @@
|
||||
Active Internet connections (servers and established)
|
||||
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
|
||||
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
|
||||
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 4451/docker-proxy
|
||||
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/init
|
||||
tcp 0 0 0.0.0.0:17500 0.0.0.0:* LISTEN 6630/dropbox
|
||||
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 1577/systemd-resolv
|
||||
tcp 0 0 0.0.0.0:5100 0.0.0.0:* LISTEN 1889/haproxy
|
||||
tcp 0 0 127.0.0.1:42857 0.0.0.0:* LISTEN 1825/pmm-agent
|
||||
tcp 0 0 0.0.0.0:37607 0.0.0.0:* LISTEN -
|
||||
tcp 0 0 0.0.0.0:38653 0.0.0.0:* LISTEN 1872/rpc.mountd
|
||||
tcp 0 0 127.0.0.1:7777 0.0.0.0:* LISTEN 1825/pmm-agent
|
||||
tcp 0 0 0.0.0.0:60983 0.0.0.0:* LISTEN 1872/rpc.mountd
|
||||
tcp 0 0 127.0.0.1:39817 0.0.0.0:* LISTEN 1836/containerd
|
||||
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 2003/postgres
|
||||
tcp 0 0 127.0.0.1:17603 0.0.0.0:* LISTEN 6630/dropbox
|
||||
tcp 0 0 127.0.0.1:17600 0.0.0.0:* LISTEN 6630/dropbox
|
||||
tcp 0 0 0.0.0.0:45741 0.0.0.0:* LISTEN 1872/rpc.mountd
|
||||
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 4777/master
|
||||
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1632/cupsd
|
||||
tcp 0 0 192.168.1.25:42348 52.73.62.51:443 ESTABLISHED 2425/s1-network
|
||||
tcp 0 0 172.17.0.1:48718 172.17.0.2:443 TIME_WAIT -
|
||||
tcp 0 0 172.17.0.1:48720 172.17.0.2:443 TIME_WAIT -
|
||||
tcp 0 0 192.168.1.25:36336 157.240.9.53:443 ESTABLISHED 13327/wavebox --typ
|
||||
tcp 0 0 192.168.1.25:50798 185.166.143.25:443 ESTABLISHED 13327/wavebox --typ
|
||||
tcp 0 0 192.168.1.25:38128 162.220.4.198:22 ESTABLISHED 2378176/ssh
|
||||
tcp 0 0 192.168.1.25:41906 108.177.127.108:993 ESTABLISHED 474260/thunderbird
|
||||
tcp 0 0 192.168.1.25:48500 18.197.249.189:443 ESTABLISHED 7119/Slack --standa
|
||||
tcp 0 0 192.168.1.25:48494 18.197.249.189:443 ESTABLISHED 7119/Slack --standa
|
||||
tcp 0 0 192.168.1.25:55614 198.57.27.221:993 ESTABLISHED 474260/thunderbird
|
||||
tcp 0 0 192.168.1.25:34404 52.59.193.28:443 ESTABLISHED 13327/wavebox --typ
|
||||
tcp 1 0 192.168.11.22:57302 108.157.4.6:443 CLOSE_WAIT 12357/python3
|
||||
tcp 0 0 192.168.1.25:59664 82.202.226.23:443 ESTABLISHED 11292/firefox
|
||||
tcp 0 0 192.168.1.25:34400 173.194.79.109:993 ESTABLISHED 474260/thunderbird
|
||||
tcp 0 0 192.168.1.25:42474 84.38.188.87:443 ESTABLISHED 11292/firefox
|
||||
tcp 0 0 192.168.1.25:51650 35.174.188.51:443 ESTABLISHED 11292/firefox
|
||||
tcp 39 0 192.168.11.22:37302 35.168.140.53:443 CLOSE_WAIT 12357/python3
|
||||
tcp 0 0 192.168.1.25:60640 162.125.19.131:443 ESTABLISHED 6630/dropbox
|
||||
tcp 0 0 192.168.1.25:48504 18.197.249.189:443 ESTABLISHED 7119/Slack --standa
|
||||
tcp 0 0 192.168.1.25:38238 142.132.213.154:443 ESTABLISHED 13327/wavebox --typ
|
||||
tcp 0 0 192.168.1.25:45476 149.96.232.184:443 ESTABLISHED 11292/firefox
|
||||
tcp 0 0 172.17.0.1:48724 172.17.0.2:443 TIME_WAIT -
|
||||
tcp 0 0 127.0.0.1:56862 127.0.0.1:42857 ESTABLISHED 1825/pmm-agent
|
||||
tcp 1 0 192.168.11.22:40140 34.117.237.239:443 CLOSE_WAIT 12357/python3
|
||||
tcp 0 0 192.168.1.25:44984 54.146.182.72:443 ESTABLISHED 11292/firefox
|
||||
tcp 0 0 192.168.1.25:40314 108.177.119.109:993 ESTABLISHED 474260/thunderbird
|
||||
tcp 0 0 192.168.1.25:45412 149.96.232.184:443 ESTABLISHED 11292/firefox
|
||||
tcp 1 0 192.168.11.22:37304 35.168.140.53:443 CLOSE_WAIT 12357/python3
|
||||
tcp 0 0 192.168.1.25:48502 18.197.249.189:443 ESTABLISHED 7119/Slack --standa
|
||||
tcp 0 0 192.168.1.25:35324 23.61.80.242:443 ESTABLISHED 13327/wavebox --typ
|
||||
tcp 1 0 192.168.11.22:50386 35.186.227.140:443 CLOSE_WAIT 12357/python3
|
||||
tcp 0 0 192.168.1.25:47450 172.67.8.157:443 TIME_WAIT -
|
||||
tcp 0 0 192.168.1.25:58620 149.154.167.51:443 ESTABLISHED 181231/Telegram
|
||||
tcp 1 0 192.168.11.22:49692 93.184.220.29:80 CLOSE_WAIT 12357/python3
|
||||
tcp 0 0 192.168.1.25:42408 35.174.127.31:443 ESTABLISHED 13327/wavebox --typ
|
||||
tcp 0 0 192.168.1.25:48498 18.197.249.189:443 ESTABLISHED 7119/Slack --standa
|
||||
tcp 0 0 172.17.0.1:48722 172.17.0.2:443 TIME_WAIT -
|
||||
tcp 39 0 192.168.11.22:37306 35.168.140.53:443 CLOSE_WAIT 12357/python3
|
||||
tcp 1 0 192.168.11.22:49690 93.184.220.29:80 CLOSE_WAIT 12357/python3
|
||||
tcp 39 0 192.168.11.22:37300 35.168.140.53:443 CLOSE_WAIT 12357/python3
|
||||
tcp 0 0 192.168.1.25:39040 3.233.54.64:443 ESTABLISHED 7119/Slack --standa
|
||||
tcp 0 0 192.168.1.25:59964 108.177.126.188:5228 ESTABLISHED 13327/wavebox --typ
|
||||
tcp 0 0 192.168.1.25:58452 3.126.186.102:443 ESTABLISHED 7119/Slack --standa
|
||||
tcp 0 0 192.168.1.25:50262 173.194.69.108:993 ESTABLISHED 474260/thunderbird
|
||||
tcp 0 0 127.0.0.1:42857 127.0.0.1:56862 ESTABLISHED 1825/pmm-agent
|
||||
tcp 0 0 192.168.1.25:34402 173.194.79.109:993 ESTABLISHED 474260/thunderbird
|
||||
tcp 0 0 192.168.1.25:54208 162.125.19.9:443 ESTABLISHED 6630/dropbox
|
||||
tcp 0 0 192.168.1.25:42406 35.174.127.31:443 ESTABLISHED 11292/firefox
|
||||
tcp 0 0 192.168.1.25:44784 3.67.131.16:443 ESTABLISHED 7119/Slack --standa
|
||||
tcp 0 0 192.168.1.25:48508 18.197.249.189:443 ESTABLISHED 7119/Slack --standa
|
||||
tcp 0 0 192.168.1.25:50712 108.139.241.22:443 ESTABLISHED 11292/firefox
|
||||
tcp 0 0 192.168.1.25:60766 54.244.16.100:443 ESTABLISHED 11292/firefox
|
||||
tcp 0 0 192.168.1.25:48506 18.197.249.189:443 ESTABLISHED 7119/Slack --standa
|
||||
tcp6 0 0 ::1:631 :::* LISTEN 1632/cupsd
|
||||
tcp6 0 0 :::2049 :::* LISTEN -
|
||||
tcp6 0 0 :::3000 :::* LISTEN 2882/grafana-server
|
||||
tcp6 0 0 ::1:25 :::* LISTEN 4777/master
|
||||
tcp6 0 0 :::3306 :::* LISTEN 1996/mysqld
|
||||
tcp6 0 0 :::33060 :::* LISTEN 1996/mysqld
|
||||
tcp6 0 0 :::443 :::* LISTEN 4459/docker-proxy
|
||||
tcp6 0 0 :::111 :::* LISTEN 1/init
|
||||
tcp6 0 0 :::17500 :::* LISTEN 6630/dropbox
|
||||
tcp6 0 0 :::1716 :::* LISTEN 6285/kdeconnectd
|
||||
tcp6 0 0 :::37817 :::* LISTEN -
|
||||
tcp6 0 0 :::54381 :::* LISTEN 1872/rpc.mountd
|
||||
tcp6 0 0 :::41909 :::* LISTEN 1872/rpc.mountd
|
||||
tcp6 0 0 :::47587 :::* LISTEN 1872/rpc.mountd
|
36
t/pt-summary/samples/Linux/006/network_devices
Normal file
36
t/pt-summary/samples/Linux/006/network_devices
Normal file
@@ -0,0 +1,36 @@
|
||||
Settings for br-5bbb6abaea1c:
|
||||
Supported ports: [ ]
|
||||
Supported link modes: Not reported
|
||||
Supported pause frame use: No
|
||||
Supports auto-negotiation: No
|
||||
Supported FEC modes: Not reported
|
||||
Advertised link modes: Not reported
|
||||
Advertised pause frame use: No
|
||||
Advertised auto-negotiation: No
|
||||
Advertised FEC modes: Not reported
|
||||
Speed: Unknown!
|
||||
Duplex: Unknown! (255)
|
||||
Port: Other
|
||||
PHYAD: 0
|
||||
Transceiver: internal
|
||||
Auto-negotiation: off
|
||||
Link detected: no
|
||||
Settings for docker0:
|
||||
Supported ports: [ ]
|
||||
Supported link modes: Not reported
|
||||
Supported pause frame use: No
|
||||
Supports auto-negotiation: No
|
||||
Supported FEC modes: Not reported
|
||||
Advertised link modes: Not reported
|
||||
Advertised pause frame use: No
|
||||
Advertised auto-negotiation: No
|
||||
Advertised FEC modes: Not reported
|
||||
Speed: 10000Mb/s
|
||||
Duplex: Unknown! (255)
|
||||
Port: Other
|
||||
PHYAD: 0
|
||||
Transceiver: internal
|
||||
Auto-negotiation: off
|
||||
Link detected: yes
|
||||
Settings for wlp0s20f3:
|
||||
Link detected: yes
|
2
t/pt-summary/samples/Linux/006/notable_procs
Normal file
2
t/pt-summary/samples/Linux/006/notable_procs
Normal file
@@ -0,0 +1,2 @@
|
||||
PID OOM COMMAND
|
||||
? ? sshd doesn't appear to be running
|
13
t/pt-summary/samples/Linux/006/numactl
Normal file
13
t/pt-summary/samples/Linux/006/numactl
Normal file
@@ -0,0 +1,13 @@
|
||||
available: 1 nodes (0)
|
||||
node 0 cpus: 0 1 2 3 4 5 6 7
|
||||
node 0 size: 31877 MB
|
||||
node 0 free: 2282 MB
|
||||
node distances:
|
||||
node 0
|
||||
0: 10
|
||||
policy: default
|
||||
preferred node: current
|
||||
physcpubind: 0 1 2 3 4 5 6 7
|
||||
cpubind: 0
|
||||
nodebind: 0
|
||||
membind: 0
|
33
t/pt-summary/samples/Linux/006/partitioning
Normal file
33
t/pt-summary/samples/Linux/006/partitioning
Normal file
@@ -0,0 +1,33 @@
|
||||
Disk /dev/dm-0: 952,65 GiB, 1022886936576 bytes, 1997826048 sectors
|
||||
Units: sectors of 1 * 512 = 512 bytes
|
||||
Sector size (logical/physical): 512 bytes / 512 bytes
|
||||
I/O size (minimum/optimal): 512 bytes / 512 bytes
|
||||
Disk /dev/dm-1: 930,38 GiB, 998974160896 bytes, 1951121408 sectors
|
||||
Units: sectors of 1 * 512 = 512 bytes
|
||||
Sector size (logical/physical): 512 bytes / 512 bytes
|
||||
I/O size (minimum/optimal): 512 bytes / 512 bytes
|
||||
Disk /dev/dm-2: 976 MiB, 1023410176 bytes, 1998848 sectors
|
||||
Units: sectors of 1 * 512 = 512 bytes
|
||||
Sector size (logical/physical): 512 bytes / 512 bytes
|
||||
I/O size (minimum/optimal): 512 bytes / 512 bytes
|
||||
Disk /dev/mmcblk0: 238,51 GiB, 256087425024 bytes, 500170752 sectors
|
||||
Units: sectors of 1 * 512 = 512 bytes
|
||||
Sector size (logical/physical): 512 bytes / 512 bytes
|
||||
I/O size (minimum/optimal): 512 bytes / 512 bytes
|
||||
Disklabel type: dos
|
||||
Disk identifier: 0x00000000
|
||||
|
||||
Device Boot Start End Sectors Size Id Type
|
||||
/dev/mmcblk0p1 65536 500170751 500105216 238,5G 7 HPFS/NTFS/exFAT
|
||||
Disk /dev/nvme0n1: 953,89 GiB, 1024209543168 bytes, 2000409264 sectors
|
||||
Disk model: KBG40ZPZ1T02 NVMe KIOXIA 1024GB
|
||||
Units: sectors of 1 * 512 = 512 bytes
|
||||
Sector size (logical/physical): 512 bytes / 512 bytes
|
||||
I/O size (minimum/optimal): 512 bytes / 512 bytes
|
||||
Disklabel type: gpt
|
||||
Disk identifier: 85C611CD-5431-4294-868D-B74F61A4AEBC
|
||||
|
||||
Device Start End Sectors Size Type
|
||||
/dev/nvme0n1p1 2048 1050623 1048576 512M EFI System
|
||||
/dev/nvme0n1p2 1050624 2549759 1499136 732M Linux filesystem
|
||||
/dev/nvme0n1p3 2549760 2000408575 1997858816 952,7G Linux filesystem
|
224
t/pt-summary/samples/Linux/006/proc_cpuinfo_copy
Normal file
224
t/pt-summary/samples/Linux/006/proc_cpuinfo_copy
Normal file
@@ -0,0 +1,224 @@
|
||||
processor : 0
|
||||
vendor_id : GenuineIntel
|
||||
cpu family : 6
|
||||
model : 126
|
||||
model name : Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz
|
||||
stepping : 5
|
||||
microcode : 0xb0
|
||||
cpu MHz : 1500.000
|
||||
cache size : 8192 KB
|
||||
physical id : 0
|
||||
siblings : 8
|
||||
core id : 0
|
||||
cpu cores : 4
|
||||
apicid : 0
|
||||
initial apicid : 0
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 27
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt intel_pt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves split_lock_detect dtherm ida arat pln pts hwp hwp_act_window hwp_epp hwp_pkg_req avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm md_clear flush_l1d arch_capabilities
|
||||
vmx flags : vnmi preemption_timer posted_intr invvpid ept_x_only ept_ad ept_1gb flexpriority apicv tsc_offset vtpr mtf vapic ept vpid unrestricted_guest vapic_reg vid ple pml ept_mode_based_exec tsc_scaling
|
||||
bugs : spectre_v1 spectre_v2 spec_store_bypass swapgs itlb_multihit srbds mmio_stale_data
|
||||
bogomips : 2995.20
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 39 bits physical, 48 bits virtual
|
||||
power management:
|
||||
|
||||
processor : 1
|
||||
vendor_id : GenuineIntel
|
||||
cpu family : 6
|
||||
model : 126
|
||||
model name : Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz
|
||||
stepping : 5
|
||||
microcode : 0xb0
|
||||
cpu MHz : 1500.000
|
||||
cache size : 8192 KB
|
||||
physical id : 0
|
||||
siblings : 8
|
||||
core id : 1
|
||||
cpu cores : 4
|
||||
apicid : 2
|
||||
initial apicid : 2
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 27
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt intel_pt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves split_lock_detect dtherm ida arat pln pts hwp hwp_act_window hwp_epp hwp_pkg_req avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm md_clear flush_l1d arch_capabilities
|
||||
vmx flags : vnmi preemption_timer posted_intr invvpid ept_x_only ept_ad ept_1gb flexpriority apicv tsc_offset vtpr mtf vapic ept vpid unrestricted_guest vapic_reg vid ple pml ept_mode_based_exec tsc_scaling
|
||||
bugs : spectre_v1 spectre_v2 spec_store_bypass swapgs itlb_multihit srbds mmio_stale_data
|
||||
bogomips : 2995.20
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 39 bits physical, 48 bits virtual
|
||||
power management:
|
||||
|
||||
processor : 2
|
||||
vendor_id : GenuineIntel
|
||||
cpu family : 6
|
||||
model : 126
|
||||
model name : Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz
|
||||
stepping : 5
|
||||
microcode : 0xb0
|
||||
cpu MHz : 1500.000
|
||||
cache size : 8192 KB
|
||||
physical id : 0
|
||||
siblings : 8
|
||||
core id : 2
|
||||
cpu cores : 4
|
||||
apicid : 4
|
||||
initial apicid : 4
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 27
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt intel_pt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves split_lock_detect dtherm ida arat pln pts hwp hwp_act_window hwp_epp hwp_pkg_req avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm md_clear flush_l1d arch_capabilities
|
||||
vmx flags : vnmi preemption_timer posted_intr invvpid ept_x_only ept_ad ept_1gb flexpriority apicv tsc_offset vtpr mtf vapic ept vpid unrestricted_guest vapic_reg vid ple pml ept_mode_based_exec tsc_scaling
|
||||
bugs : spectre_v1 spectre_v2 spec_store_bypass swapgs itlb_multihit srbds mmio_stale_data
|
||||
bogomips : 2995.20
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 39 bits physical, 48 bits virtual
|
||||
power management:
|
||||
|
||||
processor : 3
|
||||
vendor_id : GenuineIntel
|
||||
cpu family : 6
|
||||
model : 126
|
||||
model name : Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz
|
||||
stepping : 5
|
||||
microcode : 0xb0
|
||||
cpu MHz : 1500.000
|
||||
cache size : 8192 KB
|
||||
physical id : 0
|
||||
siblings : 8
|
||||
core id : 3
|
||||
cpu cores : 4
|
||||
apicid : 6
|
||||
initial apicid : 6
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 27
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt intel_pt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves split_lock_detect dtherm ida arat pln pts hwp hwp_act_window hwp_epp hwp_pkg_req avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm md_clear flush_l1d arch_capabilities
|
||||
vmx flags : vnmi preemption_timer posted_intr invvpid ept_x_only ept_ad ept_1gb flexpriority apicv tsc_offset vtpr mtf vapic ept vpid unrestricted_guest vapic_reg vid ple pml ept_mode_based_exec tsc_scaling
|
||||
bugs : spectre_v1 spectre_v2 spec_store_bypass swapgs itlb_multihit srbds mmio_stale_data
|
||||
bogomips : 2995.20
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 39 bits physical, 48 bits virtual
|
||||
power management:
|
||||
|
||||
processor : 4
|
||||
vendor_id : GenuineIntel
|
||||
cpu family : 6
|
||||
model : 126
|
||||
model name : Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz
|
||||
stepping : 5
|
||||
microcode : 0xb0
|
||||
cpu MHz : 3113.329
|
||||
cache size : 8192 KB
|
||||
physical id : 0
|
||||
siblings : 8
|
||||
core id : 0
|
||||
cpu cores : 4
|
||||
apicid : 1
|
||||
initial apicid : 1
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 27
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt intel_pt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves split_lock_detect dtherm ida arat pln pts hwp hwp_act_window hwp_epp hwp_pkg_req avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm md_clear flush_l1d arch_capabilities
|
||||
vmx flags : vnmi preemption_timer posted_intr invvpid ept_x_only ept_ad ept_1gb flexpriority apicv tsc_offset vtpr mtf vapic ept vpid unrestricted_guest vapic_reg vid ple pml ept_mode_based_exec tsc_scaling
|
||||
bugs : spectre_v1 spectre_v2 spec_store_bypass swapgs itlb_multihit srbds mmio_stale_data
|
||||
bogomips : 2995.20
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 39 bits physical, 48 bits virtual
|
||||
power management:
|
||||
|
||||
processor : 5
|
||||
vendor_id : GenuineIntel
|
||||
cpu family : 6
|
||||
model : 126
|
||||
model name : Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz
|
||||
stepping : 5
|
||||
microcode : 0xb0
|
||||
cpu MHz : 1500.000
|
||||
cache size : 8192 KB
|
||||
physical id : 0
|
||||
siblings : 8
|
||||
core id : 1
|
||||
cpu cores : 4
|
||||
apicid : 3
|
||||
initial apicid : 3
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 27
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt intel_pt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves split_lock_detect dtherm ida arat pln pts hwp hwp_act_window hwp_epp hwp_pkg_req avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm md_clear flush_l1d arch_capabilities
|
||||
vmx flags : vnmi preemption_timer posted_intr invvpid ept_x_only ept_ad ept_1gb flexpriority apicv tsc_offset vtpr mtf vapic ept vpid unrestricted_guest vapic_reg vid ple pml ept_mode_based_exec tsc_scaling
|
||||
bugs : spectre_v1 spectre_v2 spec_store_bypass swapgs itlb_multihit srbds mmio_stale_data
|
||||
bogomips : 2995.20
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 39 bits physical, 48 bits virtual
|
||||
power management:
|
||||
|
||||
processor : 6
|
||||
vendor_id : GenuineIntel
|
||||
cpu family : 6
|
||||
model : 126
|
||||
model name : Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz
|
||||
stepping : 5
|
||||
microcode : 0xb0
|
||||
cpu MHz : 1500.000
|
||||
cache size : 8192 KB
|
||||
physical id : 0
|
||||
siblings : 8
|
||||
core id : 2
|
||||
cpu cores : 4
|
||||
apicid : 5
|
||||
initial apicid : 5
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 27
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt intel_pt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves split_lock_detect dtherm ida arat pln pts hwp hwp_act_window hwp_epp hwp_pkg_req avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm md_clear flush_l1d arch_capabilities
|
||||
vmx flags : vnmi preemption_timer posted_intr invvpid ept_x_only ept_ad ept_1gb flexpriority apicv tsc_offset vtpr mtf vapic ept vpid unrestricted_guest vapic_reg vid ple pml ept_mode_based_exec tsc_scaling
|
||||
bugs : spectre_v1 spectre_v2 spec_store_bypass swapgs itlb_multihit srbds mmio_stale_data
|
||||
bogomips : 2995.20
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 39 bits physical, 48 bits virtual
|
||||
power management:
|
||||
|
||||
processor : 7
|
||||
vendor_id : GenuineIntel
|
||||
cpu family : 6
|
||||
model : 126
|
||||
model name : Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz
|
||||
stepping : 5
|
||||
microcode : 0xb0
|
||||
cpu MHz : 1500.000
|
||||
cache size : 8192 KB
|
||||
physical id : 0
|
||||
siblings : 8
|
||||
core id : 3
|
||||
cpu cores : 4
|
||||
apicid : 7
|
||||
initial apicid : 7
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 27
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt intel_pt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves split_lock_detect dtherm ida arat pln pts hwp hwp_act_window hwp_epp hwp_pkg_req avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm md_clear flush_l1d arch_capabilities
|
||||
vmx flags : vnmi preemption_timer posted_intr invvpid ept_x_only ept_ad ept_1gb flexpriority apicv tsc_offset vtpr mtf vapic ept vpid unrestricted_guest vapic_reg vid ple pml ept_mode_based_exec tsc_scaling
|
||||
bugs : spectre_v1 spectre_v2 spec_store_bypass swapgs itlb_multihit srbds mmio_stale_data
|
||||
bogomips : 2995.20
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 39 bits physical, 48 bits virtual
|
||||
power management:
|
||||
|
10
t/pt-summary/samples/Linux/006/processes
Normal file
10
t/pt-summary/samples/Linux/006/processes
Normal file
@@ -0,0 +1,10 @@
|
||||
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
|
||||
1836 root 20 0 1862488 39156 14168 S 6,2 0,1 6:31.69 contain+
|
||||
5074 sveta 20 0 715908 14380 3312 S 6,2 0,0 2:32.24 vmalert
|
||||
5511 sveta 20 0 5958132 675752 593316 S 6,2 2,1 23:18.64 Xorg
|
||||
5582 sveta 20 0 992772 140588 5952 S 6,2 0,4 1:32.41 percona+
|
||||
5583 sveta 20 0 992516 246840 5964 S 6,2 0,8 1:29.62 percona+
|
||||
5819 sveta 20 0 5997200 367992 81312 S 6,2 1,1 42:19.42 gnome-s+
|
||||
13430 sveta 20 0 1124,6g 172364 74192 S 6,2 0,5 16:06.71 wavebox
|
||||
14886 sveta 20 0 1124,5g 138544 72440 S 6,2 0,4 0:32.75 wavebox
|
||||
474260 sveta 20 0 5069828 795952 162860 S 6,2 2,4 33:45.76 thunder+
|
29
t/pt-summary/samples/Linux/006/summary
Normal file
29
t/pt-summary/samples/Linux/006/summary
Normal file
@@ -0,0 +1,29 @@
|
||||
platform Linux
|
||||
hostname Delly-7390
|
||||
kernel 5.15.0-41-generic
|
||||
release Ubuntu 20.04.4 LTS (focal)
|
||||
CPU_ARCH 64-bit
|
||||
OS_ARCH 64-bit
|
||||
virt No virtualization detected
|
||||
vendor Dell Inc.
|
||||
system Dell Inc.; XPS 13 7390 2-in-1; vNot Specified (Convertible)
|
||||
servicetag H3RJL13
|
||||
rss 21008793600
|
||||
raid_controller No RAID controller detected
|
||||
threading NPTL 2.31
|
||||
getenforce No SELinux detected
|
||||
swappiness 60
|
||||
dirtypolicy 20, 10
|
||||
dirtystatus 0, 0
|
||||
numa-available 1
|
||||
numa-policy default
|
||||
numa-preferred-node current
|
||||
internal::disks dm-0 dm-1 dm-2 mmcblk0 nvme0n1
|
||||
internal::dm-0 128
|
||||
internal::dm-1 128
|
||||
internal::dm-2 128
|
||||
internal::mmcblk0 [mq-deadline] 128
|
||||
internal::nvme0n1 [none] 127
|
||||
dentry-state 456513 375385 45 0 141719 0
|
||||
file-nr 30570 0 9223372036854775807
|
||||
inode-nr 399300 88416
|
1486
t/pt-summary/samples/Linux/006/sysctl
Normal file
1486
t/pt-summary/samples/Linux/006/sysctl
Normal file
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user