We recently upgraded the storage in our data center and migrated all our production systems to it. We noticed that in one machine (an HP_UX IA-64 Oracle database server for SAP), the CPU utilization started spiking up while the IO wait% was decreasing. Now the IO wait is 0% and all the CPUs are running at 100%(0% idle). Before, the IO wait was around 30-40% (average) and the CPU was around 15-20% idle(average). Can the increased throughput of the storage actually cause this increased CPU utilization?
2 Answers
It certainly can. A definitive answer to the question of whether your CPU has gone up because of this would require more information, but in general, this is quite common and easily explainable.
Server workloads have to wait on a lot of things- CPU and memory, being local, often have to wait for things like network and storage. I've had applications go nuts becoming CPU bound after getting access to an SSD, for example.
It's very possible that your application is getting data back from the improved storage so much faster than before that the CPU has now become the bottleneck.
- 8,811
- 3
- 37
- 73
-
3Watch for user complaints about the application being faster. Yes, they will complain about this! – Michael Hampton Nov 30 '15 at 18:23
-
1I had this- my SAP guys didn't pass the word around when we put the DB on SSD and fell back on a change thinking they were missing something. – Basil Nov 30 '15 at 18:24
An increase in storage speed can lead to an increase in CPU because more data can be fed to it.
But CPU is usually going faster than RAM nowadays. So it is strange that the CPU is going up to 100%. You are right to question this.
My guess is that something else has changed or your OS is not reporting the correct values.
- 600
- 3
- 10
-
-
The CPU is around 1000,000 faster than SSD and 100 times faster than RAM. So it is extremely difficult to imagine that having a faster disk would make the CPU at 100%. Shouldn't the CPU spend it's entire time waiting for the RAM? – Xavier Nicollet Nov 30 '15 at 20:17
-
1It's hard to address the misconception behind that comment with just a comment because it's not precisely clear why you think that makes sense. CPUs do not wait for RAM the same way they wait for an SSD. When the CPU is waiting for an SSD, the CPU can do other things because the SSD does the work. When the CPU is waiting for RAM, that virtual core eventually cannot make further progress and cannot do anything else until the RAM is ready. This manifests as *increased* CPU usage as the CPU is used while it is working on getting the data from RAM. – David Schwartz Nov 30 '15 at 20:19