Age | Commit message (Collapse) | Author |
|
Recently we added a number of chamelium tests to the fast-feedback testlist.
Chemelium is build-optional - requires `./configure --enable-chamelium`.
To mitigate issue with piglit exiting abruptly due to the (possibly)
missing test binaries, this makes it behave more gracefuly, considering
those as simply "notrun".
Cc: Petri Latvala <petri.latvala@intel.com>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
|
It is useful to be able to specify wps target relative to single
client performance when evaluating multiple workloads.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Handle multi-day uptime when parsing tracepoint timestamps.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Simulates a single decoder feeding multiple processing and
encoding pipelines.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
So gem_wsim can be driven in it.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
For time being just displays the saturation finding steps.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Plus a help text correction and calibration speed-up in
-R and -T modes.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Record it within this script since trace.pl added support.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
New option (-w) allows direct pass-through to gem_wsim for cases
when heterogenous workloads, or even additional parameters to
gem_wsim need to be tested.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Merge and flatten all the engine timelines to produce an
aggregate stat.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
In addition:
* optimize saturation point finding
* fix wps target modes
* always use -R, it is pointless not to
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
When evaluating best balancers it is useful to be able to glance
over the range of results for a particular workload since that
determines the weighted scoring.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
I am failing to come up with a smart formula which would
have a little bit of an exponential component and take into
consideration both total thtoughput and single client
performance.
Simply adding the two scores together might work better
than any complications.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Makes sense to keep it around if a different type of analysis
needs to be done later.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Split out the flagging logic so to make it easier to read and so
that the complete failure to balance is declared a failure
instead of a warning.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Code just didn't expect '<none>' as the selected balancer.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
It wasn't normalized as the results are.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
The high level goal of this script is to programatically analyze
the simulated media workloads (gem_wsim) by finding an optimal
load balancing strategy, and also detecting any possible
shortcomings of the same.
When run without command line arguments script will run through
both of its phases.
In the first phase it will be running all the known balancers
against the all the known workloads, and for each combination
look for a point where aggregated system throughput cannot be
increased by running more parallel workload instances.
At that point each balancer gets a score proportional to the
throughput achieved, which is added to the running total for the
complete phase.
Several different score boards are kept - total throughput, per
client throughput and combined (total + per client). Weighted
scoreboards are also kept where scores are weighted based on the
total variance detected for a single workload. This means scores
for workloads which respond well to being balanced will be worth
more than of the ones which do not balance well in neither of
the configurations.
Based on the first phase a "best" balancing strategy will be
selected based on the combined weighted scoreboard.
Second phase will then proceed to profile all the selected
workloads with this balancer and look at potential problems with
GPU engines not being completely saturated.
If none of the active engine is saturated the workload will be
flagged, as it will if the only saturated engine is one of the
ones which can be balanced, but the other one in the same class
is under-utilized.
Flagged workloads then need to be analyzed which can be achieved
by looking at the html of the engine timelines which are
generated during this phase. (These files are all put in the
current working directory.)
It is quite possible that something flagged by the script as
suspect is completely fine and just a consequence of the
workload in question being fundementally unbalanced.
It is possible to skip directly to the second phase of the
evaluation by using the -b command line option. This option must
contain a string exactly as understood by gem_wsim's -b option.
For example '-b "-b rtavg -R"'.
Apart from being run with no arguments, script also supports a
selection of command line switches to enable fine tuning.
For example, also including the complete output from the script
in order to be more illustrative:
-8<---
+ scripts/media-bench.pl -n 642317 -r 2 -B rand,rtavg -W media_load_balance_hd12.wsim,media_load_balance_fhd26u7.wsim
Workloads:
media_load_balance_hd12.wsim
media_load_balance_fhd26u7.wsim
Balancers: rand,rtavg,
Target workload duration is 2s.
Calibration tolerance is 0.01.
Nop calibration is 642317.
Evaluating 'media_load_balance_hd12.wsim'... 2s is 990 workloads. (error=0.00750000000000006)
Finding saturation points for 'media_load_balance_hd12.wsim'...
rand balancer ('-b rand'): 6 clients (1412.576 wps, 235.429333333333 wps/client).
rand balancer ('-b rand -R'): 6 clients (1419.639 wps, 236.6065 wps/client).
rtavg balancer ('-b rtavg'): 5 clients (1430.143 wps, 286.0286 wps/client).
rtavg balancer ('-b rtavg -H'): 5 clients (1339.775 wps, 267.955 wps/client).
rtavg balancer ('-b rtavg -R'): 5 clients (1386.384 wps, 277.2768 wps/client).
rtavg balancer ('-b rtavg -R -H'): 6 clients (1365.943 wps, 227.657166666667 wps/client).
Best balancer is '-b rtavg'.
Evaluating 'media_load_balance_fhd26u7.wsim'... 2s is 52 workloads. (error=0.002)
Finding saturation points for 'media_load_balance_fhd26u7.wsim'...
rand balancer ('-b rand'): 3 clients (46.532 wps, 15.5106666666667 wps/client).
rand balancer ('-b rand -R'): 3 clients (46.242 wps, 15.414 wps/client).
rtavg balancer ('-b rtavg'): 6 clients (61.232 wps, 10.2053333333333 wps/client).
rtavg balancer ('-b rtavg -H'): 4 clients (57.608 wps, 14.402 wps/client).
rtavg balancer ('-b rtavg -R'): 6 clients (61.793 wps, 10.2988333333333 wps/client).
rtavg balancer ('-b rtavg -R -H'): 7 clients (60.697 wps, 8.671 wps/client).
Best balancer is '-b rtavg -R'.
Total wps rank:
===============
1: '-b rtavg' (1)
2: '-b rtavg -R' (0.989191465637926)
3: '-b rtavg -R -H' (0.973103630772601)
4: '-b rtavg -H' (0.938804458876241)
5: '-b rand -R' (0.874465740398305)
6: '-b rand' (0.874342391093453)
Total weighted wps rank:
========================
1: '-b rtavg -R' (1)
2: '-b rtavg' (0.998877134022041)
3: '-b rtavg -R -H' (0.982849160383224)
4: '-b rtavg -H' (0.938950446314292)
5: '-b rand' (0.80507369080098)
6: '-b rand -R' (0.80229656623594)
Per client wps rank:
====================
1: '-b rtavg -H' (1)
2: '-b rand' (0.977356849770376)
3: '-b rand -R' (0.976222085591368)
4: '-b rtavg' (0.888825068013012)
5: '-b rtavg -R' (0.875653417817828)
6: '-b rtavg -R -H' (0.726389466714194)
Per client weighted wps rank:
=============================
1: '-b rand' (1)
2: '-b rand -R' (0.996866139192282)
3: '-b rtavg -H' (0.986348733324348)
4: '-b rtavg' (0.811593544774355)
5: '-b rtavg -R' (0.805704548552663)
6: '-b rtavg -R -H' (0.671567075453688)
Combined wps rank:
==================
1: '-b rtavg' (1)
2: '-b rtavg -R' (0.989191465637926)
3: '-b rtavg -H' (0.972251783752137)
4: '-b rtavg -R -H' (0.949708930404222)
5: '-b rand' (0.914594701126905)
6: '-b rand -R' (0.914312395840401)
Combined weighted wps rank:
===========================
1: '-b rtavg' (1)
2: '-b rtavg -R' (0.995945739226824)
3: '-b rtavg -H' (0.984347862855008)
4: '-b rtavg -R -H' (0.956920992185625)
5: '-b rand' (0.899001713089319)
6: '-b rand -R' (0.896984246540919)
Balancer is '-b rtavg'.
Idleness tolerance is 2%.
Profiling 'media_load_balance_hd12.wsim'...
2s is 992 workloads. (error=0.00150000000000006)
Saturation at 6 clients (1434.207 workloads/s).
Pass [ 0: 0.57%, 2: 22.59%, 3: 23.30%, ]
Profiling 'media_load_balance_fhd26u7.wsim'...
2s is 52 workloads. (error=0.001)
Saturation at 6 clients (61.823 workloads/s).
WARN [ 0: 7.77%, 2: 0.66%, 3: 28.70%, ]
Problematic workloads were:
media_load_balance_fhd26u7.wsim -c 6 -r 52 [ 0: 7.77%, 2: 0.66%, 3: 28.70%, ]
-8<---
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
We are not interested in knowing the amount of perf data
captures so less noise is better.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Given a log file created via perf with some interesting trace
events enabled, this tool can generate the timeline graph of
requests getting queued, their dependencies resolved, sent to
the GPU for executing and finally completed.
This can be useful when analyzing certain classes of performance
issues. More help is available in the tool itself.
The tool will also calculate some overall per engine statistics,
like total time engine was idle and similar.
v2:
* Address missing git add.
* Make html output optional (--html switch) and by default
just output aggregated per engine stats to stdout.
v3:
* Added --trace option which invokes perf with the correct
options automatically.
* Added --avg-delay-stats which prints averages for things
like waiting on ready, waiting on GPU and context save
duration.
* Fix warnings when no waits on an engine.
* Correct help text.
v4:
* Add --squash-ctx-id to substract engine id from ctx id
when parsing to make it easier to identify which context
is which with new i915 ctx id allocation scheme.
* Reconstruct request_out events where they are missing.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Harri Syrja <harri.syrja@intel.com>
Cc: Krzysztof E Olinski <krzysztof.e.olinski@intel.com>
|
|
This patch passes igt scripts/run-tests.sh -T option to piglit runner
as --test-list.
Restrictions to the option usage come from the piglit side:
- only last --test-list is processed
- no test regex inclusions or exclusions are processed if --test-list
exists
Signed-off-by: Tomi Sarvela <tomi.p.sarvela@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
Since we run igt under sudo, the home directory changes to that of the
root account. This causes the chamelium tests to incorrectly search the
root's home directory for the .igtrc file instead of the current user's
home directory. So set IGT_CONFIG_PATH to default to $HOME/.igtrc.
Signed-off-by: Lyude <lyude@redhat.com>
|
|
Basic script that may prove useful to others to send a pile of patches
to intel-gfx-trybot@
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Piglit changed its behaviour to prevent overwriting the results
directory unless explicitly specified with -o
Added -o flag in run-tests.sh to keep user experience.
Signed-off-by: Gabriel Feceoru <gabriel.feceoru@intel.com>
Acked-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Marius Vlad <marius.c.vlad@intel.com>
|
|
That script is a python 3 script, so we can't use the python 2 print
statement, it's a function now.
I missed it in the review because reviewing a diff without additional
context gives you a partial story.
Cc: Sameer Kibey <sameer.kibey@intel.com>
Cc: Dylan Baker <baker.dylan.c@gmail.com>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Updated the list-workarounds script so that it
can parse Mesa directory if provided. Moved the
common code to a separate function to allow
reuse for both kernel and mesa.
The new command line is:
Usage: list-workarounds [options] path-to-kernel
-k path-to-kernel -m path-to-mesa
The legacy usage is retained to avoid breaking
backwards compatibility. New parameters -k and
-m are added for the new behavior.
Either kernel or mesa or both paths can be specified.
If path-to-mesa is invalid, error is reported.
Signed-off-by: Sameer Kibey <sameer.kibey@intel.com>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
Reviewed-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
The tests/NAMING-CONVENTION file has been removed and its contents is
now included in the API documentation.
Reported-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
|
|
The script uses the obsoleted and removed intel_reg_read tool. Rather
than mechanically fix this to use intel_reg, observe that the hardcoded
register offsets are platform specific. A quick glance suggests they are
for PCH split platforms with FDI, and as such useful only on a minority
of platforms. Remove the script as obsolete.
If the need for such a script arises, it should be based around using
'intel_reg dump' with display-only register spec files.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
|
|
Add a script to take a piglit results file and create a list of tests
that ran in under 60 seconds. This list can be used by the --test-list
option of piglit.
v2: exclude incomplete tests
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
|
|
This patch utilizes piglit's new --no-retry option. That option
prevents incomplete tests from being retried when resuming a
test run. This is necessary because retrying tests that cause
a crash or reboot prevents a test run from being resumed.
This patch also adds -s to the piglit command line. The -s option
forces test logs to be synced to disk after every test.
Without it, some logs can be lost if a test causes a crash
or reboot, making it impossible to resume the test run at the
correct point.
Signed-off-by: Mike Mason <michael.w.mason@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
|
|
Useful to understand the warnings the scripts prints.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
i-g-t now creates a single combined test list for tests with
and without subtests. This patch adapts run-tests.sh to that
change.
Signed-off-by: Mike Mason <michael.w.mason@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
|
|
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Piglit provides a 'resume' feature that can restart an interrupted
test run at the point where it stopped. This patch adds that
feature to run_tests.sh.
Signed-off-by: Mike Mason <michael.w.mason@intel.com>
[Thomas: remove additional new line from end of file]
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
|
|
Piglit allows multiple -t and -x regular expressions to be
given on the command line. This patch enables run-tests.sh to
support that as well.
Signed-off-by: Mike Mason <michael.w.mason@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
|
|
Add a script to facilitate running the tests with Piglit by providing
simplified options for listing, filtering and creating summaries of test
runs.
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
|
|
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
We are changing the cwd, so we just need the relative patch from the
root for the kernel git repo. This allows the script to work from
anywhere.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
The rest of the tool suite that uses python already uses python3.
The tool configure requires python >= 3 (which is confusing because of
the no backward compat problem).
The world is slowly moving to python3.
Converted with 2to3.
Reviewed-by: Damien Lespiau <damien.lespiau@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
|
|
Currently if we come across several sites that say that a specific
workaround is implemented for a platform, we just add the platform
several times to the list. eg.
WaFbcDisableDpfcClockGating: ivb, hsw, ivb, hsw
This patch prevent that by only adding the plaform if it's not already
there.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
We document the implemented workarounds with
workaround_name:platforms
with platforms being a comma separated list of 3-letters platform names.
This scripts gather those tags and output a summary of implemented work
arounds. Example usages:
$ ./scripts/list-workarounds ~/gfx/sources/linux-2.6/
WaApplyL3ControlAndL3ChickenMode: hsw, ivb, vlv
WaCatErrorRejectionIssue: hsw, ivb, vlv
WaDisable4x2SubspanOptimization: hsw, ivb
WaDisableBackToBackFlipFix: ivb, vlv
WaDisableDopClockGating: vlv
....
$ ./scripts/list-workarounds ~/gfx/sources/linux-2.6/ -p ivb
WaApplyL3ControlAndL3ChickenMode
WaCatErrorRejectionIssue
WaDisable4x2SubspanOptimization
WaDisableBackToBackFlipFix
WaDisableEarlyCull
...
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
|
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
|
|
Should it become installlable in the future, it will get compiled
at installation time by Automake. Because it is "source", they get
included in the tarball.
Acked-by: Ben Widawsky <ben@bwidawsk.net>
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|