Google Summer of Code 2008 officially ended on August 18th. Since that deadline, I have been working to solve a few non-functional problems I discovered during testing stage.
- By week 11, Skoll Client was collecting runtime information for each of the MySQL tests. During the development stage, I only tested this feature with a few MySQL tests. However, during testing stage I discovered this feature would take way too much time and resources for majority of the users. To completely test one configuration of MySQL, it took Skoll Client over 10 hours because MySQL server must be restarted after each test. Also, the runtime information collected was over 3 GB (zipped!). If the user is only interested in the coverage of the MySQL test suite, the per-test runtime information is a major overkill. The solution was to have two runtime information collection flags in the Skoll Client, —gcov and —detailed_gcov, to collect runtime information for all tests and runtime information per test. I doubt any user besides me would want to use the —detailed_gcov option.
- Generating runtime information reports from the database has always been slow due to the large amount of data collected for MySQL. Now that the database structure and the SQL queries is more concrete, I can finally spend some time optimize for performance. With a few tweaks to the SQL and a few added indices, I was able to decrease the runtime of some queries from over 2 minutes down to 0.04 seconds. I am pretty new to optimizing database performance, learning about the ?explain? command really helped me understand what was going on with a query. However, even with this huge performance improvement, certain types of reports such as ?per source line? is still too slow for data collected for multiple configurations. The visualization techniques I am using is not mature enough to handle large software system like MySQL just yet.
My plans for this project after Summer of Code is as follows:
- Skoll Client is feature complete, I have no plans to add new features in the near future. Of course, bug fixes and patches will be added.
- The visualization techniques I worked on look promising, but using them on MySQL right now is costly in both time and computing resources. I will continue to research ways to visualize multi-configuration runtime data, but on smaller software systems.
- For future updates on the Skoll Project, visit http://www.cs.umd.edu/projects/skoll/contribute/mysql.html.