[Webkit-unassigned] [Bug 151208] New: Calculate the graphics benchmark test gain adaptively

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Nov 12 11:15:15 PST 2015


https://bugs.webkit.org/show_bug.cgi?id=151208

            Bug ID: 151208
           Summary: Calculate the graphics benchmark test gain adaptively
    Classification: Unclassified
           Product: WebKit
           Version: WebKit Nightly Build
          Hardware: Unspecified
                OS: Unspecified
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: Animations
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: sabouhallawa at apple.com
                CC: dino at apple.com

Tuning the PID controller of the graphics benchmark manually is time consuming and it does not necessarily give the perfect/fair results. We need to calculate the gain adaptively and get rid of the gain and limits parameters we have to choose manually for every test. Many ways were suggested by automatic control books and papers but we chose to use the classic Ziegler–Nichols method.

The basic idea is start with Ku = 0, eliminate the I and D terms of the PID and return the P term only; P = Ku * e. Then increment the Kp gradually till the set point is reached. We stop incrementing Ku and measure the oscillation period Tu. After measuring the Ku and Tu, we calculate the controller parameters according to Ziegler–Nichols method for control type = some overshot; see https://en.wikipedia.org/wiki/Ziegler–Nichols_method.

I could not find clear description on how Ku is initialized and by how much it can be incremented. This is very cortical to the graphics benchmark since some tests saturate with small number of items, e.g. 50 items, while others saturate with large number of items, e.g. more than 5000 items. So incrementing by small values will require long time to reach the set-point for tests with large number of items. And incrementing by large values will cause the test to be unstable.

The ideal solution is
1. Start with only one item in the test.
2. Increment Ku very slowly at the beginning.
3. Increment Ku significantly but moderately if the test is not responsive to the small tuning values.

-- For the first point we can choose Ku = -1 / e which will return P = Ku * e = -1. This will add one item to the test.
-- For the second point we calculate an ultimate distance from y0 after time t such that it moves very slowly at the beginning but very fast later on. We can use a cubic formula for the ultimate distance such that it reaches the set point after 1000ms. Then we can use the ratio between the ultimate distance and the current distance to tell us how much the system is responsive. The ratio will be very small at the beginning with all tests but will be very high with tests which require many items to saturate.
-- For the third point we can use the natural logarithm for the ratio of the ultimate distance to the current distance. The natural logarithm should be good but moderate value for large ratios.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-unassigned/attachments/20151112/c2fe0483/attachment-0001.html>


More information about the webkit-unassigned mailing list