@DevOpsSummit Authors: Pat Romanski, Elizabeth White, Liz McMillan, Stackify Blog, Dana Gardner

Related Topics: @DevOpsSummit, Microservices Expo

@DevOpsSummit: Blog Feed Post

Microeconomics For Application Performance By @Ruxit | @DevOpsSummit [#DevOps]

About 15 years ago I gave an application performance presentation to some storage guys

Using Microeconomics to Think About Application Performance

About 15 years ago I gave an application performance presentation to some storage guys. Since I was a database jock at the time and didn’t “speak” I/O very well, I had to try a different approach. Rather than speaking over their heads in my own language, or faking it using their language, I tried to pick something neither of us were experts in – microeconomics. What’s interesting is that that presentation became my modus operandi for tuning systems. As I went from customer to customer, each with a different application or architecture, I needed a normalized approach so I didn’t get lost in the technology.

Apologies in advance to people who really know economics – I use microeconomics as a communication tool; this is not a strict interpretation…

Most people are familiar with the concept of supply and demand, and the impact of these forces on relative price. High demand and low supply for a desirable good or service drive prices up, while low demand and high supply drive prices down. Over the long term, as influences on supply and demand normalize, price equilibrium or “stabilization” occurs.


Which leads me to my simple mantra for performance management: If you want something to run faster, you can either ask for less stuff (i.e., decrease demand), or deliver results faster (i.e., increase supply). Whichever factor in this equation you have influence over dictates your next step. In other words: work on what you can fix.

There’s one catch: Supply doesn’t automatically equate to capacity. A bigger shoe does not make you run faster, just like a full tank of fuel doesn’t make you drive faster.

Here’s an example of a true supply-side issue. Note that all the illustrated virtual machines, processes, and services depend on the processors of a single ESXi host, and these processors can’t handle the load.

Finding root cause

One impact of this supply-side shortage is a service slowdown. Notice the big delay in CPU…

Execution Time Break Down

But have a look at the processor metrics for the same time period. There’s still plenty of capacity here:

CPU time is low

So supply can be thought of as capacity or speed, depending on the situation. To solve the first supply-side issue you need more processors. To solve the second supply-side issue you need faster processors.

But there are ways to solve such problems from the demand side of the equation. Reducing demand may make sense from a performance perspective, but who wants less? Think of any important, business-facing application: stakeholders always want to deliver more, not less. More traffic. More page views. Bigger shopping carts. More orders. Mo’ money, ya’ll.

So throttling down user demand is a big no-no. This means that, for performance purposes at least, your focus should be on the supply side, satisfying demand requests via the efficient execution of commands. Why make two trips when one will do? Why fetch a row 10 times when you can get all 10 in in a single go?

Check out this classic problem pattern in the image below. The issue is that, in order to service the user request, the application makes way too many calls to the database. Rather than being efficient, it creates unnecessarily high demand and results in a poorly performing application.

Too many statements

The last consideration in my efficient execution of commands approach to supply is that the approach needs to be applied recursively. For every tier, layer, service, or infrastructure component in your environment, review is needed to confirm that supply efficiently meets demand:

  • Do you have enough supply (capacity) on the front end?
  • Is the server side code that supports the front end efficient (demand)?
  • Do you need faster (supply/speed) or more (supply/capacity) CPU cycles?
  • Is your network healthy (demand/re-transmissions) or do you need additional bandwidth (supply/capacity)?

This model has served me well for years across a range of systems. Plan well, monitor often, deliver faster, and demand less.

The post Using microeconomics to think about application performance appeared first on The ruxit blog.

Read the original blog entry...

More Stories By Dynatrace Blog

Building a revolutionary approach to software performance monitoring takes an extraordinary team. With decades of combined experience and an impressive history of disruptive innovation, that’s exactly what we ruxit has.

Get to know ruxit, and get to know the future of data analytics.

@DevOpsSummit Stories
ChatOps is an emerging topic that has led to the wide availability of integrations between group chat and various other tools/platforms. Currently, HipChat is an extremely powerful collaboration platform due to the various ChatOps integrations that are available. However, DevOps automation can involve orchestration and complex workflows. In his session at @DevOpsSummit at 20th Cloud Expo, Himanshu Chhetri, CTO at Addteq, will cover practical examples and use cases such as self-provisioning infrastructure/applications, self-remediation workflows, integrating monitoring and complimenting integrations between Atlassian tools and other top tools in the industry.
"Storpool does only block-level storage so we do one thing extremely well. The growth in data is what drives the move to software-defined technologies in general and software-defined storage," explained Boyan Ivanov, CEO and co-founder at StorPool, in this SYS-CON.tv interview at 16th Cloud Expo, held June 9-11, 2015, at the Javits Center in New York City.
Is advanced scheduling in Kubernetes achievable?Yes, however, how do you properly accommodate every real-life scenario that a Kubernetes user might encounter? How do you leverage advanced scheduling techniques to shape and describe each scenario in easy-to-use rules and configurations? In his session at @DevOpsSummit at 21st Cloud Expo, Oleg Chunikhin, CTO at Kublr, answered these questions and demonstrated techniques for implementing advanced scheduling. For example, using spot instances and cost-effective resources on AWS, coupled with the ability to deliver a minimum set of functionalities that cover the majority of needs – without configuration complexity.
As Marc Andreessen says software is eating the world. Everything is rapidly moving toward being software-defined – from our phones and cars through our washing machines to the datacenter. However, there are larger challenges when implementing software defined on a larger scale - when building software defined infrastructure. In his session at 16th Cloud Expo, Boyan Ivanov, CEO of StorPool, provided some practical insights on what, how and why when implementing "software-defined" in the datacenter.
A strange thing is happening along the way to the Internet of Things, namely far too many devices to work with and manage. It has become clear that we'll need much higher efficiency user experiences that can allow us to more easily and scalably work with the thousands of devices that will soon be in each of our lives. Enter the conversational interface revolution, combining bots we can literally talk with, gesture to, and even direct with our thoughts, with embedded artificial intelligence, which can process our conversational commands and orchestrate the outcomes we request across our personal and professional realm of connected devices.