SlideShare a Scribd company logo
1 of 34
Download to read offline
Techniques and Tools for
A Coherent Discussion
About Performance
in Complex Systems
Performance Must Matter
First it must be made relevant.
Then it must be made important.
If you don’t care about
Performance
You are in the wrong talk.
@postwait should throw you out.
Perhaps some justification is warranted
Performance…
makes a better user experience
increases loyalty
reduces product abandonment
increases speed of product development
lowers total cost of ownership
builds more cohesive teams
Consistent Terminology
Inconsistent terminology is the
best way to argue about agreeing
It’s all about latency…
Throughput vs. Latency
Lower latency often

affords increased throughput.
Latency is the focus.
https://www.flickr.com/photos/poeloq/3140100971
Generally, time should be measured in seconds.
UX latency should be in milliseconds.
Time
Users can’t observe microseconds.
Users quit over seconds.
Users experience is measured in milliseconds.
(with at least microsecond precision)
Music is all about the space between the notes.
Connectedness
Performance is about how quickly you can
complete some work.
In a connected service architecture,
performance is also about the time spent
between the service layers.
Developing a
Performance Culture
It is easy to develop a rather
unhealthy performance culture.
Focus on
Small Individual Wins
https://www.flickr.com/photos/skynoir/8783914886
Report on and celebrate
Large Collective Wins
https://www.flickr.com/photos/tomer_a/1130647512
Transcendant Tooling
Tooling must transcend the team
and keep consistent conversation
https://www.flickr.com/photos/meanestindian/2260343214
Large-Scale Distributed Systems Tracing Infrastructure
Dapper
Google published a paper:
research.google.com/pubs/pub36356.html
As usual, code never saw the outside.
Large-Scale Distributed Systems Tracing Infrastructure
Dapper
Google published a paper:
research.google.com/pubs/pub36356.html
As usual, code never saw the outside.
web api
data agg
mq
db
data store
cep
alerting
The Basics
❖ Focused on User Interactions (not req.)
❖ Each new request is assigned a “Trace ID”
❖ The service records start/stop/etc. against
a “Span ID” (first Span ID == Trace ID)
❖ In the context of a “Span ID”,

each remote call get’s a new Span ID,

with the Parent Span ID set to the context.
Example
Web Request: /do/magic
(no X-B3-TraceId header)
Creates TraceId T1, SpanId T1
Notes “sr” (server receive)
needs to tall to service MS
Creates new SpanId T2
Notes “cs” (client send)
Request to MS
Notes “cr” (client receive)
Notes “ss” (server send)
Sends response
Async publish span(s)
GET /pixie/dust
X-B3-TraceId: T1
X-B3-ParentSpanId: T1
X-B3-SpanId: T2
Extracts headers
Notes “sr” (server receive)
performs actions
Notes “ss” (server send)
Responds
Async publish span(s)
Scribe
Visualization
service1
service2
sr
sr ss crcs
ss
cs? cr?
Siloed Teams
service1
service2
sr
sr ss crcs
ss
cs? cr?
Net Ops
AppTeam1
AppTeam2/DBA
Better Responsibilities
service1
service2
sr
sr ss crcs
ss
cs? cr?
Net Ops
AppTeam1
AppTeam2/DBA
A pseudo-Dapper
Zipkin
Twitter sought to (re)implement Dapper.
Disappointingly few improvements.
Some unfortunate UX issues.
Sound. Simple. Valuable.
Thrift and Scribe should both die.
Scribe is Terrible
Terrible. Terrible Terrible.
Thrift is terrible.
Scribe is “strings” in Thrift.
Performance focused people don’t use strings.
The whole point is to be low overhead
Screw Scribe
We push raw thrift over Fq

github.com/circonus-labs/fq
Completely async publishing,

lock free if using the C library.
Consolidating Zipkin’s bad decisions:
github.com/circonus-labs/fq2scribe
Telling computers what to do.
Zipkin is Java/Scala
Wrote C support:
github.com/circonus-labs/libmtev
Wrote Perl support:
github.com/circonus-labs/circonus-tracer-perl
Real world
A sample trace: data from S1
A sample trace: data from S2
Celebration
Day 1
Noticed unexpected topology queries.
Found a data location caching issue.
Shaved 350ms off every graph request.
Celebration
Day 4-7
Noticed frequent 150ms stalls in internal REST.
Often: 90%+
Found a libcurl issue (async resolver).
Shaved 150ms*(n*0.9) off ~50% of page loads.
You can do all of this at work.
Go To Work
And have a deeply technical

cross-team conversation

about performance
Future
IPv6 piggy-backing
audit or ld/preload libs
nanosecond granularity
cap-n-proto + UDP reporting
https://www.flickr.com/photos/robin1966/16188457397
Thanks!

More Related Content

Viewers also liked

Throughput vs. Latency
Throughput vs. LatencyThroughput vs. Latency
Throughput vs. Latencyrvncerr
 
SPOF - Single "Person" of Failure
SPOF - Single "Person" of FailureSPOF - Single "Person" of Failure
SPOF - Single "Person" of FailureSasha Rosenbaum
 
Chaos patterns - architecting for failure in distributed systems
Chaos patterns - architecting for failure in distributed systemsChaos patterns - architecting for failure in distributed systems
Chaos patterns - architecting for failure in distributed systemsJos Boumans
 
ContainerCon - Test Driven Infrastructure
ContainerCon - Test Driven InfrastructureContainerCon - Test Driven Infrastructure
ContainerCon - Test Driven InfrastructureYury Tsarev
 
Building Self-Defending Applications With OWASP AppSensor JavaOne 2016
Building Self-Defending Applications With OWASP AppSensor JavaOne 2016Building Self-Defending Applications With OWASP AppSensor JavaOne 2016
Building Self-Defending Applications With OWASP AppSensor JavaOne 2016jtmelton
 
Un-broken Logging - Operability.io 2015 - Matthew Skelton
Un-broken Logging - Operability.io 2015 - Matthew SkeltonUn-broken Logging - Operability.io 2015 - Matthew Skelton
Un-broken Logging - Operability.io 2015 - Matthew SkeltonSkelton Thatcher Consulting Ltd
 
Taking AppSec to 11 - BSides Austin 2016
Taking AppSec to 11 - BSides Austin 2016Taking AppSec to 11 - BSides Austin 2016
Taking AppSec to 11 - BSides Austin 2016Matt Tesauro
 
Monitoring is easy, why are we so bad at it presentation
Monitoring is easy, why are we so bad at it  presentationMonitoring is easy, why are we so bad at it  presentation
Monitoring is easy, why are we so bad at it presentationTheo Schlossnagle
 
OmniOS Motivation and Design ~ LISA 2012
OmniOS Motivation and Design ~ LISA 2012OmniOS Motivation and Design ~ LISA 2012
OmniOS Motivation and Design ~ LISA 2012Theo Schlossnagle
 
Monitoring Is Never Done
Monitoring Is Never DoneMonitoring Is Never Done
Monitoring Is Never DoneMelanie Cey
 
6 six steps to conduct performance appraisal meeting
6 six steps to conduct performance appraisal meeting6 six steps to conduct performance appraisal meeting
6 six steps to conduct performance appraisal meetingPerformanceAppraisal123
 
Monitoring and observability
Monitoring and observabilityMonitoring and observability
Monitoring and observabilityTheo Schlossnagle
 
Devops and Immutable infrastructure - Cloud Expo 2015 NYC
Devops and Immutable infrastructure  - Cloud Expo 2015 NYCDevops and Immutable infrastructure  - Cloud Expo 2015 NYC
Devops and Immutable infrastructure - Cloud Expo 2015 NYCJohn Willis
 

Viewers also liked (20)

Throughput vs. Latency
Throughput vs. LatencyThroughput vs. Latency
Throughput vs. Latency
 
What's in a number?
What's in a number?What's in a number?
What's in a number?
 
Xtreme Deployment
Xtreme DeploymentXtreme Deployment
Xtreme Deployment
 
Atldevops
AtldevopsAtldevops
Atldevops
 
SPOF - Single "Person" of Failure
SPOF - Single "Person" of FailureSPOF - Single "Person" of Failure
SPOF - Single "Person" of Failure
 
Chaos patterns - architecting for failure in distributed systems
Chaos patterns - architecting for failure in distributed systemsChaos patterns - architecting for failure in distributed systems
Chaos patterns - architecting for failure in distributed systems
 
SRECon Coherent Performance
SRECon Coherent PerformanceSRECon Coherent Performance
SRECon Coherent Performance
 
ContainerCon - Test Driven Infrastructure
ContainerCon - Test Driven InfrastructureContainerCon - Test Driven Infrastructure
ContainerCon - Test Driven Infrastructure
 
Omnios and unix
Omnios and unixOmnios and unix
Omnios and unix
 
Building Self-Defending Applications With OWASP AppSensor JavaOne 2016
Building Self-Defending Applications With OWASP AppSensor JavaOne 2016Building Self-Defending Applications With OWASP AppSensor JavaOne 2016
Building Self-Defending Applications With OWASP AppSensor JavaOne 2016
 
Un-broken Logging - Operability.io 2015 - Matthew Skelton
Un-broken Logging - Operability.io 2015 - Matthew SkeltonUn-broken Logging - Operability.io 2015 - Matthew Skelton
Un-broken Logging - Operability.io 2015 - Matthew Skelton
 
Taking AppSec to 11 - BSides Austin 2016
Taking AppSec to 11 - BSides Austin 2016Taking AppSec to 11 - BSides Austin 2016
Taking AppSec to 11 - BSides Austin 2016
 
Monitoring is easy, why are we so bad at it presentation
Monitoring is easy, why are we so bad at it  presentationMonitoring is easy, why are we so bad at it  presentation
Monitoring is easy, why are we so bad at it presentation
 
OmniOS Motivation and Design ~ LISA 2012
OmniOS Motivation and Design ~ LISA 2012OmniOS Motivation and Design ~ LISA 2012
OmniOS Motivation and Design ~ LISA 2012
 
Project reality
Project realityProject reality
Project reality
 
It's all about telemetry
It's all about telemetryIt's all about telemetry
It's all about telemetry
 
Monitoring Is Never Done
Monitoring Is Never DoneMonitoring Is Never Done
Monitoring Is Never Done
 
6 six steps to conduct performance appraisal meeting
6 six steps to conduct performance appraisal meeting6 six steps to conduct performance appraisal meeting
6 six steps to conduct performance appraisal meeting
 
Monitoring and observability
Monitoring and observabilityMonitoring and observability
Monitoring and observability
 
Devops and Immutable infrastructure - Cloud Expo 2015 NYC
Devops and Immutable infrastructure  - Cloud Expo 2015 NYCDevops and Immutable infrastructure  - Cloud Expo 2015 NYC
Devops and Immutable infrastructure - Cloud Expo 2015 NYC
 

Similar to A Coherent Discussion About Performance

"The Intersection of architecture and implementation", Mark Richards
"The Intersection of architecture and implementation", Mark Richards"The Intersection of architecture and implementation", Mark Richards
"The Intersection of architecture and implementation", Mark RichardsFwdays
 
The present and future of serverless observability
The present and future of serverless observabilityThe present and future of serverless observability
The present and future of serverless observabilityYan Cui
 
Distributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applicationsDistributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applicationsJaime Martin Losa
 
XebiCon'17 : AxonFramework @ SGCIB (our experience) : (CQRS, Eventsourcing, A...
XebiCon'17 : AxonFramework @ SGCIB (our experience) : (CQRS, Eventsourcing, A...XebiCon'17 : AxonFramework @ SGCIB (our experience) : (CQRS, Eventsourcing, A...
XebiCon'17 : AxonFramework @ SGCIB (our experience) : (CQRS, Eventsourcing, A...Publicis Sapient Engineering
 
Crafted Design - Sandro Mancuso
Crafted Design - Sandro MancusoCrafted Design - Sandro Mancuso
Crafted Design - Sandro MancusoJAXLondon2014
 
3 Tips to Deliver Fast Performance Across Mobile Web
3 Tips to Deliver Fast Performance Across Mobile Web3 Tips to Deliver Fast Performance Across Mobile Web
3 Tips to Deliver Fast Performance Across Mobile WebDynatrace
 
Architecting Microservices in .Net
Architecting Microservices in .NetArchitecting Microservices in .Net
Architecting Microservices in .NetRichard Banks
 
EEDC 2010. Scaling SaaS Applications
EEDC 2010. Scaling SaaS ApplicationsEEDC 2010. Scaling SaaS Applications
EEDC 2010. Scaling SaaS ApplicationsExpertos en TI
 
Become a Performance Diagnostics Hero
Become a Performance Diagnostics HeroBecome a Performance Diagnostics Hero
Become a Performance Diagnostics HeroTechWell
 
Developing Actors in Azure with .net
Developing Actors in Azure with .netDeveloping Actors in Azure with .net
Developing Actors in Azure with .netMarco Parenzan
 
FMS Administration Seminar
FMS Administration SeminarFMS Administration Seminar
FMS Administration SeminarYoss Cohen
 
The present and future of serverless observability (QCon London)
The present and future of serverless observability (QCon London)The present and future of serverless observability (QCon London)
The present and future of serverless observability (QCon London)Yan Cui
 
The present and future of Serverless observability
The present and future of Serverless observabilityThe present and future of Serverless observability
The present and future of Serverless observabilityYan Cui
 
The present and future of Serverless observability
The present and future of Serverless observabilityThe present and future of Serverless observability
The present and future of Serverless observabilityYan Cui
 
CIS 524 Discussion 1 post responses.Respond to the colleagues .docx
CIS 524 Discussion 1 post responses.Respond to the colleagues .docxCIS 524 Discussion 1 post responses.Respond to the colleagues .docx
CIS 524 Discussion 1 post responses.Respond to the colleagues .docxsleeperharwell
 
Lightstep webinar jan 30, 2019
Lightstep webinar  jan 30, 2019Lightstep webinar  jan 30, 2019
Lightstep webinar jan 30, 2019DevOps.com
 
Production debugging web applications
Production debugging web applicationsProduction debugging web applications
Production debugging web applicationsIdo Flatow
 
Essay On Active Directory
Essay On Active DirectoryEssay On Active Directory
Essay On Active DirectoryTammy Moncrief
 
Chi2011 Case Study: Interactive, Dynamic Sparklines
Chi2011 Case Study: Interactive, Dynamic SparklinesChi2011 Case Study: Interactive, Dynamic Sparklines
Chi2011 Case Study: Interactive, Dynamic SparklinesLeo Frishberg
 
RamasamyNarayanan_Resume
RamasamyNarayanan_ResumeRamasamyNarayanan_Resume
RamasamyNarayanan_ResumeRamasamy Raams
 

Similar to A Coherent Discussion About Performance (20)

"The Intersection of architecture and implementation", Mark Richards
"The Intersection of architecture and implementation", Mark Richards"The Intersection of architecture and implementation", Mark Richards
"The Intersection of architecture and implementation", Mark Richards
 
The present and future of serverless observability
The present and future of serverless observabilityThe present and future of serverless observability
The present and future of serverless observability
 
Distributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applicationsDistributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applications
 
XebiCon'17 : AxonFramework @ SGCIB (our experience) : (CQRS, Eventsourcing, A...
XebiCon'17 : AxonFramework @ SGCIB (our experience) : (CQRS, Eventsourcing, A...XebiCon'17 : AxonFramework @ SGCIB (our experience) : (CQRS, Eventsourcing, A...
XebiCon'17 : AxonFramework @ SGCIB (our experience) : (CQRS, Eventsourcing, A...
 
Crafted Design - Sandro Mancuso
Crafted Design - Sandro MancusoCrafted Design - Sandro Mancuso
Crafted Design - Sandro Mancuso
 
3 Tips to Deliver Fast Performance Across Mobile Web
3 Tips to Deliver Fast Performance Across Mobile Web3 Tips to Deliver Fast Performance Across Mobile Web
3 Tips to Deliver Fast Performance Across Mobile Web
 
Architecting Microservices in .Net
Architecting Microservices in .NetArchitecting Microservices in .Net
Architecting Microservices in .Net
 
EEDC 2010. Scaling SaaS Applications
EEDC 2010. Scaling SaaS ApplicationsEEDC 2010. Scaling SaaS Applications
EEDC 2010. Scaling SaaS Applications
 
Become a Performance Diagnostics Hero
Become a Performance Diagnostics HeroBecome a Performance Diagnostics Hero
Become a Performance Diagnostics Hero
 
Developing Actors in Azure with .net
Developing Actors in Azure with .netDeveloping Actors in Azure with .net
Developing Actors in Azure with .net
 
FMS Administration Seminar
FMS Administration SeminarFMS Administration Seminar
FMS Administration Seminar
 
The present and future of serverless observability (QCon London)
The present and future of serverless observability (QCon London)The present and future of serverless observability (QCon London)
The present and future of serverless observability (QCon London)
 
The present and future of Serverless observability
The present and future of Serverless observabilityThe present and future of Serverless observability
The present and future of Serverless observability
 
The present and future of Serverless observability
The present and future of Serverless observabilityThe present and future of Serverless observability
The present and future of Serverless observability
 
CIS 524 Discussion 1 post responses.Respond to the colleagues .docx
CIS 524 Discussion 1 post responses.Respond to the colleagues .docxCIS 524 Discussion 1 post responses.Respond to the colleagues .docx
CIS 524 Discussion 1 post responses.Respond to the colleagues .docx
 
Lightstep webinar jan 30, 2019
Lightstep webinar  jan 30, 2019Lightstep webinar  jan 30, 2019
Lightstep webinar jan 30, 2019
 
Production debugging web applications
Production debugging web applicationsProduction debugging web applications
Production debugging web applications
 
Essay On Active Directory
Essay On Active DirectoryEssay On Active Directory
Essay On Active Directory
 
Chi2011 Case Study: Interactive, Dynamic Sparklines
Chi2011 Case Study: Interactive, Dynamic SparklinesChi2011 Case Study: Interactive, Dynamic Sparklines
Chi2011 Case Study: Interactive, Dynamic Sparklines
 
RamasamyNarayanan_Resume
RamasamyNarayanan_ResumeRamasamyNarayanan_Resume
RamasamyNarayanan_Resume
 

More from Theo Schlossnagle

Adding Simplicity to Complexity
Adding Simplicity to ComplexityAdding Simplicity to Complexity
Adding Simplicity to ComplexityTheo Schlossnagle
 
Put Some SRE in Your Shipped Software
Put Some SRE in Your Shipped SoftwarePut Some SRE in Your Shipped Software
Put Some SRE in Your Shipped SoftwareTheo Schlossnagle
 
Distributed Systems - Like It Or Not
Distributed Systems - Like It Or NotDistributed Systems - Like It Or Not
Distributed Systems - Like It Or NotTheo Schlossnagle
 
Applying SRE techniques to micro service design
Applying SRE techniques to micro service designApplying SRE techniques to micro service design
Applying SRE techniques to micro service designTheo Schlossnagle
 
Monitoring and observability
Monitoring and observabilityMonitoring and observability
Monitoring and observabilityTheo Schlossnagle
 
Social improvements in monitoring
Social improvements in monitoringSocial improvements in monitoring
Social improvements in monitoringTheo Schlossnagle
 
Building Scalable Systems: an asynchronous approach
Building Scalable Systems: an asynchronous approachBuilding Scalable Systems: an asynchronous approach
Building Scalable Systems: an asynchronous approachTheo Schlossnagle
 
Applying operations culture to everything
Applying operations culture to everythingApplying operations culture to everything
Applying operations culture to everythingTheo Schlossnagle
 

More from Theo Schlossnagle (15)

Adding Simplicity to Complexity
Adding Simplicity to ComplexityAdding Simplicity to Complexity
Adding Simplicity to Complexity
 
Put Some SRE in Your Shipped Software
Put Some SRE in Your Shipped SoftwarePut Some SRE in Your Shipped Software
Put Some SRE in Your Shipped Software
 
Monitoring 101
Monitoring 101Monitoring 101
Monitoring 101
 
Distributed Systems - Like It Or Not
Distributed Systems - Like It Or NotDistributed Systems - Like It Or Not
Distributed Systems - Like It Or Not
 
Applying SRE techniques to micro service design
Applying SRE techniques to micro service designApplying SRE techniques to micro service design
Applying SRE techniques to micro service design
 
Commandments of scale
Commandments of scaleCommandments of scale
Commandments of scale
 
Monitoring the #DevOps way
Monitoring the #DevOps wayMonitoring the #DevOps way
Monitoring the #DevOps way
 
Operational Software Design
Operational Software DesignOperational Software Design
Operational Software Design
 
Monitoring and observability
Monitoring and observabilityMonitoring and observability
Monitoring and observability
 
Social improvements in monitoring
Social improvements in monitoringSocial improvements in monitoring
Social improvements in monitoring
 
Building Scalable Systems: an asynchronous approach
Building Scalable Systems: an asynchronous approachBuilding Scalable Systems: an asynchronous approach
Building Scalable Systems: an asynchronous approach
 
Webops dashboards
Webops dashboardsWebops dashboards
Webops dashboards
 
Web Operations Career
Web Operations CareerWeb Operations Career
Web Operations Career
 
Http front-ends
Http front-endsHttp front-ends
Http front-ends
 
Applying operations culture to everything
Applying operations culture to everythingApplying operations culture to everything
Applying operations culture to everything
 

Recently uploaded

Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 

Recently uploaded (20)

DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 

A Coherent Discussion About Performance

  • 1. Techniques and Tools for A Coherent Discussion About Performance in Complex Systems
  • 2. Performance Must Matter First it must be made relevant. Then it must be made important.
  • 3. If you don’t care about Performance You are in the wrong talk. @postwait should throw you out.
  • 4. Perhaps some justification is warranted Performance… makes a better user experience increases loyalty reduces product abandonment increases speed of product development lowers total cost of ownership builds more cohesive teams
  • 5. Consistent Terminology Inconsistent terminology is the best way to argue about agreeing
  • 6. It’s all about latency… Throughput vs. Latency Lower latency often
 affords increased throughput. Latency is the focus. https://www.flickr.com/photos/poeloq/3140100971
  • 7. Generally, time should be measured in seconds. UX latency should be in milliseconds. Time Users can’t observe microseconds. Users quit over seconds. Users experience is measured in milliseconds. (with at least microsecond precision)
  • 8. Music is all about the space between the notes. Connectedness Performance is about how quickly you can complete some work. In a connected service architecture, performance is also about the time spent between the service layers.
  • 9. Developing a Performance Culture It is easy to develop a rather unhealthy performance culture.
  • 10. Focus on Small Individual Wins https://www.flickr.com/photos/skynoir/8783914886
  • 11. Report on and celebrate Large Collective Wins https://www.flickr.com/photos/tomer_a/1130647512
  • 12. Transcendant Tooling Tooling must transcend the team and keep consistent conversation https://www.flickr.com/photos/meanestindian/2260343214
  • 13. Large-Scale Distributed Systems Tracing Infrastructure Dapper Google published a paper: research.google.com/pubs/pub36356.html As usual, code never saw the outside.
  • 14. Large-Scale Distributed Systems Tracing Infrastructure Dapper Google published a paper: research.google.com/pubs/pub36356.html As usual, code never saw the outside. web api data agg mq db data store cep alerting
  • 15. The Basics ❖ Focused on User Interactions (not req.) ❖ Each new request is assigned a “Trace ID” ❖ The service records start/stop/etc. against a “Span ID” (first Span ID == Trace ID) ❖ In the context of a “Span ID”,
 each remote call get’s a new Span ID,
 with the Parent Span ID set to the context.
  • 16. Example Web Request: /do/magic (no X-B3-TraceId header) Creates TraceId T1, SpanId T1 Notes “sr” (server receive) needs to tall to service MS Creates new SpanId T2 Notes “cs” (client send) Request to MS Notes “cr” (client receive) Notes “ss” (server send) Sends response Async publish span(s) GET /pixie/dust X-B3-TraceId: T1 X-B3-ParentSpanId: T1 X-B3-SpanId: T2 Extracts headers Notes “sr” (server receive) performs actions Notes “ss” (server send) Responds Async publish span(s) Scribe
  • 18. Siloed Teams service1 service2 sr sr ss crcs ss cs? cr? Net Ops AppTeam1 AppTeam2/DBA
  • 19. Better Responsibilities service1 service2 sr sr ss crcs ss cs? cr? Net Ops AppTeam1 AppTeam2/DBA
  • 20. A pseudo-Dapper Zipkin Twitter sought to (re)implement Dapper. Disappointingly few improvements. Some unfortunate UX issues. Sound. Simple. Valuable.
  • 21. Thrift and Scribe should both die. Scribe is Terrible Terrible. Terrible Terrible. Thrift is terrible. Scribe is “strings” in Thrift. Performance focused people don’t use strings.
  • 22.
  • 23. The whole point is to be low overhead Screw Scribe We push raw thrift over Fq
 github.com/circonus-labs/fq Completely async publishing,
 lock free if using the C library. Consolidating Zipkin’s bad decisions: github.com/circonus-labs/fq2scribe
  • 24. Telling computers what to do. Zipkin is Java/Scala Wrote C support: github.com/circonus-labs/libmtev Wrote Perl support: github.com/circonus-labs/circonus-tracer-perl
  • 26. A sample trace: data from S1
  • 27.
  • 28. A sample trace: data from S2
  • 29.
  • 30. Celebration Day 1 Noticed unexpected topology queries. Found a data location caching issue. Shaved 350ms off every graph request.
  • 31. Celebration Day 4-7 Noticed frequent 150ms stalls in internal REST. Often: 90%+ Found a libcurl issue (async resolver). Shaved 150ms*(n*0.9) off ~50% of page loads.
  • 32. You can do all of this at work. Go To Work And have a deeply technical
 cross-team conversation
 about performance
  • 33. Future IPv6 piggy-backing audit or ld/preload libs nanosecond granularity cap-n-proto + UDP reporting https://www.flickr.com/photos/robin1966/16188457397