WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
93958
Pageload tests should measure memory usage
https://bugs.webkit.org/show_bug.cgi?id=93958
Summary
Pageload tests should measure memory usage
Zoltan Horvath
Reported
2012-08-14 04:49:42 PDT
This topic is probably related to how to measure the memory consumption of the page replay tests also. We either need to modify DRT to evaulate PerfTestRunner.getAndPrintMemoryStatistics() from runner.js after the page is loaded or find another solution for this. It would be nice to use the same sources (FastMalloc, JSHeap) what we used to produce memory results for the simple perftests.
Attachments
approach #1 part 1
(
deleted
)
2012-08-28 06:53 PDT
,
Zoltan Horvath
no flags
Details
Formatted Diff
Diff
approach #1 part 2 without move of the tests
(5.77 KB, patch)
2012-08-28 06:54 PDT
,
Zoltan Horvath
no flags
Details
Formatted Diff
Diff
proposed patch
(12.01 KB, patch)
2012-10-08 18:10 PDT
,
Zoltan Horvath
rniwa
: review-
Details
Formatted Diff
Diff
proposed patch
(12.58 KB, patch)
2012-10-09 11:34 PDT
,
Zoltan Horvath
rniwa
: review-
Details
Formatted Diff
Diff
proposed patch
(15.79 KB, patch)
2012-10-09 17:42 PDT
,
Zoltan Horvath
rniwa
: review+
Details
Formatted Diff
Diff
js based pageloadtest
(441.10 KB, patch)
2012-10-19 10:56 PDT
,
Zoltan Horvath
no flags
Details
Formatted Diff
Diff
Show Obsolete
(4)
View All
Add attachment
proposed patch, testcase, etc.
Zoltan Horvath
Comment 1
2012-08-28 06:53:37 PDT
Created
attachment 160965
[details]
approach #1 part 1 I embed the svg pageloadtests into htmls and use that html to get the memory results. I can not upload at once, since the patch is too big, because I moved PerformanceTests/PageLoad/svg/files to PerformanceTests/PageLoad/svg/resources.
Zoltan Horvath
Comment 2
2012-08-28 06:54:46 PDT
Created
attachment 160966
[details]
approach #1 part 2 without move of the tests This is the second part of the patch that doesn't contain the move files because of their size.
WebKit Review Bot
Comment 3
2012-08-28 06:56:26 PDT
Attachment 160965
[details]
did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Tools/ChangeLog', u'Tools/Scripts/webkitpy..." exit_code: 1 Tools/Scripts/webkitpy/performance_tests/perftest.py:256: whitespace before ',' [pep8/E203] [5] Total errors found: 1 in 2 files If any of these errors are false positives, please file a bug against check-webkit-style.
Ryosuke Niwa
Comment 4
2012-08-28 07:02:04 PDT
(In reply to
comment #0
)
> This topic is probably related to how to measure the memory consumption of the page replay tests also. > We either need to modify DRT to evaulate PerfTestRunner.getAndPrintMemoryStatistics() from runner.js after the page is loaded or find another solution for this. It would be nice to use the same sources (FastMalloc, JSHeap) what we used to produce memory results for the simple perftests.
Since we need to report runtime directly from DRT anyway (we currently measure runtime in python), we should just modify DRT/WTR to report values for JS Heap and Malloc as well as runtime in a special HTTP header like X-WebKitTestRunner-Malloc.
Zoltan Horvath
Comment 5
2012-09-03 07:29:40 PDT
(In reply to
comment #4
)
> Since we need to report runtime directly from DRT anyway (we currently measure runtime in python), we should just modify DRT/WTR to report values for JS Heap and Malloc as well as runtime in a special HTTP header like X-WebKitTestRunner-Malloc.
It's not clear to me how should we do this. Could you give me a pointer or an example?
Zoltan Horvath
Comment 6
2012-10-08 18:10:24 PDT
Created
attachment 167662
[details]
proposed patch We can use this perftest.py modifications for the C++ based performance measurements as well.
Ryosuke Niwa
Comment 7
2012-10-08 18:22:28 PDT
Comment on
attachment 167662
[details]
proposed patch View in context:
https://bugs.webkit.org/attachment.cgi?id=167662&action=review
We need Python tests for this.
> Tools/Scripts/webkitpy/performance_tests/perftest.py:241 > + results[self.test_name() + ' unit'] = 'ms'
!? This should be results[self.test_name()]['unit'] = 'ms' instead.
> Tools/Scripts/webkitpy/performance_tests/perftest.py:256 > + results.setdefault(name, []) > + results[name].append(result)
This isn't right. results[name] should be a dictionary, not a list.
Zoltan Horvath
Comment 8
2012-10-08 18:59:57 PDT
(In reply to
comment #7
)
> (From update of
attachment 167662
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=167662&action=review
> > We need Python tests for this. > > > Tools/Scripts/webkitpy/performance_tests/perftest.py:241 > > + results[self.test_name() + ' unit'] = 'ms' > > !? This should be results[self.test_name()]['unit'] = 'ms' instead. > > > Tools/Scripts/webkitpy/performance_tests/perftest.py:256 > > + results.setdefault(name, []) > > + results[name].append(result) > > This isn't right. results[name] should be a dictionary, not a list.
True, I fixed, it looks nicer now. I'm going to run the tests and write python tests for it and then upload it.
Zoltan Horvath
Comment 9
2012-10-09 11:34:42 PDT
Created
attachment 167802
[details]
proposed patch Now, all test run fine. I think we should add memory unit tests both for perftests and pageloadtests in a separate bug.
Ryosuke Niwa
Comment 10
2012-10-09 12:01:06 PDT
Comment on
attachment 167802
[details]
proposed patch View in context:
https://bugs.webkit.org/attachment.cgi?id=167802&action=review
Please add a test to
http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/performance_tests/perftest_unittest.py#L103
> Tools/Scripts/webkitpy/performance_tests/perftest.py:218 > + def calculate_statistics(self, input_list, unit):
I don't think input_list is a descriptive name. It just tells us the type of this argument. I'd rather call this argument "values" since that's the name we've been using.
> Tools/Scripts/webkitpy/performance_tests/perftest.py:219 > + sorted_input_list = sorted(input_list)
and this one sorted_values.
> Tools/Scripts/webkitpy/performance_tests/perftest.py:244 > + results = {} > + results.setdefault(self.test_name(), {}) > + results[self.test_name()]['unit'] = 'ms' > + results[self.test_name()]['results'] = []
Why don't we just do: results = {self.test_name(): {'unit': 'ms', 'results': []}} instead?
> Tools/Scripts/webkitpy/performance_tests/perftest.py:263 > + results.setdefault(name, {}) > + results[name]['results'] = []
You can do: results.setdefault(name, {'results': []}) instead.
> Tools/Scripts/webkitpy/performance_tests/perftest.py:270 > + for result_class in ordered_results_keys:
ordered_results_keys is unnecessary. results.keys() would do.
> Tools/Scripts/webkitpy/performance_tests/perftest.py:271 > + results[result_class] = self.calculate_statistics(results[result_class]['results'], results[result_class]['unit'])
It's not great to change the structure of results like this.
Zoltan Horvath
Comment 11
2012-10-09 17:42:11 PDT
Created
attachment 167881
[details]
proposed patch (In reply to
comment #10
)
> Please add a test to
http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/performance_tests/perftest_unittest.py#L103
Done.
> > Tools/Scripts/webkitpy/performance_tests/perftest.py:218 > > + def calculate_statistics(self, input_list, unit): > > I don't think input_list is a descriptive name. It just tells us the type of this argument. > I'd rather call this argument "values" since that's the name we've been using.
Done.
> > Tools/Scripts/webkitpy/performance_tests/perftest.py:219 > > + sorted_input_list = sorted(input_list) > > and this one sorted_values.
Done.
> > Tools/Scripts/webkitpy/performance_tests/perftest.py:244 > > + results = {} > > + results.setdefault(self.test_name(), {}) > > + results[self.test_name()]['unit'] = 'ms' > > + results[self.test_name()]['results'] = [] > > Why don't we just do: > results = {self.test_name(): {'unit': 'ms', 'results': []}} > instead?
Right. Done.
> > Tools/Scripts/webkitpy/performance_tests/perftest.py:263 > > + results.setdefault(name, {}) > > + results[name]['results'] = [] > > You can do: > results.setdefault(name, {'results': []}) > instead.
Done.
> > Tools/Scripts/webkitpy/performance_tests/perftest.py:270 > > + for result_class in ordered_results_keys: > > ordered_results_keys is unnecessary. results.keys() would do.
Done.
> > Tools/Scripts/webkitpy/performance_tests/perftest.py:271 > > + results[result_class] = self.calculate_statistics(results[result_class]['results'], results[result_class]['unit']) > > It's not great to change the structure of results like this.
I modified, done.
Ryosuke Niwa
Comment 12
2012-10-10 13:32:20 PDT
Comment on
attachment 167881
[details]
proposed patch View in context:
https://bugs.webkit.org/attachment.cgi?id=167881&action=review
> Tools/Scripts/webkitpy/performance_tests/perftest.py:4 > +# Copyright (C) 2012 Zoltan Horvath (
zoltan@webkit.org
), Adobe Systems Incorporated. > +# All rights reserved.
Can we fit this in one line?
> Tools/Scripts/webkitpy/performance_tests/perftest_unittest.py:159 > + + 'RESULT some-test: Malloc= 10.0 bytes\nmedian= 10 bytes, stdev= 0.0 bytes, min= 10 bytes, max= 10 bytes\n' > + + 'RESULT some-test: JSHeap= 5.0 bytes\nmedian= 5 bytes, stdev= 0.0 bytes, min= 5 bytes, max= 5 bytes\n')
Wrong indentation. + should be exactly 4 spaces to the right of self.assertEqual.
Zoltan Horvath
Comment 13
2012-10-10 14:14:01 PDT
Landed in:
http://trac.webkit.org/changeset/130956
Mark Hahnenberg
Comment 14
2012-10-17 10:25:19 PDT
Reopening due to
bug 99609
.
Zoltan Horvath
Comment 15
2012-10-19 10:56:06 PDT
Created
attachment 169649
[details]
js based pageloadtest
Zoltan Horvath
Comment 16
2012-10-29 11:04:15 PDT
We turned PageLoadtests into simple performancetests see:
bug #99899
Closing bug.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug