Hugin Speed Test Tab

From PanoTools.org Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Hugin Speed Test Tab

Proposal

[For complete proposal please visit: http://www.google-melange.com and follow 'Hugin speed test tab']

Generally performance is the key issue for any panorama stitcher and manipulation software like Hugin[1]. Also these days end user computational platforms are shifting towards tablet PCs, pads and smart phones etc. With advancement of these technologies, today, we have very diverse hardware and software specifications. In order to chose right hardware for Hugin one needs to know the performance per different hardware (with different operating systems installed).

In order to know the performance of Hugin, one possible solution (as quoted on launchpad.net[2]) would be to create a system that will offer “Speed Test” tab on Hugin’s GUI. This system should automatically download the batch set of images and .pto[3] files from server and should do automated stitching tests. On successfully completion of these local tests it should upload the test results with determined hardware platform, Operating System, running process finger-printing [4], Hugin client identification (including MAC address, public IP, time-stamp etc). Then server should do analysis in detail of all the uploaded data by Hugin clients. Finally consolidated performance reports will be generated using Web-UI which will help entire community or users to choose right hardware.

Proof Of Concept (POC) system diagram

A. Hugin Speed Test - Brief class diagram

HuginSpeedTestClass.png

Description

Per shown in class diagram[5], proposed system is divided into two parts namely client side Hugin speed tester and server side Hugin test results (Web). At client side, Hugin will execute tasks given by server. This task need not be same for all clients. Tasks fetched might be small, medium or large one. For example machine which has limited computation resource should not be asked to stitch batch of 20 high resolution images with size more than 20 MB per image etc. Client will be doing self screening test before fetching either small, medium or large task. Vice-versa will be applicable for clients with high computation resource. Upon completion of task(s) clients will send results to server in XML event response if there is any Internet connectivity.

On server side, multi-threaded server will parse this response and will log into database per client identification. These row data will be processed by server side analytic engine to generate reports which will help community or users to choose best hardware. These reports might help for benchmarking Hugin on different platform.

B. Hugin Speed Test - Brief sequence diagram

HuginSpeedTestSequence.png

Description

Sequence diagram[6] shows clear flow of activities across proposed system.

Plan Of Execution

Date Plan (Life is good!) Backup Plan (Life is bad!)
April 25 - May 23
  • Set development environment (Already done!)
  • Read Wiki
  • Get to know community and mentors and keep tweaking proposed system specifications
  • Play with Hugin code-base mostly relevent to proposed task
  • Get ready with code snippets for later use
  • Read wiki
  • Get to know primary mentor
May 23 - June 20
  • Start building Hugin client core
  • Implement proposed client operations and try to get a initial test of proposed system
  • Build XML core engine at server side
  • Take mentors review
  • At least complete Hugin client core for proposed system and only perform nominal proposed operations
June 20 - July 11
  • Extend batch tasks screening test cases,
  • Extend server side XML core to send valid XML responses upon upload of test results,
  • Take mentors review and prepare midterm milestone.
  • On server side try to complete XML parsing.
July 11 - August 1
  • Focus on server side to see how does server perform when multiple Hugin clients uploads the test results,
  • Start working on reporting,
  • Go for single threaded XML server
August 1 - August 15
  • Build Client and server side UI,
  • Update Hugin’s help file for new tab,
  • Write test cases and update wiki
  • Do server side reports tweaks if any.
  • Complete client side UI.
August 15+
  • Start creating patches and submit to Google.
  • Start looking for a gift to send to mentor :P
  • Try to complete most of proposed task though GSoC 11 is finished.

Programming languages and skills needed

C, C++, PHP, XML (library for XML parser), Bash or Shell scripting, HTML, Ajax (basic), Mysql (library api in C).

Some interesting test results

Test task

To stitch

Chess-1.jpg

and

Chess-2.jpg

using two different machines (Intel Core2 Duo Vs Atom ) and capture some performance points

Test result

Resultant:

Chess-1-2.jpg

Overall performance[5]

CPU usage

CPU-usage.jpg

Memory usage

Memory-usage.jpg

Disk-usage

Disk-read-usage.jpg
Disk-write-usage.jpg

Test summary

These results shows that hardware configuration plays a very vital role on Hugin's performance. Fine grained performance measurement per function should help Hugin to identify the expensiveness of various operations.

References