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

Improve performance and usability #20

Merged
merged 4 commits into from
Jun 13, 2017
Merged

Improve performance and usability #20

merged 4 commits into from
Jun 13, 2017

Conversation

olix0r
Copy link
Member

@olix0r olix0r commented Jun 9, 2017

This change includes major changes identified while implementing linkerd-tcp:

  • introduce micro-benchmarks so that performance investments may be assessed
    quantiatively;
  • update the multithread example to set metrics from multiple threads concurrently;
  • use atomics for Counter & Gauge, removing locks in update path;
  • use a fine-grained per-stat mutex to lessen contention in stat update path;
  • use &'static str for all label keys and metric names;
  • stop using the twox hash, as it does not seem ot have an advantage when applied to our
    key structure;
  • make label values implement std::fmt::Display;
  • add key prefixes (namespaces) to Scope;
  • export raw histogram buckets to prometheus;
  • track histogram sums;
  • introduce Timer/Timed to support measuring the amount of time it takes for an
    asynchronous operation to complete;
  • and update the version to 0.4.0

This change includes major changes identified while implementing linkerd-tcp:

- introduce micro-benchmarks so that performance investments may be assessed
  quantiatively;
- update the _multithread_ example to set metrics from multiple threads concurrently;
- use atomics for Counter & Gauge, removing locks in update path;
- use a fine-grained per-stat mutex to lessen contention in stat update path;
- use `&'static str` for all label keys and metric names;
- stop using the _twox_ hash, as it does not seem ot have an advantage when applied to our
  key structure;
- make label values implement std::fmt::Display;
- add key prefixes (namespaces) to Scope;
- export raw histogram buckets to prometheus;
- introduce Timer/Timed to support measuring the amount of time it takes for an
  asynchronous operation to complete;
- and update the version to 0.4.0
@olix0r olix0r self-assigned this Jun 9, 2017
@olix0r olix0r changed the title Improve perforamnce and usability Improve performance and usability Jun 9, 2017
olix0r added a commit to linkerd/linkerd-tcp that referenced this pull request Jun 10, 2017
linkerd-tcp 0.1.0 constitues a major rewrite.

Previously, linkerd-tcp did not properly utilize tokio's task model, which lead
to a number of performance and correctness problems. Furthermore, linkerd-tcp's
configuration interface was substantially different from linkerd's, which
caused some confusion.

Now, linkerd-tcp has been redesigned:
- to better-leverage tokio's reactor;
- to support connection and stream timeouts;
- to provide much richer metrics insight;
- to be structured like a linkerd-style router;
- general correctness improvements.

Fixes #26 #40 #49 #50
Depends on linkerd/tacho#20
@olix0r olix0r merged commit db8de43 into master Jun 13, 2017
@olix0r olix0r deleted the ver/0.4.0 branch June 13, 2017 18:28
@olix0r olix0r removed the reviewable label Jun 13, 2017
olix0r added a commit to linkerd/linkerd-tcp that referenced this pull request Jun 13, 2017
linkerd-tcp 0.1.0 constitutes a major rewrite.

Previously, linkerd-tcp did not properly utilize tokio's task model, which lead
to a number of performance and correctness problems. Furthermore, linkerd-tcp's
configuration interface was substantially different from linkerd's, which
caused some confusion.

Now, linkerd-tcp has been redesigned:
- to better-leverage tokio's reactor;
- to support connection and stream timeouts;
- to provide much richer metrics insight;
- to be structured like a linkerd-style router;
- general correctness improvements.

Fixes #26 #40 #49 #50
Depends on linkerd/tacho#20
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

Successfully merging this pull request may close these issues.

1 participant