What is memory bandwidth monitoring?
In the world of high-performance Oracle databases, we often focus on Capacity (how many gigabytes of RAM we have). But there is a second, more critical metric for speed: Memory Bandwidth.
Memory Bandwidth Monitoring is the practice of measuring the rate at which data can be read from or written to the system memory by the processors. If RAM capacity is the size of a warehouse, bandwidth is the width of the doors. It doesn't matter how much you can store inside if you can only move one box at a time through a narrow exit.
Modern CPUs are incredibly fast, but they are "hungry." To perform calculations, they need a constant stream of data from the RAM.
The Throughput: Memory bandwidth is typically measured in GB/s (Gigabytes per second).
The Saturation: When the CPU requests more data than the memory channels can provide, you hit a "Bandwidth Wall." The CPU cores sit idle, waiting for data to arrive—this is known as being Memory Bound.
Oracle databases perform massive "In-Memory" operations. Memory bandwidth becomes the primary bottleneck during:
Full Table Scans: When Oracle reads huge amounts of data into the Buffer Cache.
Parallel Query Execution: When multiple CPU cores try to access different parts of the RAM simultaneously.
In-Memory Columnar Store: Oracle’s "In-Memory" option relies entirely on high-speed scanning of RAM. If your bandwidth is low, you lose the primary benefit of the feature.
How do you know if you have a memory bandwidth issue? You look for specific indicators in your monitoring tools:
| Symptom | What it Means |
| High "CPU Idle" with High Load | The CPU wants to work but is waiting for data from the RAM. |
| Increased Memory Latency | As bandwidth nears 100% saturation, the time it takes to get a single piece of data (latency) skyrockets. |
| NUMA Locality Issues | On multi-socket servers, if a CPU on Socket 1 tries to access RAM on Socket 2, it uses the "Interconnect" (like Intel QPI or AMD Infinity Fabric), which has much lower bandwidth than local RAM access. |
Not all 128GB RAM configurations are equal. Memory bandwidth is determined by:
Memory Speed: (e.g., DDR4-3200 vs. DDR5-4800).
Number of Channels: Modern CPUs have 8 or 12 memory channels. If you only plug in 2 sticks of RAM, you are only using 25% of your available bandwidth, even if the capacity is enough!
The "Balanced" Configuration: Oracle hardware (like Exadata) is designed with "Balanced Memory," ensuring every memory channel is filled to maximize the GB/s available to the processors.
Standard tools like top won't show you bandwidth. You need specialized hardware-level tools:
pcm-memory (Intel Performance Counter Monitor): The gold standard for Intel systems. It shows exactly how many GB/s are flowing through each memory controller.
mbl (Memory Bandwidth Latency): Used in high-end Solaris/SPARC environments to track memory bus utilization.
Oracle AWR Reports: Look for "External Table" or "In-Memory" scan rates to see how fast data is moving from RAM into the database engine.
Memory Bandwidth Monitoring shifts the focus from "how much" memory you have to "how fast" you can use it. By ensuring your memory channels are not saturated, you unlock the true potential of your CPUs and ensure your Oracle Database can process billions of rows without breaking a sweat.