summaryrefslogtreecommitdiff
path: root/scripts
AgeCommit message (Collapse)Author
2018-01-11run-tests.sh: Allow users to override IGT_TEST_ROOTPetri Latvala
Signed-off-by: Petri Latvala <petri.latvala@intel.com> Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com> Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
2018-01-08scripts/trace.pl: Optimize event parsing and processingTvrtko Ursulin
A couple of small optimizations which altogether bring around 30% improvement in my testing. 1. Do less string processing on tracepoints names and push more of the check into the if-ladder. 2. Pull out common db key and ctx processing and cache common values in local vars. 3. Key value pair parsing is faster with a regexp. 4. Avoid sorting the db hash multiple times if possible. v2: * Use faster key-value splitting method. (John Harrison) v3: * Fix floating-point to int time conversion. v4: * Fix refactoring and logic fails. (John Harrison) Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: John Harrison <John.C.Harrison@intel.com> Reviewed-by: John Harrison <John.C.Harrison@Intel.com>
2017-12-21scripts/trace.pl: Fix context id recyclingTvrtko Ursulin
Last refactoring introduced a copy and paste error, fix it. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reported-by: John Harrison <John.C.Harrison@intel.com> Cc: John Harrison <John.C.Harrison@intel.com> Reviewed-by: John Harrison <John.C.Harrison@Intel.com>
2017-12-19scripts/trace.pl: Fix ring ignoreTvrtko Ursulin
Breakage from previous refactoring. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reported-by: John Harrison <John.C.Harrison@intel.com> Cc: John Harrison <John.C.Harrison@intel.com>
2017-12-19scripts/trace.pl: Remove some old codeTvrtko Ursulin
Remove some inactive code which was only uised to support the old execlists implementation. It is hidden behind a toggle which is not user accesible anyway. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: John Harrison <John.C.Harrison@intel.com>
2017-12-18scripts/trace.pl: Auto-detect tracepoint field orderTvrtko Ursulin
Instead of hard-coding the order of key-value pairs into regular expressions, auto-detect them as we go. At the same time re-factor the code so it is smaller and even slightly faster (10-15% by a quick measurement). Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Cc: John Harrison <John.C.Harrison@intel.com> Tested-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
2017-11-22media-bench.pl: Add busy balancers to the listTvrtko Ursulin
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2017-11-06run-tests.sh: Use piglit names when listing available testsPetri Latvala
List the available tests with piglit instead of by hand. This solves naming inconsistencies (piglit throwing caps away) as seen by cibuglog, and makes the listing code simpler. The format of the listing changes from test-binary/subtest-name to igt@test-binary@subtest-name but so far nothing has been able to directly consume run-tests.sh -l output. The piglit format is directly consumable by piglit --test-list, and thus by run-tests.sh -T. Signed-off-by: Petri Latvala <petri.latvala@intel.com> Cc: Tomi Sarvela <tomi.p.sarvela@intel.com> Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com> Acked-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com> Acked-by: Tomi Sarvela <tomi.p.sarvela@intel.com> Acked-by: Martin Peres <martin.peres@linux.intel.com>
2017-09-04scripts/run-tests.sh: Use piglit's --ignore-missingArkadiusz Hiler
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>
2017-06-09media-bench.pl: Add automatic per-client target modeTvrtko Ursulin
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>
2017-06-09trace.pl: Handle multi-day uptimeTvrtko Ursulin
Handle multi-day uptime when parsing tracepoint timestamps. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
2017-06-08gem_wsim: Asymmetrical 1-to-n workloadsTvrtko Ursulin
Simulates a single decoder feeding multiple processing and encoding pipelines. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
2017-06-08media-bench.pl: Add GT2 modeTvrtko Ursulin
So gem_wsim can be driven in it. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
2017-06-08media-bench.pl: Verbose optionTvrtko Ursulin
For time being just displays the saturation finding steps. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
2017-06-08media-bench.pl: Include gem_wsim -d in the evaluationTvrtko Ursulin
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
2017-06-08media-bench.pl: Add context balancer to the listTvrtko Ursulin
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
2017-05-24media-bench.pl: More tweak to saturation point findingTvrtko Ursulin
Plus a help text correction and calibration speed-up in -R and -T modes. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
2017-05-23media-bench.pl: Support GPU aggregate idle statsTvrtko Ursulin
Record it within this script since trace.pl added support. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
2017-05-23media-bench.pl: Add option to specify workloads directlyTvrtko Ursulin
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>
2017-05-23trace.pl: Option to draw the aggreate GPU busy timelineTvrtko Ursulin
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
2017-05-23trace.pl: Add aggregate GPU idle/busy statTvrtko Ursulin
Merge and flatten all the engine timelines to produce an aggregate stat. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
2017-05-23media-bench.pl: Add global balancing modeTvrtko Ursulin
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>
2017-05-17media-bench: Print score range when evaluation workloadsTvrtko Ursulin
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>
2017-05-17media-bench: Simplify combined scoringTvrtko Ursulin
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>
2017-05-17media-bench: Store the trace file for laterTvrtko Ursulin
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>
2017-05-17media-bench: Flag workloads which failed to balanceTvrtko Ursulin
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>
2017-05-17media-bench: Fix evaluating with no balancingTvrtko Ursulin
Code just didn't expect '<none>' as the selected balancer. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
2017-05-17media-bench: Fix scoreboard range statTvrtko Ursulin
It wasn't normalized as the results are. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
2017-05-16igt/media-bench.pl: Media workload analyzerTvrtko Ursulin
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>
2017-05-11igt/trace.pl: Collect perf data in quiet modeTvrtko Ursulin
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>
2017-04-25igt/scripts: trace.pl to parse the i915 tracepointsTvrtko Ursulin
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>
2017-03-13scripts/run-tests.sh: Support testlist filesTomi Sarvela
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>
2017-02-01scripts: Set IGT_CONFIG_PATH in run-tests.shLyude
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>
2016-04-22scripts: Add a simple trybot driverChris Wilson
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>
2016-04-19scripts: Adapt run-tests.sh to the piglit changesFeceoru, Gabriel
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>
2016-02-08list-workarounds: Fix python 2 print statementDamien Lespiau
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>
2016-02-05list-workarounds: Extend the script to MesaKibey, Sameer
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>
2015-12-02docs: remove references to tests/NAMING-CONVENTIONThomas Wood
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>
2015-12-02scripts: remove display_debug.sh as obsoleteJani Nikula
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>
2015-09-17scripts: add quick-testlist.pyThomas Wood
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>
2015-05-28scripts/run-tests.sh: add option to not retry incomplete tests on resumeMike Mason
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>
2015-05-19list-workarounds: Print the line where the parsing error occuredDamien Lespiau
Useful to understand the warnings the scripts prints. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-05-12scripts/run-tests.sh: use single combined test listMike Mason
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>
2015-04-08list-workarounds/bxt: Add Broxton to the list of valid platormsDamien Lespiau
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-09-30list-workarounds/skl: Add Skylake to the list of valid platormsDamien Lespiau
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-08-29scripts: Add capability to resume interrupted run-tests.sh sessionMike Mason
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>
2014-08-19scripts: Allow multiple -t and -x regular expressions for run-tests.shMike Mason
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>
2014-07-11scripts: add a script to help run tests with PiglitThomas Wood
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>
2014-06-11list-workarounds/chv: Add Cherryview to the list of valid platormsDamien Lespiau
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2013-11-06list-workarounds/bdw: Add Broadwell to the list of valid platormsDamien Lespiau
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>