summaryrefslogtreecommitdiff
path: root/scripts
AgeCommit message (Collapse)Author
2018-09-14media-bench: Add mixed mode evaluationTvrtko Ursulin
Mixed mode (-m) enables evaluation of different workload sets against one or more load balancing strategies. Contrary to the default mode which runs all selected workloads serialy, mixed mode runs a second stage where they are all run in parallel. The performance difference between the two passes is then used for the scoring metric. First metric is the normalized aggregate throughput, and second is balancer "fairness" as approximated by throughput achieved in mixed mode, relative to the best individual balancer for each workload. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
2018-09-14media-bench: Write out trace files directly.Tvrtko Ursulin
Instead of relying on shell redirection. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
2018-09-14media-bench: Fix tracing of direct workloadsTvrtko Ursulin
Build argument list properly and check exit codes when executing sub-commands. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
2018-09-14media-bench: Protect against incorrect -b syntaxTvrtko Ursulin
-b is to pass the command argument directly to gem_wsim so must include another -b. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
2018-09-14media-bench: Update for engine=class:instance tracepointsTvrtko Ursulin
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
2018-09-14trace.pl: Use undocumented -o to perf record to allow teeTvrtko Ursulin
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
2018-09-14trace.pl: Fix frequency timelineTvrtko Ursulin
Frequency timeline needs to be finished with an entry spanning to the end of known time so that the last known frequency is displayed. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
2018-08-02trace.pl: Bring back timeline stackingTvrtko Ursulin
Bring back the button which expands/stacks overlapping timeline boxes. We default to no stacking, but sometimes expanding the view can be useful, especially with deep request pipelines. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: John Harrison <John.C.Harrison@Intel.com>
2018-08-02trace.pl: Fix request split modeTvrtko Ursulin
Request split mode had several bugs, both in the original version and also after the recent refactorings. One big one was that it wasn't considering different submit ports as a reason to split execution, and also that it was too time based instead of looking at relevant timelines. In this refactoring we address the former by using the engine timelines introduced in the previous patch. Secondary port submissions are moved to follow the preceding submission as a first step in the correction process. In the second step, we add context timelines and use then in a similar fashion to separate start and end time of coalesced requests. For each coalesced request we know its boundaries by looking at the engine timeline (via global seqnos), and we know the previous request it should only start after, by looking at the context timeline. v2: * Remove some dead code. * Fix !port0 shifting logic. v3: * Refactor for less list walking as with incomplete handling. v4: * Database of context timelines should not contain duplicates! (Converted from array into a hash.) v5: * Avoid over-accounting runnable time for a coalesced group by recording the time first request entered the GPU and ending the execute delay at that point for the whole group. v6: * Update for engine class:instance. 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>
2018-08-02trace.pl: Context save only applies to last request of a bunchTvrtko Ursulin
Skip accounting the context save time for anything but the last request of the coalesced bunch, and also skip drawing those boxes on the timeline. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: John Harrison <John.C.Harrison@Intel.com>
2018-07-19trace.pl: Basic preemption supportTvrtko Ursulin
Just forget about earlier request_in events. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: John Harrison <John.C.Harrison@Intel.com>
2018-07-19trace.pl: Fix incomplete request handlingTvrtko Ursulin
Incomplete requests (no notify, no context complete) have to be corrected by looking at the engine timeline, and not the sorted-by-start-time view as was previously used. Per-engine timelines are generated on demand and cached for later use. v2: Find end of current context on the engine timeline instead of just using the next request for adjusting the incomplete start time. v3: Improve scaling with large datasets by only walking each engine timeline once and some caching. (John Harrison) v4: * Fix logic fail from v3. * Refactor the code a bit to separate the stages better. * Do not account batches with unknown duration in avg stats. * Handle two user interrupts with the same seqno. * Handle user interrupt arriving after request_out. v5: * Update for class:instance. 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>
2018-07-19trace.pl: Improved key/coloursJohn Harrison
Improve the timeline legend to show actual context colours. v2: (Tvrtko Ursulin) * Commit msg. * Tweak layout for more compactness and more readability. v3: * Limit number of shown contexts in the legend. (John Harrison) v4: * Unbreak legend display with small context counts. (John Harrison) Signed-off-by: John Harrison <John.C.Harrison@Intel.com> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: John Harrison <John.C.Harrison@Intel.com> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: John Harrison <John.C.Harrison@Intel.com>
2018-07-19trace.pl: Improve context colouring for large context id'sTvrtko Ursulin
John reports that on a long runnning systems the huge disparity between kernel context and user context id's causes all interesting colours to be clustered too close together. Fix this by assigning colours to seen contexts instead of basing purely on context id's. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Suggested-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>
2018-07-19trace.pl: Improve readability of graphical timeline representationTvrtko Ursulin
We add stripes for different stages of request execution so it is easier to follow one context in the multi-colour mode. Vertical stripe pattern indicates pipeline "blockages" - requests waiting for dependencies before they are runnable. Diagonal stripes indicate runnable requests waiting for GPU time. Horizontal strips are requests executing on the GPU. Also use this new multi-coloured mode from media-bench.pl. v2: John Harrison: * Mention media-bench.pl in the commit. * Fix HTML for single colour mode. v3: * Rebase. * Apply stripes to legacy colouring as well. v4: John Harrison: * Use per context colours for ctxsave and incomplete boxes. * Clearer timeline legend. 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>
2018-07-19trace.pl: Improve time axis labelsTvrtko Ursulin
It is possible to customize the axis display so change it to display timestamps in seconds on the major axis (with six decimal spaces) and millisecond offsets on the minor axis. v2: * Give up on broken relative timestamps. v3: * Drop all date complications and just use micro seconds throughout. (John Harrison) Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Suggested-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: John Harrison <John.C.Harrison@Intel.com> Reviewed-by: John Harrison <John.C.Harrison@Intel.com>
2018-07-12trace.pl: Fix engine busy accounting in split modeTvrtko Ursulin
In split mode all requests have to be added up since they were previously re-arranged so there is no overlap. 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>
2018-07-12trace.pl: Put single context at single vertical slotTvrtko Ursulin
Turn off timeline stacking in favour of putting all the boxes belonging to a single context at the same vertical slot. Also remove the custom sorting function in favour of correctly assigning the subgroup id's and order which greatly speeds up the library operations. And finally remove the 'Toggle stacking' button which never worked. 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>
2018-07-12trace.pl: Fix HTML timestamp generationTvrtko Ursulin
Now that we scale timestamps to get better timeline granularity, the hacky hand rolled micro-second time to HTML date conversion does no longer cut it. Use perl built-in gmtime to handle things properly. v2: Do not bother with the epoch since timeline times are relative to unknown system boot time. (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>
2018-07-12trace.pl: Fix no context colouring modeTvrtko Ursulin
Commit 87d2affc380da96ba66c258c5337c363fe8651ef ("trace.pl: Add support for colouring context execution"), due some dodgy attempts at patch splitting broke the legacy colouring mode. Fix it by passing in the request stage into the helper so all stages can be correctly coloured in both modes. 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>
2018-06-06scripts/trace.pl: Support class:instance engine tracepointsTvrtko Ursulin
New way of describing engines needs the tool to be adapted to understand it. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
2018-06-05trace.pl: Remove context squashing optionTvrtko Ursulin
Timeline id allocation order is not tied with engine ids any more. Remove the option which assumed that was the case in attempt to provide more readable timeline. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: John Harrison <John.C.Harrison@Intel.com>
2018-06-05trace.pl: Add support for colouring context executionTvrtko Ursulin
Add the command line switch which uses different colours for different context execution boxes. v2: * Use HSL to simplify color generation. (Lionel) * Colour other boxes in the same colour but different shade so it is easier to follow the timeline. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: John Harrison <John.C.Harrison@intel.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> # v1 Reviewed-by: John Harrison <John.C.Harrison@Intel.com>
2018-04-19trace.pl: Move min/max timestamp lookup to last loopTvrtko Ursulin
It makes sense to fetch the min and max timestamp only after the last sort of the array. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: John Harrison <John.C.Harrison@intel.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
2018-04-19trace.pl: Move sortQueue near its userTvrtko Ursulin
Just to clear up some space for incoming code refactoring. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: John Harrison <John.C.Harrison@intel.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
2018-04-18scripts/trace.pl: Simplify 'end' & 'notify' generationJohn Harrison
Delay the auto-generation of end/notify values until the point where everything is known. As opposed to potentially generating them multiple times with differing values (in the case of 'incomplete' entries). v2: More complete description. [Tvrtko] Signed-off-by: John Harrison <John.C.Harrison@intel.com> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
2018-04-18scripts/trace.pl: Calculate stats only after all mungingJohn Harrison
There are various statistics being calculated multiple times in multiple places while the log file is being read in. Some of these are then re-calculated when the database is munged to correct various issues with the logs. This patch consolidates the calculations into a separate pass after all the reading and munging has been done. Note that this actually produces a different final output as the 'execute-delay' values were not previously being re-calculated after all the fixups. Thus were based on an incorrect calculation. v2: Reduce scope of some local variables [Tvrtko] Signed-off-by: John Harrison <John.C.Harrison@intel.com> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
2018-04-18scripts/trace.pl: Sort orderJohn Harrison
Add an extra level to the databse key sort so that the ordering is deterministic. If the time stamp matches, it now compares the key itself as well (context/seqno). This makes it much easier to determine if a change has actually broken anything. Previously back to back runs with no changes could still produce different output, especially when adding extra debug output during the calculations. As the comparison test is now more than a single equation, moved it out into a separate sort function. v2: Re-work sort func for readability/performance [Tvrtko] Signed-off-by: John Harrison <John.C.Harrison@intel.com> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
2018-04-18scripts/trace.pl: More hash key optimisationsJohn Harrison
Cache the key count value rather than querying the hash every time. Also assert that the database does not magically change size after the fixups. v2: Rename variable according to style guide [Tvrtko] v3: Reverted accidental style change and added a blank line. [Tvrtko] Signed-off-by: John Harrison <John.C.Harrison@intel.com> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
2018-04-18trace.pl: Catch-up with tracepoint renamesTvrtko Ursulin
i915 renamed the request related tracepoints so catch up with that. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> # irc
2018-04-17scripts: Use https URL to download piglitSouza, Jose
This makes life easier for users behind network proxies. A simple 'export https_proxy=<proxy url>' will make this works, today user needs to do a more complicated setup in ssh/git with proxy information. Signed-off-by: José Roberto de Souza <jose.souza@intel.com> Reviewed-by: Petri Latvala <petri.latvala@intel.com>
2018-03-21run-tests.sh: use meson build by defaultLucas De Marchi
This makes scripts/run-tests.sh to look into a build dir by default, looking for the test lists. With this we can run the script after building i-g-t with meson without having to resort to the environment variable. Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Reviewed-by: Petri Latvala <petri.latvala@intel.com>
2018-03-21run-tests.sh: allow relative IGT_TEST_ROOT and IGT_CONFIG_PATHLucas De Marchi
When piglit runs it chdir() to its own directory, so passing a relative path doesn't work. E.g.: Fatal Error: IGT directory does not exist. Missing: build/tests Make sure path is absolute throughout the script. Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Reviewed-by: Petri Latvala <petri.latvala@intel.com>
2018-03-21run-tests.sh: allow to run without sudoLucas De Marchi
If the script is already running as root, it doens't need to be executed through sudo. This also moves the calls to exec piglit to a common function. Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Reviewed-by: Petri Latvala <petri.latvala@intel.com>
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>