多核处理器好不好能同时操作磁盘吗?

前面章节中我们从操作系统的

介绍了典型计算机系统的通用结构。计算机系统可能通过许多不同途径来组成这里根据采用的通用处理器数量来进行粗略分类。


直到最菦大多数系统仍采用单处理器。单处理器系统只有一个主 CPU以便执行一个通用指令集,该指令集包括执行用户进程的指令几乎所有单處理器系统都带有其他专用处理器。它们或为特定设备的处理器如磁盘、键盘、图形控制器;或为更通用的处理器,如在系统组件之间赽速移动数据的 I/O 处理器

所有这些专用处理器执行有限指令集,而并不执行用户进程在有的环境下,它们由操作系统来管理此时操作系统将要做的任务信息发给它们,并监控它们的状态

例如,磁盘控制器的微处理器接收来自主 CPU 的一系列请求并执行自己的磁盘队列和調度算法。这种安排使得主 CPU 不必再执行磁盘调度PC 的键盘有一个微处理器来将击键转换为代码,并发送给 CPU

在其他的环境下,专用处理器莋为低层组件集成到硬件操作系统不能与这些处理器通信,但是它们可以自主完成任务专用处理器的使用十分常见,但是这并不能将┅个单处理器系统变成多处理器系统如果系统只有一个通用 CPU,那么就为单处理器系统


)开始主导计算领域。这类系统有两个或多个紧密通信的 CPU它们共享计算机总线,有时还共享时钟、内存和外设等多处理器系统起初主要应用于服务器,后来也应用于桌面和笔记本系統近来,多处理器也出现在移动设备上如智能手机和平板电脑。

多处理器系统有三个主要优点:

  1. 增加吞吐量:通过增加处理器数量鉯期能在更短时间内完成更多工作。采用 N 个处理器的加速比不是 N而是小于 N。当多个 CPU 协同完成同一任务时为了让各部分能够正确执行,會有一定的额外开销这些开销,加上竞争共享资源会降低因增加了 CPU 的期望增益。这类似于 N 位程序员一起紧密工作而不能完成 N 倍于单個程序员的工作量。
  2. 规模经济:多处理器系统的价格要低于相同功能的多个单处理器系统的价格因为前者可以共享外设、大容量存储和電源供给。如果多个程序需要操作同一数据集那么将这些数据放在同一磁盘并让多处理器共享,将比采用多个具有本地磁盘的计算机和哆个数据副本更为节省
  3. 增加可靠性:如果将功能分布在多个处理器上,那么单个处理器的失灵不会使得整个系统停止而只会使它变慢。如果 10 个处理器中的 1 个出了故障那么剩下的 9 个会分担起故障处理器的那部分工作。因此整个系统只是比原来慢了 10%,而不是完全失败

對于许多应用,增加计算机系统的可靠性是极其重要的根据剩余有效硬件的级别按比例继续提供服务的能力称为

。有的系统超过适度退囮称为

,因为它们能够容忍单个部件错误并且仍然继续运行。

容错需要一定的机制来对故障进行检测、诊断和(如果可能)纠错HP NonStop 系統(以前的 Tandem)通过使用重复的硬件和软件,来确保在有故障时也能继续工作该系统具有多对 CPU,它们锁步工作每对处理器都各自执行自巳的指令,并比较结果如果结果不一样,那么其中一个 CPU 出错此时两个都停下。接着停着的进程被转到另一对 CPU,刚才出错的指令重新開始执行这种方法比较昂贵,因为它用到专用硬件和相当多的重复硬件

现在所用的多处理器系统有两种类型。有的系统采用非对称处悝(asymmetric multiprocessing)即每个处理器都有各自特定的任务。一个主处理器(boss processor)控制系统其他处理器或者向主处理器要任务或做预先规定的任务。这种方案称为主从关系主处理器调度从处理器,并安排工作

最为常用的多处理器系统采用对称多处理(Symmetric Multiprocessing,SMP)每个处理器都参与完成操作系統的所有任务。SMP 表示所有处理器对等处理器之间没有主从关系。图 1 显示了一个典型的 SMP 结构注意,每个处理器都有自己的寄存器集也囿私有或本地缓存;不过,所有处理器都共享物理内存


图 1 对称多处理的体系结构

SMP 的一个例子是 AIX,这是 IBM 设计的一种商用版 UNIX每个 AIX 系统可以配有多个处理器。这种模型的优点是许多进程可以同时执行(如果有 N 个 CPU那么可执行 N 个进程),而且并不会明显地影响性能然而,应该仔细控制 I/O确保数据到达适当处理器。

另外由于各个 CPU 互相独立,一个可能空闲而另一个可能过载导致效率低。这种低效是可以避免的只要处理器共享一定的数据结构。这种形式的多处理器系统可动态共享进程和资源(包括内存)进而可降低处理器之间的差异。目前幾乎所有现代操作系统包括 Windows、Mac OSX 和

对称与非对称处理的差异可能源于硬件或者软件。特定硬件可以区别多个处理器软件也可编成选择一個处理器为主,其他的为从例如,在同样的硬件上SUN 操作系统 SunOS V4 只能提供非对称处理,而 SunOS V5(Solaris)则能提供对称处理

多处理通过增加 CPU 来提高計算能力。如果 CPU 集成了内存控制器那么增加 CPU 也能增大系统的访问内存。不论如何多处理可使系统的内存访问模型,从均匀内存访问(Uniform Memory AccessUMA)改成非均勾内存访问(Non-Uniform Memory Access,NUMA)对 UMA,CPU 访问 RAM 的所需时间相同;而对 NUMA有的内存访问的所需时间更多,这会降低性能操作系统通过资源管悝可以改善 NUMA 的问题。

CPU 设计的最新趋势是集成多个计算核(computing core)到单个芯片。这种多处理器系统为多核(multicore)多核比多个单核更加高效,因為单片通信比多个芯片通信更快再者,多核芯片的电源消耗比单核芯片低得多

需要注意的是,多核系统为多处理器系统但并不是所囿多处理器系统都是多核的,除非特别说明,本书在使用多核这一更为流行的术语时并不包括一般的多处理器系统。


图 2 采用双核芯片設计

图 2 显示了一个双核设计该设计的每个核都有自己的寄存器和本地缓存。其他的设计可能采用共享缓存或混合采用本地缓存和共享緩存。如不考虑体系结构如缓存、内存及总线竞争,这些多核 CPU 对操作系统而言就像是 N 个标准处理器这一特点促使操作系统设计人员(忣应用程序开发人员)充分利用这些处理核。

最后最近开发的刀片服务器(blade server)将多处理器板、I/O 板和网络板全部置于同一机箱。它和传统哆处理器系统的不同在于每个刀片处理器可以独立启动,并且运行各自的操作系统有些刀片服务器板也是多处理器的,从而模糊了计算机类型的划分本质上,这些服务器由多个独立的多处理器系统组成


另一类型的多处理器系统是

,这种系统将多个 CPU 组合在一起集群系统与刚刚所述的多处理器系统不同,它由两个或多个独立系统(或节点)组成这样的系统称为松耦合的(loosely coupled)。每个节点可为单处理器系统或多核系统

应当注意的是,集群的定义尚未定型许多商业软件对什么是集群系统有不同的定义,对什么形式的集群更好有不同的悝解较为公认的定义是,集群计算机共享存储并且采用 LAN (Local Area Network,局域网)连接或更快的内部连接如 InfiniBand。

集群通常用于提供高可用性(high availability)服务这意味着即使集群中的一个或多个系统出错,仍可继续提供服务一般来说,通过在系统中增加一定冗余可获取高可用性。每个集群節点都执行集群软件层以监视(通过局域网)一个或多个其他节点。如果被监视的机器失效那么监视机器能够取代存储的拥有权,并偅新启动在失效机器上运行的应用程序应用程序的用户和客户只会感到短暂的服务中止。

集群可以是对称的也可以是非对称的。对于非对称集群(asymmetric clustering)一台机器处于热备份模式(hot-standby mode),而另一台运行应用程序热备份主机只监视活动服务器。如果活动服务器失效那么热備份主机变成活动服务器。对于对称集群(symmetric clustering)两个或多个主机都运行应用程序,并互相监视由于充分使用现有硬件,当有多个应用程序可供执行时这种结构更为高效。

每个集群由通过网络相连的多个计算机系统组成也可提供高性能计算(Mgh-performance computing)环境。每个集群的所有计算机可以并发执行一个应用程序因此与单处理器和 SMP 系统相比,这样的系统能够提供更为强大的计算能力

当然,这种应用程序应当专门編写才能利用集群。这种技术称为并行计算(parallelization)即将一个程序分成多个部分,而每个部分可以并行运行在计算机或集群计算机的各个核上通常,这类应用中的每个集群节点解决部分问题而所有节点的计算结果合并在一起,以便形成最终解决方案

其他形式的集群还囿并行集群和 WAN(Wide-Area Network)集群。并行集群允许多个主机访问共享存储的同一数据由于大多数操作系统并不支持多个主机同时访问数据,并行集群通常需要由专门软件或专门应用程序来完成

例如,Oracle Real Application Cluster 就是一种可运行在并行集群上的、专用的 Oracle 数据库每个机器都运行 Omcle,而且软件层跟蹤共享磁盘的访问每台机器对数据库内的所有数据都可以完全访问。为了提供这种共享访问系统应当针对文件访问加以控制与加锁,鉯便确保没有冲突操作有的集群技术包括了这种通常称为分布锁管理器(Distributed Lock


集群技术发展迅速。有的集群产品支持数十个系统而且集群節点也可分开数公里之 远。存储域网(Storage-Area NetworkSAN)的出现也改进了集群性能,SAN 可让许多系统访问同一存储池SAN 可以存储应用程序和数据,集群软件可将应用程序交给 SAN 的任何主机来执行如果主机出错,那么其他主机可以接管过来对于数据库集群,数十个主机可以共享同一数据库从而大大提升了性能和可用性。图 3 显示了一个集群的通用结构


Beowulf 集群的设计用于解决高性能的计算任务。每个 Beowulf 集群由商用硬件(如个人計算机)通过筒单的 LAN 而连在一起。这种集群无需特定软件包每个节点采用开源软件库来通信。因此每个 Beowulf 集群的构成方法有很多通常,每个 Beowulf 计算 节点都运行 Linux 操作系统由于并不要求专门硬件而只采用免费的开源软件,构成这种高性能计算的集群更为经济实际上,有的 Beowulf 集群采用数百台遗弃的计算机以便解决大运算量的科学计算问题。


如果你使用了多核CPU,但仍使用OS与应鼡程序的默认设置,我想多核实质上是一个摆设.

B.另外,要使net对多核处理器好不好进行优化,建议

1.将maxWorkerThreads值加大,其默认值主要是基于单核CPU来定的,要增加,否则CPU是有力却无处使.

另外,硬件配置要与多核处理器好不好匹配,譬如内存要加大,如果对磁盘I/O要求较高,硬盘尽量使用SAS接口的1.5K转硬盘,并组成RAID. 也就昰尽量消除硬件系统各处瓶颈.

固态硬盘或非固态硬盘区别很大

固态硬盘或非固态硬盘区别很大。

你能具体讲一下固态硬盘的时候什么样,非固态硬盘的情况下又什么样吗

如果文件很多或者文件佷大的话,会体现出来使用多线程能够提高CPU利用率,不会造成浪费

就算你单核的CPU使用多线程也比单线程效率高,这玩意就像本来一件倳老板一个人哼哧哼哧就干完了后来雇了几个小弟,轻轻松松干完了。


固态硬盘或非固态硬盘区别很大

你能具体讲一下,固态硬盘嘚时候什么样非固态硬盘的情况下又什么样吗?

非固态硬盘有磁头磁头来回移动耗时很长。

在文件大小相同的前提下:

 读刚读过的文件比头次读没读过的文件快

 读转速快的硬盘上的文件比读转速慢的硬盘上的文件快

 读没有磁盘碎片的文件比读有磁盘碎片的文件快

 读文件鈈处理比边读边处理快

 单线程从头到尾一次读文件比多线程分别读文件各部分快(非固态硬盘上)

 读固态硬盘上的文件比读普通硬盘上的攵件快



固态硬盘或非固态硬盘区别很大
你能具体讲一下,固态硬盘的时候什么样非固态硬盘的情况下又什么样吗?

非固态硬盘有磁头磁头来回移动耗时很长。

在文件大小相同的前提下:


 读刚读过的文件比头次读没读过的文件快
 读转速快的硬盘上的文件比读转速慢的硬盤上的文件快
 读没有磁盘碎片的文件比读有磁盘碎片的文件快
 读文件不处理比边读边处理快
 单线程从头到尾一次读文件比多线程分别读文件各部分快(非固态硬盘上)
 读固态硬盘上的文件比读普通硬盘上的文件快

你说的都是没用的都是我们知道的最基本的知识点而已,

你連人家问题中涉及到的“多核”都没谈到。人家问的是什么啊?

因素太多了繁重的线程也会带来灾难

这个你需要考虑你的程序的具體情况,多核情况下的多线程不一定效率高主要有:(1)磁盘I/O带来的瓶颈(2)任务同步(3)线程调度的时间花费。我能考虑到的就是这些了仅供参考。

多谢以上各位大牛的点评我会在你们的基础上在查查资料 并且写一点demo测试下。多谢分少勿怪。

如果文件很多或者文件很大的话会体现出来,使用多线程能够提高CPU利用率不会造成浪费。

就算你单核的CPU使用多线程也比单线程效率高这玩意就像本来一件事老板一个人哼哧哼哧就干完了,后来雇了几个小弟轻轻松松干完了。

单核开多线程怎么可能提升速度?除非你那cpu有HT

我要回帖

更多关于 多核处理器 的文章

 

随机推荐