Both experiments performed on a 1.6GHz machine with 768MB RAM running Ubuntu Linux with a 3GB swap space.
Data collected with
top. According to
man top:
| Virtual Memory | The total amount of virtual memory used by task (swap + res) |
| Resident Memory | The non-swapped physical memory a task has used (code + data) |
| Shared Memory | The amount of shared memory used by a task (memory that could be shared with other processes) |
Sparkline graphs generated dynamically by Joe Gregorio's
Sparkline Generator Web Application
Experiment 1: Benchmarking
Procedure
- Start Chandler with ./release/RunChandler --nonexclusive --create
- Close Chandler
- Start Chandler with ./release/RunChandler --nonexclusive
- Start reminder applet with ./release/RunPython ../../osaf-sandbox/reminders/__init__.py
- Record memory usage data from top
- Close Chandler and reminder applet
- Start reminder applet with ./release/RunPython ../../osaf-sandbox/reminders/__init__.py
- Start Chandler with ./release/RunChandler --nonexclusive
- Record memory usage data from top
- Close Chandler and reminder applet
- Repeat steps 3-10 as desired
Results
| A: First Chandler, then reminder applet |
| B: First reminder applet, then Chandler |
| Run # | Order | Chandler | Reminder applet |
| Virtual Mem | Resident Mem | Shared Mem | Virtual Mem | Resident Mem | Shared Mem |
| 1 | A | 249m | 67m | 27m | 204m | 46m | 20m |
| B | 257m | 66m | 26m | 205m | 72m | 45m |
| 2 | A | 249m | 90m | 50m | 204m | 46m | 20m |
| B | 249m | 67m | 27m | 205m | 72m | 46m |
| 3 | A | 249m | 91m | 51m | 204m | 46m | 20m |
| B | 249m | 67m | 27m | 205m | 73m | 46m |
| | | | | | | | |
| Average | A | 249m | 82.67m | 42.67m | 204m | 46m | 20m |
| B | 251.67m | 66.67m | 26.67m | 205m | 72.33m | 45.67m |
Experiment 2: Memory usage during step-through
Without Chandler running:
Initial:
| Virtual Mem | Resident Mem | Shared Mem |
| 5168 | 3016 | 1680 |
| | |
from application import schema
from repository.item.Monitors import Monitors
from repository.persistence.RepositoryError import (
RepositoryVersionError, RepositoryOpenDeniedError,
ExclusiveOpenDeniedError)
import wx
import application.Globals as Globals
import application,Utility as Utility
import sys, os
import sched, time, datetime
SCROLL_AREA_WIDTH = 500
Globals.options = Utility.initOptions()
Utility.initI18n(Globals.options)
Utility.initProfileDir(Globals.options)
Globals.chandlerDirectory = Utility.locateChandlerDirectory()
os.chdir(Globals.chandlerDirectory)
Utility.initLogging(Globals.options)
class ReminderDialog(wx.Dialog):
def remind(item, reminder):
class ChandlerReminderScheduler(schema.Item):
class ReminderApp(wx.App):
def main():
if __name__ == "__main__":
main()
main():
app = ReminderApp()
ReminderApp.__init__():
...
self.OnInit()
ReminderApp.OnInit():
repoDir = Utility.locateRepositoryDirectory(Globals.options.profileDir)
try:
Globals.options.nonexclusive = True
view = Utility.initRepository(repoDir, Globals.options)
self.repository = view.repository
self.scheduler = ChandlerReminderScheduler(itsView=
self.repository.view)
...
--
TravisVachon - 22 Aug 2006