mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-08 02:03:56 -06:00
contrib/plugins: Add a plugin to generate basic block vectors
SimPoint is a widely used tool to find the ideal microarchitecture simulation points so Valgrind[2] and Pin[3] support generating basic block vectors for use with them. Let's add a corresponding plugin to QEMU too. Note that this plugin has a different goal with tests/plugin/bb.c. This plugin creates a vector for each constant interval instead of counting the execution of basic blocks for the entire run and able to describe the change of execution behavior. Its output is also syntactically simple and better suited for parsing, while the output of tests/plugin/bb.c is more human-readable. [1] https://cseweb.ucsd.edu/~calder/simpoint/ [2] https://valgrind.org/docs/manual/bbv-manual.html [3] https://www.intel.com/content/www/us/en/developer/articles/tool/pin-a-dynamic-binary-instrumentation-tool.html Signed-off-by: Yotaro Nada <yotaro.nada@gmail.com> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Message-Id: <20240816-bb-v3-1-b9aa4a5c75c5@daynix.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20240916085400.1046925-16-alex.bennee@linaro.org>
This commit is contained in:
parent
bc02be4508
commit
0d279bec0f
3 changed files with 189 additions and 0 deletions
|
@ -268,6 +268,36 @@ Behaviour can be tweaked with the following arguments:
|
|||
* - idle=true|false
|
||||
- Dump the current execution stats whenever the guest vCPU idles
|
||||
|
||||
Basic Block Vectors
|
||||
...................
|
||||
|
||||
``contrib/plugins/bbv.c``
|
||||
|
||||
The bbv plugin allows you to generate basic block vectors for use with the
|
||||
`SimPoint <https://cseweb.ucsd.edu/~calder/simpoint/>`__ analysis tool.
|
||||
|
||||
.. list-table:: Basic block vectors arguments
|
||||
:widths: 20 80
|
||||
:header-rows: 1
|
||||
|
||||
* - Option
|
||||
- Description
|
||||
* - interval=N
|
||||
- The interval to generate a basic block vector specified by the number of
|
||||
instructions (Default: N = 100000000)
|
||||
* - outfile=PATH
|
||||
- The path to output files.
|
||||
It will be suffixed with ``.N.bb`` where ``N`` is a vCPU index.
|
||||
|
||||
Example::
|
||||
|
||||
$ qemu-aarch64 \
|
||||
-plugin contrib/plugins/libbbv.so,interval=100,outfile=sha1 \
|
||||
tests/tcg/aarch64-linux-user/sha1
|
||||
SHA1=15dd99a1991e0b3826fede3deffc1feba42278e6
|
||||
$ du sha1.0.bb
|
||||
23128 sha1.0.bb
|
||||
|
||||
Instruction
|
||||
...........
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue