Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

A microbenchmark for measuring message passing rates in the Pony runtime. #2347

Merged
merged 1 commit into from
Nov 17, 2017

Conversation

slfritchie
Copy link
Contributor

A microbenchmark for measuring message passing rates in the Pony runtime.

This microbenchmark executes a sequence of intervals. During an interval,
1 second long by default, the SyncLeader actor sends an initial
set of ping messages to a static set of Pinger actors. When a Pinger
actor receives a ping() message, the Pinger will randomly choose
another Pinger to forward the ping() message. This technique limits
the total number of messages "in flight" in the runtime to avoid
causing unnecessary memory consumption & overhead by the Pony runtime.

This small program has several intended uses:

  • Demonstrate use of three types of actors in a Pony program: a timer,
    a SyncLeader, and many Pinger actors.

  • As a stress test for Pony runtime development, for example, finding
    deadlocks caused by experiments in the "Generalized runtime
    backpressure" work in pull request
    Generalized runtime backpressure #2264

  • As a stress test for measuring message send & receive overhead for
    experiments in the "Add DTrace probes for all message push and pop
    operations" work in pull request
    Add DTrace probes for all message push and pop operations #2295

@@ -0,0 +1 @@
message-ubench
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

None of the other examples have a .gitignore file.

I can see the appeal of having it, and I wouldn't mind having it on the examples, but I think there's value in consistency here, so I'd prefer to see either all or none of them having it.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jemc i added .gitignore for examples on the backpressure branch as well.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If that's the road we want to go down, should we at least create a ticket to add .gitignores for every example?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that is reasonable jemc.

@SeanTAllen SeanTAllen added the changelog - added Automatically add "Added" CHANGELOG entry on merge label Nov 17, 2017
@SeanTAllen
Copy link
Member

For anyone looking in the future. This application was invaluable when I was working on the runtime backpressure.

@jemc jemc merged commit 7e0c0fb into ponylang:master Nov 17, 2017
ponylang-main added a commit that referenced this pull request Nov 17, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
changelog - added Automatically add "Added" CHANGELOG entry on merge
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants