August'24: Kamaelia is in maintenance mode and will recieve periodic updates, about twice a year, primarily targeted around Python 3 and ecosystem compatibility. PRs are always welcome. Latest Release: 1.14.32 (2024/3/24)
Status: Completed
Current Developers: MH
Current "inflight" dev location:
/branches/private_MH_axon_optimisations
Start Date: March 2006
Expected End Date: n/a
End Date: April 2006
Date this page last updated: 22 February
2007
Estimated effort so far: 20 days
Modifying axon to optimise delivery of messages along linkages -
especially chains of linkages - by delivering a message immediately and
directly to the final destination inbox as soon as it is sent to an
outbox. This would remove the need for a separate "postman" microprocess
to transfer the message along each linkage, from outbox to inbox.
This will substantially improve responsiveness and performance of Axon
systems - there will be less microprocesses in a running system; and
where components are nested delivery take a single hop rather than as
many hops as there are linkages in the chain.
Needed to make practical high data throughput Kamaelia systems, such as
KamaeliaMacro.
Task Sponsor: Michael (MS)
Task Owner: Michael, Matt (MH)
Developers: Michael (initial experiments & final merge), Matt
(final code)
Users: Michael, Matt
Interested third parties: none
Requirements
Relevant Influencing factors:
Code:
CVS branch: private_MH_axon_optimisations
Mainline code: /Code/Python/Axon/Axon/
Mainline code: /Code/Python/Axon/Axon/Tests
Updated components in mainline:
Axon's support for the following was removed; and needed to be added
back in again:
These optimisations led to a massive performance improvement; but at
the price of Axon losing some functionality (namely the ability to wake
components when message deliveries take place).
The modifications and additions to the axon testsuite were not initially
merged when the main code was merged from the branch to the mainline
codebase. This was because the decision was taken to move the tests from
/Code/Python/Axon/Axon/test to /Tests/Python/Axon/. They were later
merged when other optimisations were merged later in Summer 2006.
A minor Axon API change was made (other that the removal of support for
waking due to deliveries) to make things more uniform for component
writers - a new unlink() method superceeds deRegisterLinkage() - this
mirrors the existing link() method.
-- Matt Hammond, 22 February 2007