haskell-distributed / haskell-distributed/distributed-process
Improve efficiency of local message passing
@hyperthunk is already working on this.
Since Dec 14, 2012.
- Dominant language
- Haskell
- Stars
- 751
- Forks
- 99
- Avg merge
- 45m
- Merged PRs (30d)
- 2
Description
I see no reason why we should copy data that's being passed between two processes on the same (local) node. So I've started experimenting with skipping some of the overhead of NT by sending directly via the node controller using sendCtrlMsg instead.
Initial commit is here. With this branch installed locally, the distributed-process-platform tests still pass, but I have seen the test run bomb out with 130 exit code once, which is a bit worrying.
Following on from that commit, I'd like to see if we can skip the serialization step and just enqueue the data directly instead of creating a new Message in which to pass it. This shouldn't be too hard, but the matching operations will still need the type fingerprint in order to handle selective receive so I might create a type class that encapsulates the fingerprint and access to the payload, which we can use in the matching code. We can then have an instance for Message that calls decode and another for Serializable a that just returns the enclosed data directly.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.