You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
1
(3) |
2
(26) |
3
(15) |
4
(19) |
5
(16) |
6
(16) |
7
(13) |
|
8
(1) |
9
(12) |
10
|
11
(4) |
12
(17) |
13
(21) |
14
(15) |
|
15
(12) |
16
(14) |
17
(14) |
18
(12) |
19
(16) |
20
(27) |
21
(37) |
|
22
(25) |
23
(23) |
24
(14) |
25
(14) |
26
(14) |
27
(14) |
28
(11) |
|
29
(3) |
30
(13) |
|
|
|
|
|
|
From: <sv...@va...> - 2012-04-08 19:52:46
|
philippe 2012-04-08 20:52:38 +0100 (Sun, 08 Apr 2012)
New Revision: 12496
Log:
outer/inner setup: new perf/vg_perf options to run perf tests + support translation chaining in inner.
* perf/vg_perf:
Similarly to tests/vg_regtest, perf/vg_perf now accepts the 3
optional arguments:
--outer-valgrind
--outer-tool
--outer-args
This allows easy analysis or comparison of performance between
different Valgrind versions (e.g. using callgrind, or cachegrind/cg_diff).
* See README_DEVELOPERS for more details.
* vg_regtest modified so as to use the 'in-place' build of inner, rather
than the installed version.
* added option --smc-check=all-non-file to vg_perf and vg_regtest
outer default arguments (needed when evaluating a Valgrind which does
translation chaining).
Modified files:
trunk/README_DEVELOPERS
trunk/perf/vg_perf.in
trunk/tests/vg_regtest.in
Modified: trunk/tests/vg_regtest.in (+10 -9)
===================================================================
--- trunk/tests/vg_regtest.in 2012-04-06 15:50:52 +01:00 (rev 12495)
+++ trunk/tests/vg_regtest.in 2012-04-08 20:52:38 +01:00 (rev 12496)
@@ -164,8 +164,6 @@
chomp(my $tests_dir = `pwd`);
# Outer valgrind to use, and args to use for it.
-# If this is set, --valgrind should be set to the installed inner valgrind,
-# and --valgrind-lib will be ignore
my $outer_valgrind;
my $outer_tool = "memcheck";
my $outer_args;
@@ -238,11 +236,12 @@
$valgrind = validate_program($tests_dir, $valgrind, 1, 0);
if (defined $outer_valgrind) {
- $outer_valgrind = validate_program($tests_dir, $outer_valgrind, 1, 0);
+ $outer_valgrind = validate_program($tests_dir, $outer_valgrind, 1, 1);
if (not defined $outer_args) {
$outer_args =
- " --command-line-only=yes"
+ " --command-line-only=yes"
. " --run-libc-freeres=no --sim-hints=enable-outer"
+ . " --smc-check=all-non-file"
. " --vgdb=no --trace-children=yes --read-var-info=no"
. " --suppressions="
. validate_program($tests_dir,"./tests/outer_inner.supp",1,0)
@@ -457,12 +456,12 @@
}
# Pass the appropriate --tool option for the directory (can be overridden
- # by an "args:" line, though). Set both VALGRIND_LIB and
- # VALGRIND_LIB_INNER in case this Valgrind was configured with
- # --enable-inner.
+ # by an "args:" line, though).
my $tool=determine_tool();
if (defined $outer_valgrind ) {
- mysystem("$outer_valgrind "
+ # in an outer-inner setup, only set VALGRIND_LIB_INNER
+ mysystem( "VALGRIND_LIB_INNER=$valgrind_lib "
+ . "$outer_valgrind "
. "--tool=" . $outer_tool . " "
. "$outer_args "
. "--log-file=" . "$name.outer.log "
@@ -471,7 +470,9 @@
. "--tool=$tool $extraopts $vgopts "
. "$prog $args > $name.stdout.out 2> $name.stderr.out");
} else {
- mysystem("VALGRIND_LIB=$valgrind_lib VALGRIND_LIB_INNER=$valgrind_lib "
+ # Set both VALGRIND_LIB and VALGRIND_LIB_INNER in case this Valgrind
+ # was configured with --enable-inner.
+ mysystem( "VALGRIND_LIB=$valgrind_lib VALGRIND_LIB_INNER=$valgrind_lib "
. "$valgrind --command-line-only=yes --memcheck:leak-check=no "
. "--tool=$tool $extraopts $vgopts "
. "$prog $args > $name.stdout.out 2> $name.stderr.out");
Modified: trunk/README_DEVELOPERS (+59 -3)
===================================================================
--- trunk/README_DEVELOPERS 2012-04-06 15:50:52 +01:00 (rev 12495)
+++ trunk/README_DEVELOPERS 2012-04-08 20:52:38 +01:00 (rev 12496)
@@ -136,8 +136,16 @@
Self-hosting
~~~~~~~~~~~~
-To run Valgrind under Valgrind:
+This section explains :
+ (A) How to configure Valgrind to run under Valgrind.
+ Such a setup is called self hosting, or outer/inner setup.
+ (B) How to run Valgrind regression tests in a 'self-hosting' mode,
+ e.g. to verify Valgrind has no bugs such as memory leaks.
+ (C) How to run Valgrind performance tests in a 'self-hosting' mode,
+ to analyse and optimise the performance of Valgrind and its tools.
+(A) How to configure Valgrind to run under Valgrind:
+
(1) Check out 2 trees, "Inner" and "Outer". Inner runs the app
directly. Outer runs Inner.
@@ -148,6 +156,7 @@
(4) Choose a very simple program (date) and try
outer/.../bin/valgrind --sim-hints=enable-outer --trace-children=yes \
+ --smc-check=all-non-file \
--run-libc-freeres=no --tool=cachegrind -v \
inner/.../bin/valgrind --vgdb-prefix=./inner --tool=none -v prog
@@ -156,6 +165,10 @@
it will try to find and run __libc_freeres in the inner, while libc is not
used by the inner. Inner needs --vgdb-prefix=./inner to avoid inner
gdbserver colliding with outer gdbserver.
+Currently, inner does *not* use the client request
+VALGRIND_DISCARD_TRANSLATIONS for the JITted code or the code patched for
+translation chaining. So the outer needs --smc-check=all-non-file to
+detect the modified code.
Debugging the whole thing might imply to use up to 3 GDB:
* a GDB attached to the Outer valgrind, allowing
@@ -186,7 +199,8 @@
When using self-hosting with an outer Callgrind tool, use '--pop-on-jump'
(on the outer). Otherwise, Callgrind has much higher memory requirements.
-Regression tests in an outer/inner setup:
+(B) Regression tests in an outer/inner setup:
+
To run all the regression tests with an outer memcheck, do :
perl test/vg_regtest --outer-valgrind=../outer/.../bin/valgrind \
--all
@@ -197,7 +211,7 @@
To run regression tests with another outer tool:
perl tests/vg_regtest --outer-valgrind=../outer/.../bin/valgrind \
- --outer-tool=helgrind " --all
+ --outer-tool=helgrind --all
--outer-args allows to give specific arguments to the outer tool,
replacing the default one provided by vg_regtest.
@@ -211,6 +225,48 @@
The file tests/outer_inner.supp contains suppressions for
the irrelevant or benign errors found in the inner.
+(C) Performance tests in an outer/inner setup:
+
+ To run all the performance tests with an outer cachegrind, do :
+ perl perf/vg_perf --outer-valgrind=../outer/.../bin/valgrind perf
+
+ To run a specific perf test (e.g. bz2) in this setup, do :
+ perl perf/vg_perf --outer-valgrind=../outer/.../bin/valgrind perf/bz2
+
+ To run all the performance tests with an outer callgrind, do :
+ perl perf/vg_perf --outer-valgrind=../outer/.../bin/valgrind \
+ --outer-tool=callgrind perf
+
+ To compare the performance of multiple Valgrind versions, do :
+ perl perf/vg_perf --outer-valgrind=../outer/.../bin/valgrind \
+ --vg=../inner_xxxx --vg=../inner_yyyy perf
+ (where inner_xxxx and inner_yyyy are the versions to compare).
+ Cachegrind and cg_diff are particularly handy to obtain a delta
+ between the two versions.
+
+When the outer tool is callgrind or cachegrind, the following
+output files will be created for each test:
+ <outertoolname>.out.<inner_valgrind_dir>.<tt>.<perftestname>.<pid>
+ <outertoolname>.outer.log.<inner_valgrind_dir>.<tt>.<perftestname>.<pid>
+ (where tt is the two letters abbreviation for the inner tool(s) run).
+
+For example, the command
+ perl perf/vg_perf \
+ --outer-valgrind=../outer_trunk/install/bin/valgrind \
+ --outer-tool=callgrind \
+ --vg=../inner_tchain --vg=../inner_trunk perf/many-loss-records
+
+produces the files
+ callgrind.out.inner_tchain.no.many-loss-records.18465
+ callgrind.outer.log.inner_tchain.no.many-loss-records.18465
+ callgrind.out.inner_tchain.me.many-loss-records.21899
+ callgrind.outer.log.inner_tchain.me.many-loss-records.21899
+ callgrind.out.inner_trunk.no.many-loss-records.21224
+ callgrind.outer.log.inner_trunk.no.many-loss-records.21224
+ callgrind.out.inner_trunk.me.many-loss-records.22916
+ callgrind.outer.log.inner_trunk.me.many-loss-records.22916
+
+
Printing out problematic blocks
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If you want to print out a disassembly of a particular block that
Modified: trunk/perf/vg_perf.in (+71 -12)
===================================================================
--- trunk/perf/vg_perf.in 2012-04-06 15:50:52 +01:00 (rev 12495)
+++ trunk/perf/vg_perf.in 2012-04-08 20:52:38 +01:00 (rev 12496)
@@ -58,10 +58,15 @@
-h --help show this message
--reps=<n> number of repeats for each program [1]
--tools=<t1,t2,t3> tools to run [Nulgrind and Memcheck]
- --vg Valgrind(s) to measure (can be specified multiple
- times). The "in-place" build is used.
- [Valgrind in the current directory]
+ --vg Valgrind(s) to measure [Valgrind in the current directory]
+ (can be specified multiple times).
+ The "in-place" build is used.
+ --outer-valgrind: run these Valgrind(s) under the given outer valgrind.
+ These Valgrind(s) must be configured with --enable-inner.
+ --outer-tool: tool to use by the outer valgrind (default cachegrind).
+ --outer-args: use this as outer tool args.
+
Any tools named in --tools must be present in all directories specified
with --vg. (This is not checked.)
END
@@ -79,6 +84,14 @@
my @vgdirs; # Dirs of the various Valgrinds being measured.
my @tools = ("none", "memcheck"); # tools being measured
+# Outer valgrind to use, and args to use for it.
+# If this is set, --valgrind should be set to the installed inner valgrind,
+# and --valgrind-lib will be ignore
+my $outer_valgrind;
+my $outer_tool = "cachegrind";
+my $outer_args;
+
+
my $num_tests_done = 0;
my $num_timings_done = 0;
@@ -119,7 +132,6 @@
{
my ($vgdir) = @_;
if ($vgdir !~ /^\//) { $vgdir = "$tests_dir/$vgdir"; }
- validate_program($vgdir, "./coregrind/valgrind", 1, 1);
push(@vgdirs, $vgdir);
}
@@ -137,6 +149,12 @@
add_vgdir($1);
} elsif ($arg =~ /^--tools=(.+)$/) {
@tools = split(/,/, $1);
+ } elsif ($arg =~ /^--outer-valgrind=(.*)$/) {
+ $outer_valgrind = $1;
+ } elsif ($arg =~ /^--outer-tool=(.*)$/) {
+ $outer_tool = $1;
+ } elsif ($arg =~ /^--outer-args=(.*)$/) {
+ $outer_args = $1;
} else {
die $usage;
}
@@ -256,6 +274,17 @@
my $cmd = "$timecmd $prog $args";
my $tNative = time_prog($cmd, $n_reps);
+ if (defined $outer_valgrind) {
+ $outer_valgrind = validate_program($tests_dir, $outer_valgrind, 1, 1);
+ foreach my $vgdir (@vgdirs) {
+ validate_program($vgdir, "./coregrind/valgrind", 1, 1);
+ }
+ } else {
+ foreach my $vgdir (@vgdirs) {
+ validate_program($vgdir, "./coregrind/valgrind", 1, 1);
+ }
+ }
+
foreach my $vgdir (@vgdirs) {
# Benchmark name
printf("%-8s ", $name);
@@ -272,20 +301,50 @@
# First two chars of toolname for abbreviation
my $tool_abbrev = $tool;
$tool_abbrev =~ s/(..).*/$1/;
+ printf(" %s:", $tool_abbrev);
+ my $run_outer_args = "";
+ if (not defined $outer_args) {
+ $run_outer_args =
+ " -v --command-line-only=yes"
+ . " --run-libc-freeres=no --sim-hints=enable-outer"
+ . " --smc-check=all-non-file"
+ . " --vgdb=no --trace-children=yes --read-var-info=no"
+ . " --suppressions=../tests/outer_inner.supp"
+ . " --memcheck:leak-check=full --memcheck:show-reachable=no"
+ . " --cachegrind:cache-sim=yes --cachegrind:branch-sim=yes"
+ . " --cachegrind:cachegrind-out-file=cachegrind.out.$vgdirname.$tool_abbrev.$name.%p"
+ . " --callgrind:cache-sim=yes --callgrind:branch-sim=yes"
+ . " --callgrind:dump-instr=yes --callgrind:collect-jumps=yes"
+ . " --callgrind:callgrind-out-file=callgrind.out.$vgdirname.$tool_abbrev.$name.%p"
+ . " ";
+ } else {
+ $run_outer_args = $outer_args;
+ }
- # Do the tool run(s). Set both VALGRIND_LIB and VALGRIND_LIB_INNER
- # in case this Valgrind was configured with --enable-inner. And
- # also VALGRINDLIB, which was the old name for the variable, to
- # allow comparison against old Valgrind versions (eg. 2.4.X).
- printf(" %s:", $tool_abbrev);
- my $vgsetup = "VALGRINDLIB=$vgdir/.in_place "
- . "VALGRIND_LIB=$vgdir/.in_place "
- . "VALGRIND_LIB_INNER=$vgdir/.in_place ";
+ my $vgsetup = "";
my $vgcmd = "$vgdir/coregrind/valgrind "
. "--command-line-only=yes --tool=$tool -q "
. "--memcheck:leak-check=no "
. "--trace-children=yes "
. "$vgopts ";
+ # Do the tool run(s).
+ if (defined $outer_valgrind ) {
+ # in an outer-inner setup, only set VALGRIND_LIB_INNER
+ $vgsetup = "VALGRIND_LIB_INNER=$vgdir/.in_place ";
+ $vgcmd = "$outer_valgrind "
+ . "--tool=" . $outer_tool . " "
+ . "$run_outer_args "
+ . "--log-file=" . "$outer_tool.outer.log.$vgdirname.$tool_abbrev.$name.%p "
+ . $vgcmd;
+ } else {
+ # Set both VALGRIND_LIB and VALGRIND_LIB_INNER
+ # in case this Valgrind was configured with --enable-inner. And
+ # also VALGRINDLIB, which was the old name for the variable, to
+ # allow comparison against old Valgrind versions (eg. 2.4.X).
+ $vgsetup = "VALGRINDLIB=$vgdir/.in_place "
+ . "VALGRIND_LIB=$vgdir/.in_place "
+ . "VALGRIND_LIB_INNER=$vgdir/.in_place ";
+ }
my $cmd = "$vgsetup $timecmd $vgcmd $prog $args";
my $tTool = time_prog($cmd, $n_reps);
printf("%4.1fs (%4.1fx,", $tTool, $tTool/$tNative);
|