This week, Professor Lu and I discussed why the script for tracking changes for specific condition variables didn't work out. I realized that Apache utilizes their own structures that contain condition variables as attributes and therefore what seemed to be the same condition variable (queue->not_full for example) is really a different variable depending on which queue is being referenced (queue is a parameter passed into a function and it is of a certain structure with the condition variable not_full as an attribute. Since almost all condition variables used in Apache are attributes of some structure, the script I ran which counted the amount of changes made to each condition variable yielded essentially useless results. It took a while of analysis to determine why no global condition variables were being initialized anywhere throughout the Apache trunk.
Now that we've determined this, I am planning to search for places where these structures are initialized and see if maybe any of these are global, which would at least give us a good ballpark estimate of how many different condition variables are used and how many are being affected by certain synchronization-related changes.
Despite this setback, I've been doing the following to try to get some data:
- tracking the different structures whose condition variable attributes are being referred to. This won't give us the data we had initially hoped for about the number of changes made to a condition variable's synchronization routines correlating to the number of overall synchronization routines involving that variable but it could be interesting and we'd hope for pretty similar results despite the variables not being global.
- writing a script that tracks initialization of the different structures containing condition variables as attributes. As I stated above, it'll give us some idea as to how many different variables are being used at any given time.
Now that we've determined this, I am planning to search for places where these structures are initialized and see if maybe any of these are global, which would at least give us a good ballpark estimate of how many different condition variables are used and how many are being affected by certain synchronization-related changes.
Despite this setback, I've been doing the following to try to get some data:
- tracking the different structures whose condition variable attributes are being referred to. This won't give us the data we had initially hoped for about the number of changes made to a condition variable's synchronization routines correlating to the number of overall synchronization routines involving that variable but it could be interesting and we'd hope for pretty similar results despite the variables not being global.
- writing a script that tracks initialization of the different structures containing condition variables as attributes. As I stated above, it'll give us some idea as to how many different variables are being used at any given time.