Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am running an python script on an ec2 instance that inserts rows in an database on another instance. In ec2's monitoring I saw a 100% cpu utilization, whereas top only shows 20% for the python process. What is missing from top? Network overhead?

share|improve this question
What about all the other processes? – Ladadadada Jun 20 '12 at 13:40
At around 0% utilization – RickyA Jun 20 '12 at 13:48
up vote 12 down vote accepted

The data exposed by top is often insufficient or misleading in virtualized environments like Amazon EC2 and the reported percentage depends on your instance type and the under­ly­ing proces­sor core utilization (which usually doesn't match the virtualized hardware you are presented with from the hypervisor), amongst other things - what you are seeing is most likely caused by respective CPU steal time as exposed in most related Unix/Linux monitoring tools nowadays - see e.g. columns %steal or st in sar or top:

st -- Steal Time
The amount of CPU 'stolen' from this virtual machine by the hypervisor for other tasks (such as running another virtual machine).

The blog post EC2 monitoring: the case of stolen CPU provides a nice exploration and illustration of this topic:

When the top com­mand dis­plays 40% CPU busy but Cloud­Watch says the server is maxed out at 100% — which side do you take? The answer is sim­ple (Cloud­Watch is cor­rect, top is not) [...]

Please note that this hypervisor metric seems to be (easily) accessible on Unix/Linux systems only, but doesn't seem to be observable on Windows (yet), see my question Is there a Windows equivalent of Unix 'CPU steal time'? for more regarding this problem.

share|improve this answer
Thanks for the blogpost. That really makes it clear. It is really good to know this since I am about to roll out Ganglia, and it would be a shame to measure the wrong metrics. Measure %idletime! – RickyA Jun 20 '12 at 15:01
In my case, cloudwatch is also reporting 3mb/s network usage, but when I look on my server (with iftop, iptraf, netstat, etc) I see that the only thing with a network connection is my ssh into the server. Which I really doubt is using 3mb/s... – Benubird Feb 27 '15 at 8:37

Amazon probably check load and no percentage usage from TOP. If you have two processes on cpu, they can be utilized on 20% but you can have load 2.

share|improve this answer
I am not sure what you mean with load 2... – RickyA Jun 20 '12 at 13:54
You can have system load at 2. Two processes on CPU but with low utilization. – MartinSVK Jun 20 '12 at 13:57

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.