From the perspective of system architecture, the server's CPU and memory architecture can be divided into three categories:
SMP: Symmetric Multi-Processor
NUMA: Non-Uniform Memory Access
MPP: Massive Parallel Processing
I personally don't think MPP is a kind of CPU and memory architecture; I think it is a distributed architecture application of SMP or NUMA; this article will explain later.
The earliest servers were all a CPU. As business pressure increased, they faced the situation of insufficient CPU. How to do? The simple and rude way is: do not change the architecture, just add CPU to the existing architecture.
The architecture remains unchanged, the CPU is added, but the effect is not as good as expected. The CPU is twice the original, but the system performance has not increased to twice the original. what reason? The status of the two CPUs is equal, sharing the memory bus; when CPU0 uses memory, CPU1 has to wait. The situation of the two CPUs is sloppy. As the number of CPUs increases, the CPU bus becomes more and more a bottleneck. How to do? NUMA is now on the stage.
NUMA solves the bottleneck of the SMP architecture memory bus, ensuring that each CPU has its own private memory and memory bus; what if the memory of the CPU is not enough? Through the CPU bus (QPI or UPI) negotiate with other CPUs to borrow. Nothing can be perfect. NUMA has its own problems, especially in database and virtualization scenarios. There are performance problems in certain situations: 1. Cross-CPU access to memory (that is, borrowing memory from other CPUs) is better than accessing the CPU The memory efficiency is low. 2. There will be an imbalance between memory and CPU access: such as 4 CPUs, the data to be accessed by CPU1 happens to be in the memory of CPU0.
Tips: In database scenarios, experienced DBAs will require NUMA to be closed.
Under SMP|NUMA architecture, all CPUs are in one server, and the operating system is also one
MPP is actually that multiple servers of SMP|NUMA are connected together through the network, and each server has its own operating system; MPP is more a computer that relies on the operating system or distributed software between multiple servers to coordinate and dispatch the logical composition. Or service; essentially it should belong to a modern distributed architecture. Program = algorithm + data structure, where the algorithm can be regarded as CPU processing, and the data structure can be regarded as data storage, then it is obvious that there are two directions for expansion, CPU expansion and storage expansion; at this time it has evolved into scale-out and scale-up. The limitations of scale-up are obvious. No matter how awesome it is, there will always be one day; scale-out means that calculation and storage can always be linearly expanded. This is also the reason why distributed systems are popular.
SMP: Symmetric Multi-Processor
NUMA: Non-Uniform Memory Access
MPP: Massive Parallel Processing
I personally don't think MPP is a kind of CPU and memory architecture; I think it is a distributed architecture application of SMP or NUMA; this article will explain later.
1. Early server: SMP
The earliest servers were all a CPU. As business pressure increased, they faced the situation of insufficient CPU. How to do? The simple and rude way is: do not change the architecture, just add CPU to the existing architecture.
The architecture remains unchanged, the CPU is added, but the effect is not as good as expected. The CPU is twice the original, but the system performance has not increased to twice the original. what reason? The status of the two CPUs is equal, sharing the memory bus; when CPU0 uses memory, CPU1 has to wait. The situation of the two CPUs is sloppy. As the number of CPUs increases, the CPU bus becomes more and more a bottleneck. How to do? NUMA is now on the stage.
2. Current server: NUMA
NUMA solves the bottleneck of the SMP architecture memory bus, ensuring that each CPU has its own private memory and memory bus; what if the memory of the CPU is not enough? Through the CPU bus (QPI or UPI) negotiate with other CPUs to borrow. Nothing can be perfect. NUMA has its own problems, especially in database and virtualization scenarios. There are performance problems in certain situations: 1. Cross-CPU access to memory (that is, borrowing memory from other CPUs) is better than accessing the CPU The memory efficiency is low. 2. There will be an imbalance between memory and CPU access: such as 4 CPUs, the data to be accessed by CPU1 happens to be in the memory of CPU0.
Tips: In database scenarios, experienced DBAs will require NUMA to be closed.
3) MPP
Under SMP|NUMA architecture, all CPUs are in one server, and the operating system is also one
MPP is actually that multiple servers of SMP|NUMA are connected together through the network, and each server has its own operating system; MPP is more a computer that relies on the operating system or distributed software between multiple servers to coordinate and dispatch the logical composition. Or service; essentially it should belong to a modern distributed architecture. Program = algorithm + data structure, where the algorithm can be regarded as CPU processing, and the data structure can be regarded as data storage, then it is obvious that there are two directions for expansion, CPU expansion and storage expansion; at this time it has evolved into scale-out and scale-up. The limitations of scale-up are obvious. No matter how awesome it is, there will always be one day; scale-out means that calculation and storage can always be linearly expanded. This is also the reason why distributed systems are popular.
Comments
Post a Comment