Summary: | accerciser consumes an inordinate amount of CPU | ||
---|---|---|---|
Product: | at-spi2 | Reporter: | Willie Walker <walker.willie> |
Component: | core | Assignee: | Rob Taylor <rob.taylor> |
Status: | RESOLVED NOTOURBUG | QA Contact: | |
Severity: | normal | ||
Priority: | medium | CC: | mark.doffman |
Version: | unspecified | ||
Hardware: | Other | ||
OS: | All | ||
Whiteboard: | |||
i915 platform: | i915 features: |
Description
Willie Walker
2009-04-13 13:08:37 UTC
In looking at the output of the 'profile' module, this seems like it might be an accerciser problem. What I noticed was that a lot of time was spent pumping events, but very little time was spent elsewhere: ncalls tottime percall cumtime percall filename:lineno(function) 799338 2.740 0.000 3.820 0.000 /usr/lib/python2.4/site-packages/a ccerciser/accerciser.py:123(_pumpEvents) 799338 1.080 0.000 1.080 0.000 /export/home/wwalker/Downloads/at- spi2-core/pyatspi/registry.py:435(pumpQueuedEvents) In digging into the accerciser code, it looks like it's not really pumping any events, but is instead just throttling on the gidle thread. The suspicious method is _pumpEvents accerciser.py: def run(self): ''' Runs the app. ''' # Tell user if desktop accessibility is disabled. self._showNoA11yDialog() gobject.idle_add(self._pumpEvents) try: pyatspi.Registry.start(async=True) except KeyboardInterrupt: self._shutDown() def _pumpEvents(self): pyatspi.Registry.pumpQueuedEvents() return True Even if there are no events to pump, the gidle thread is going to call accerciser's _pumpEvents method which is going to happily say "sure thing, call me again and again and again." The odd thing, however, is that I don't see this when running accerciser with the AT-SPI/CORBA implementation. I'm not sure I understand why. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.