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)

Project Task Page: Axon Box Delivery Optimisations

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



Description

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.

Inputs

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:


Outputs

Expected

Actual

Code:

CVS branch: private_MH_axon_optimisations

Mainline code: /Code/Python/Axon/Axon/

Mainline code: /Code/Python/Axon/Axon/Tests

Updated components in mainline:

Realistic possibilities arising as a result of activity on this task

Axon's support for the following was removed; and needed to be added back in again:

Task Log

Discussion

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