summerofcode2012:locking

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
summerofcode2012:locking [2012/05/23 21:58] – GregMillersummerofcode2012:locking [2012/05/23 22:45] (current) – GregMiller
Line 3: Line 3:
 ===== Project description ===== ===== Project description =====
  
-(Two or three paragraphs about your project, the problem you are trying to solve, and any obstacles you may hit.)+The goal of this project is to provide userland versions of the LOCK_PROFILING and WITNESS kernel options. This will require the addition of new, instrumented libraries to the base system build. Modifications to pthread.h will be needed in order to collect file and line information for lock acquisition and release. 
 + 
 +One problematic area is the lack of lock names for the pthread locks. Default names will be automatically generated, and additional functions pthread_{mutex,rwlock,etc}attr_setname_np() and pthread_{mutex,rwlock,etc}attr_setname_np() will be added to allow for more user-friendly names to be selected. 
 + 
 +Profiling statistics will be available via an external XML file and a pair of new functions, pthread_getprofiledata_np() and pthread_resetprofiledata_np(). Lock order reversals will be logged to an external XML file as well.
  
 ===== Approach to solving the problem ===== ===== Approach to solving the problem =====
  
-(Details as to how you intend to approach the problem, if applicable.  May include ideas as to how to break the problem down into smaller parts, or notes on research you need to do before settling on your final approach to solving the problem)+The profiling and lock order verification will be implemented separately. 
 + 
 +Profiling will be done via an instrumented version of the pthread library (libthr_profile), while lock order verification will be done with a wrapper library (libwitness). The use of a wrapper library should make the witness library more portable and easier to maintain, while the use of an instrumented library allows the lock profiling code to collect statistics that can only be obtained in an intrusive fashion.
  
 ===== Deliverables ===== ===== Deliverables =====
  
-(List of features you plan to implement)+The project will provide: 
 +  * Lock profiling data recording and access via library API 
 +  * Lock order reversal recording and access via library API 
 +  * Logging of statistics to a file 
 +  * Data viewer
  
 ===== Milestones ===== ===== Milestones =====
Line 28: Line 38:
 ===== Test Plan ===== ===== Test Plan =====
  
-(List of steps you plan to use to test your work, as discussed with your mentor)+A test suite will be provided with a number of small cases designed to trigger the monitored scenarios and verify that the values returned by the library API functions are correct. These will be developed concurrently with the data recording functionality. 
 + 
 +The data logging will be tested by reading back the statistics file can comparing the results to those returned by the debugging APIs. 
 + 
 +The data viewer will probably be tested manually, as automation of the testing process would likely prove to be difficult to do properly.
  
 ===== The Code ===== ===== The Code =====
  
-(Link to your code, for example https://socsvn.freebsd.org/socsvn/soc2012/username/ or a Perforce depot path)+The code will be available in the Subversion repository at [[https://socsvn.freebsd.org/socsvn/soc2012/gmiller/]].
  
 ===== Useful links ===== ===== Useful links =====
  • summerofcode2012/locking.1337810322.txt.gz
  • Last modified: 2012/05/23 21:58
  • by GregMiller