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

support receiving test commands from remote client #18

Open
KodyKantor opened this issue Apr 6, 2020 · 0 comments
Open

support receiving test commands from remote client #18

KodyKantor opened this issue Apr 6, 2020 · 0 comments

Comments

@KodyKantor
Copy link
Contributor

We've found that it's difficult to run many chum instances across machines. Currently what we end up doing is run chum in a screen session, copy/paste the same chum invocation on each of our systems, copy the output when the test is done, and then paste the results together.

This is sub-optimal for a number of reasons:

  • This approach doesn't scale. If we wanted to test an entire datacenter with chum then we'd be in for a bad time copy/pasting or using an elaborate bash/ssh for loop.
  • screen sessions aren't great for running long performance tests. It's too easy to accidentally SIGINT the process and it's hard to see what's going on without logging into a zone, entering the screen session, and watching stdout for a while.
  • Forgetting to pipe the chum run's output to a file can lead to lost results. We could work around this by adding a flag to chum to allow users to specify output files.
  • Aggregating stats from tests that were started a few seconds apart is not the best approach. The numbers are probably accurate in aggregate, but it would be nice if we didn't have to do manual data cleanup using paste, or editing files in vim to make the columns line up properly.

To solve these problems I suggest that we add a server mode to chum. This will allow one chum 'client' to send a test configuration to N chum instances simultaneously and aggregate the results automatically. This is really inspired by MinIO's Warp tool: https://github.com/minio/warp, which supports this form of distributed benchmarking.

The server mode will, via a TBD network protocol:

  • Accept instructions from a client.
    • Object size distribution, read/write workload ratio, etc.
  • Allow clients to start and stop tests.
  • Report results on a client-specified interval to the chum client.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant