什么是SMP系统

SMP(Symmetric Multi-Processing),对称多处理结构的简称,是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。在这种技术的支持下,一个服务器系统可以同时运行多个处理器,并共享内存和其他的主机资源。像双至强,也就是我们所说的二路,这是在对称处理器系统中最常见的一种(至强MP可以支持到四路,AMD Opteron可以支持1-8路)。也有少数是16路的。但是一般来讲,SMP结构的机器可扩展性较差,很难做到100个以上多处理器,常规的一般是8个到16个,不过这对于多数的用户来说已经够用了。在高性能服务器和工作站级主板架构中最为常见,像UNIX服务器可支持最多256个CPU的系统。  

  构建一套SMP系统的必要条件是:支持SMP的硬件包括主板和CPU;支持SMP的系统平台,再就是支持SMP的应用软件。  

  为了能够使得SMP系统发挥高效的性能,操作系统必须支持SMP系统,如WINNT、LINUX、以及UNIX等等32位操作系统。即能够进行多任务和多线程处理。多任务是指操作系统能够在同一时间让不同的CPU完成不同的任务;多线程是指操作系统能够使得不同的CPU并行的完成同一个任务。  

  要组建SMP系统,对所选的CPU有很高的要求,首先、CPU内部必须内置APIC(Advanced Programmable Interrupt Controllers)单元。Intel 多处理规范的核心就是高级可编程中断控制器(Advanced Programmable Interrupt Controllers--APICs)的使用;再次,相同的产品型号,同样类型的CPU核心,完全相同的运行频率;最后,尽可能保持相同的产品序列编号,因为两个生产批次的CPU作为双处理器运行的时候,有可能会发生一颗CPU负担过高,而另一颗负担很少的情况,无法发挥最大性能,更糟糕的是可能导致死机。

另答:SMP: Symmetric MultiProcessing,即对称多处理。指在一个计算机上汇集了一组处理器(多CPU)。它们共享内存及总线结构,系统将处理任务队列对称地分布于多个CPU上,从而极大地提高了系统的数据处理能力。随着应用水平的提高,单个处理器很难满足实际的应用需求,因而服务器厂商纷纷采用对称多处理系统来解决这一矛盾。PC服务器中最常见的对称多处理系统采用2路、4路或8路处理器,UNIX服务器可支持最多64个CPU系统,如Sun 公司的产品E10000。SMP系统中最关键的技术问题是如何更好地解决多处理器的协调和通讯。

转载自:http://blog.163.com/nangong127@126/blog/static/38590245200781195434667/

### SMP存储定义 SMP(Symmetric MultiProcessing,对称多处理)是一种用于多处理器系统的计算架构设计模式。在这种架构下,多个处理器共同协作完成任务,并通过共享同一片物理内存来进行通信和数据交换[^2]。 在SMP系统中,所有的CPU都具有平等的地位,能够访问相同的资源池,包括I/O设备、缓存以及主存。这种结构使得操作系统可以灵活调度任何可用的处理器去运行进程或线程,而无需考虑具体哪个核心正在工作。 --- ### SMP存储原理 从硬件层面分析,SMP中的内存屏障机制(如`smp_wmb()` 和 `smp_rmb()`)对于维护一致性和同步至关重要。这些函数通常通过对底层处理器及其关联组件(例如缓存层次结构、总线协议等)的操作来实现。它们确保写入操作按照程序指定顺序提交到全局可见状态,防止因乱序执行引发错误行为。 此外,在软件方面,为了支持高效并发管理,现代OS都会提供锁原语和其他同步工具供开发者调用。这允许应用程序安全地更新共享变量而不破坏整体一致性模型。 --- ### 使用场景 #### 高性能计算环境 由于具备强大的并行能力,因此非常适合应用于科学仿真模拟等领域内的复杂数值运算任务之中。这里需要强调的是,尽管单节点内部实现了高度集成化的互联网络以减少延迟时间,但随着规模扩大仍不可避免面临扩展瓶颈问题[^4]。 #### 数据库管理系统(DBMS) 许多关系型DBMS也采用了类似的思路构建其事务处理引擎部分。比如Oracle RAC(Real Application Clusters),它允许多台服务器实例同时读取同一个磁盘上的相同数据集副本,从而提高吞吐率和服务水平目标(SLO)[^3]. #### 虚拟化平台 像VMware ESXi这样的hypervisor产品利用主机上配置好的NUMA节点布局信息合理分配虚拟机放置位置,进而达到最佳性能表现的目的。同样道理适用于容器编排框架Kubernetes当中node affinity rules的设计理念之上[^1]。 ```python import multiprocessing as mp def worker(shared_memory_block): """ A simple function demonstrating access to shared memory """ with shared_memory_block.get_lock(): value = int.from_bytes(shared_memory_block.buf[:8], 'big') new_value = (value + 1).to_bytes(8,'big') shared_memory_block.buf[:8] = new_value if __name__ == "__main__": shm = mp.shared_memory.SharedMemory(create=True,size=8) p_list=[mp.Process(target=worker,args=(shm,))for _ in range(mp.cpu_count())] for proc in p_list: proc.start() for proc in p_list: proc.join() final_val=int.from_bytes(shm.buf[:8],'big') print(f"After {len(p_list)} increments, the result is:{final_val}") shm.close() shm.unlink() ``` 上述代码片段展示了如何创建一块跨进程可写的共享内存区域,并让不同子进程对其进行原子级别的修改操作演示了典型的SMP编程范式之一。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值