>
>
>-----Original Message-----
>From: Chris Wilson [mailto:[email protected]] 
>Sent: Tuesday, November 3, 2015 4:40 PM
>To: Morton, Derek J
>Cc: [email protected]; Wood, Thomas; Gore, Tim
>Subject: Re: [PATCH i-g-t] tests/gem_exec_nop: Improved test run time
>
>On Tue, Nov 03, 2015 at 04:29:45PM +0000, Derek Morton wrote:
>> Reduced the Sleep period to 200mS and reduced the repetition count to 
>> 7 to decrease the test run time significantly.
>> 
>> Also fixed a non ascii character that messed up the results table formatting.
>
>Pardon? Are you working around someone else's bug?

> 
>> Signed-off-by: Derek Morton <[email protected]>
>> ---
>>  tests/gem_exec_nop.c | 6 +++---
>>  1 file changed, 3 insertions(+), 3 deletions(-)
>> 
>> diff --git a/tests/gem_exec_nop.c b/tests/gem_exec_nop.c index 
>> a287d08..5028145 100644
>> --- a/tests/gem_exec_nop.c
>> +++ b/tests/gem_exec_nop.c
>> @@ -133,7 +133,7 @@ static void loop(int fd, uint32_t handle, unsigned 
>> ring_id, const char *ring_nam
>>      gem_sync(fd, handle);
>>  
>>      for (count = 1; count <= SLOW_QUICK(1<<17, 1<<4); count <<= 1) {
>> -            const int reps = 13;
>> +            const int reps = 7;
>>              igt_stats_t stats;
>>              int n;
>>  
>> @@ -142,7 +142,7 @@ static void loop(int fd, uint32_t handle, unsigned 
>> ring_id, const char *ring_nam
>>              for (n = 0; n < reps; n++) {
>>                      struct timespec start, end;
>>                      int loops = count;
>> -                    sleep(1); /* wait for the hw to go back to sleep */
>> +                    usleep(200000); /* wait 200mS for the hw to go back to 
>> sleep */
>>                      clock_gettime(CLOCK_MONOTONIC, &start);
>>                      while (loops--)
>>                              do_ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, 
>> &execbuf); @@ -151,7 
>> +151,7 @@ static void loop(int fd, uint32_t handle, unsigned ring_id, const 
>> char *ring_nam
>>                      igt_stats_push(&stats, elapsed(&start, &end, count));
>>              }
>>  
>> -            igt_info("Time to exec x %d:            %7.3fµs (ring=%s)\n",
>> +            igt_info("Time to exec x %d:            %7.3fuS (ring=%s)\n",
>
>Did SI change the standard unit of measurement for time?

Before my patch the test output looks like:
Starting subtest: render
RPS frequency range [200, 600]
Time to exec x 1:               535.017Time to exec x 2:                
401.132Time to exec x 4:                291.106Time to exec x 8:                
229.292Time to exec x 16:               219.579Time to exec x 32:               
186.793Time to exec x 64:               185.509Time to exec x 128:              
186.183Time to exec x 256:              166.506Time to exec x 512:              
159.418Time to exec x 1024:             142.648Time to exec x 2048:             
116.864Time to exec x 4096:              91.829Time to exec x 8192:             
 75.913Time to exec x 16384:             70.119Time to exec x 32768:            
 64.604Time to exec x 65536:             64.213Time to exec x 131072:           
 61.843Subtest render: SUCCESS (457.063s)
Test requirement passed: min > 0
Setting min/max to 200MHz
Test requirement passed: sysfs_write("gt_min_freq_mhz", min) == 0 && 
sysfs_write("gt_max_freq_mhz", min) == 0
Test requirement passed: max > 0
Setting min/max to 600MHz
Test requirement passed: sysfs_write("gt_max_freq_mhz", max) == 0 && 
sysfs_write("gt_min_freq_mhz", max) == 0


With my patch it looks like:
Starting subtest: render
RPS frequency range [200, 600]
Time to exec x 1:               693.088uS (ring=render)
Time to exec x 2:               435.635uS (ring=render)
Time to exec x 4:               333.473uS (ring=render)
Time to exec x 8:               286.832uS (ring=render)
Time to exec x 16:              168.929uS (ring=render)
Time to exec x 32:              169.966uS (ring=render)
Time to exec x 64:              202.545uS (ring=render)
Time to exec x 128:             198.233uS (ring=render)
Time to exec x 256:             165.126uS (ring=render)
Time to exec x 512:             155.830uS (ring=render)
Time to exec x 1024:            124.994uS (ring=render)
Time to exec x 2048:             96.887uS (ring=render)
Time to exec x 4096:             85.416uS (ring=render)
Time to exec x 8192:             74.398uS (ring=render)
Time to exec x 16384:            74.131uS (ring=render)
Time to exec x 32768:            63.949uS (ring=render)
Time to exec x 65536:            61.973uS (ring=render)
Time to exec x 131072:           61.645uS (ring=render)
Subtest render: SUCCESS (143.826s)
Test requirement passed: min > 0
Setting min/max to 200MHz
Test requirement passed: sysfs_write("gt_min_freq_mhz", min) == 0 && 
sysfs_write("gt_max_freq_mhz", min) == 0
Test requirement passed: max > 0
Setting min/max to 600MHz
Test requirement passed: sysfs_write("gt_max_freq_mhz", max) == 0 && 
sysfs_write("gt_min_freq_mhz", max) == 0

So the 'µ' character is causing problems.

I have done some more investigations and have found a change you made to 
igt_core.c in June to be the cause.
You added:
        if (isatty(STDOUT_FILENO))
                setlocale(LC_ALL, "");
to common_init()

I added some debug and the setlocale() on android is returning 'C' so is 
forcing standard ascii to be used. As 'µ' is not an ascii character it causes 
problems.

So I think if you want to continue allow setting a locale to a lowest common 
denominator (ascii) then all the text printed by tests also needs to conform to 
ascii and this change is valid.

//Derek

>-Chris
>
>--
>Chris Wilson, Intel Open Source Technology Centre
>
_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to