Linux 下多核CPU知识【转】

转自:http://www.cnblogs.com/dongzhiquan/archive/2012/02/16/2354977.html

1. 在Linux下,如何确认是多核或多CPU:

#cat /proc/cpuinfo

如果有多个类似以下的项目,则为多核或多CPU:

processor  : 0

......

processor  : 1

2. Linux下,如何看每个CPU的使用率:

#top -d 1

之后按下1. 则显示多个CPU

Cpu0  :  1.0%us,  3.0%sy,  0.0%ni, 96.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st 
Cpu1  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

3. 如何察看某个进程在哪个CPU上运行:

#top -d 1

之后按下f.进入top Current Fields设置页面:

选中:j: P  = Last used cpu (SMP)

则多了一项:P 显示此进程使用哪个CPU。

Sam经过试验发现:同一个进程,在不同时刻,会使用不同CPU Core.这应该是Linux Kernel SMP处理的。

4. 配置Linux Kernel使之支持多Core:

内核配置期间必须启用 CONFIG_SMP 选项,以使内核感知 SMP。

Processor type and features  ---> Symmetric multi-processing support

察看当前Linux Kernel是否支持(或者使用)SMP

#uname -a

5. Kernel 2.6的SMP负载平衡:

在 SMP 系统中创建任务时,这些任务都被放到一个给定的 CPU 运行队列中。通常来说,我们无法知道一个任务何时是短期存在的,何时需要长期运行。因此,最初任务到 CPU 的分配可能并不理想。

为了在 CPU 之间维护任务负载的均衡,任务可以重新进行分发:将任务从负载重的 CPU 上移动到负载轻的 CPU 上。Linux 2.6 版本的调度器使用负载均衡(load balancing) 提供了这种功能。每隔 200ms,处理器都会检查 CPU 的负载是否不均衡;如果不均衡,处理器就会在 CPU 之间进行一次任务均衡操作

这个过程的一点负面影响是新 CPU 的缓存对于迁移过来的任务来说是冷的(需要将数据读入缓存中)。

记住 CPU 缓存是一个本地(片上)内存,提供了比系统内存更快的访问能力。如果一个任务是在某个 CPU 上执行的,与这个任务有关的数据都会被放到这个 CPU 的本地缓存中,这就称为热的。如果对于某个任务来说,CPU 的本地缓存中没有任何数据,那么这个缓存就称为冷的

不幸的是,保持 CPU 繁忙会出现 CPU 缓存对于迁移过来的任务为冷的情况。

6. 应用程序如何利用多Core :

开发人员可将可并行的代码写入线程,而这些线程会被SMP操作系统安排并发运行。

另外,Sam设想,对于必须顺序执行的代码。可以将其分为多个节点,每个节点为一个thread.并在节点间放置channel.节点间形如流水线。这样也可以大大增强CPU利用率。

时间: 2024-10-15 06:17:31

Linux 下多核CPU知识【转】的相关文章

Linux下查看CPU型号,内存大小,硬盘空间的命令(详解)_Linux

1 查看CPU 1.1 查看CPU个数 # cat /proc/cpuinfo | grep "physical id" | uniq | wc -l 2 **uniq命令:删除重复行;wc –l命令:统计行数** 1.2 查看CPU核数 # cat /proc/cpuinfo | grep "cpu cores" | uniq cpu cores : 4 1.3 查看CPU型号 # cat /proc/cpuinfo | grep 'model name' |un

linux下查看cpu信息的方法

#Cat /proc/cpuinfo linux下 /proc/cpuinfo 文件会显示cpu的信息 processor 会从0开始记数,继续下去多个cpu flags 如果有 ht 说明支持超线程技术 判断物理CPU的个数可以查看physical id 的值,相同则为同一个物理CPU processor : 4 vendor_id : GenuineIntel cpu family : 15 model : 4 model name : Intel(R) Xeon(TM) CPU 3.00G

linux下的病毒知识

一.Linux平台下病毒种类 目前来看,Linux平台下的病毒主要分为以下4大类: (1)可执行文件型病毒,指能够寄生在文件中的以文件为主要感染对象的病毒. (2)蠕虫(worm)病毒,Linux平台下的蠕虫病毒极为猖獗,像利用系统漏洞进行传播的ramen. lion. Slapper等,这些病毒都感染了大量的Linux系统,造成了巨大的损失. (3)脚本病毒,多为使用shell脚本语言编写的病毒,这类病毒编写较为简单,但破坏力却同样惊人,像以.sh结尾的脚本文件,一个短短数十行的shell脚本

Linux下的CPU利用率计算原理详解

原文转自:http://server.51cto.com/sCollege-188250.htm 我们在搞性能测试的时候,对后台服务器的CPU利用率监控是一个常用的手段.服务器的CPU利用率高,则表明服务器很繁忙.如果前台响应时间越来越大,而后台CPU利用率始终上不去,说明在某个地方有瓶颈了,系统需要调优.这个是即使不懂技术的人都容易理解的事情. 上面理解对吗?我个人觉得不十分准确.这个要看后台你测试的进程是什么类型的.如果是计算密集型的进程,当前端压力越来越大的时候,很容易把CPU利用率打上去

Linux下查看CPU信息[/proc/cpuinfo]

最近在研究linux系统负载的时候,接触到一些关于CPU信息查看的知识,和大家分享一下.通过对/proc/cpuinfo文件中的参数的分析,也学到了不少东西. 在linux操作系统中,CPU的信息在启动的过程中被装载到虚拟目录/proc下的cpuinfo文件中,我们可以通过 cat /proc/cpuinfo 查看一下: 上图是本人电脑的CPU信息,下面我们来分析其中几个比较重要的指标: processor     逻辑处理器的id. physical id    物理封装的处理器的id. co

Linux下获得CPU利用率和内存使用情况

在Linux中如果要监视一个进程的运行情况,如查看它的CPU使用效率和内存使用情况,就需要从系统的/proc目录的读取一些系统信息.然后分析得到结果,特别是在嵌入式中的应用程序这个功能就很重要.本文中的代码是从top命令的源代码分析中获得,并做了部分修改,在FC6+GCC4.1调试通过.从这个工程中我也获得一些感悟. 1. Linux系统很优雅,如果在Windows中做这个功能就需要调用ActiveX控件.而在Linux中只需要读取文本. 2.想完成什么功能,如果不知道怎么做,就想有没有没有其它

Linux下判断cpu物理个数、几核

自己服务器的输出  1. 查看物理CPU的个数   #cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l    1 2. 查看逻辑CPU的个数 #cat /proc/cpuinfo |grep "processor"|wc -l  8 3. 查看CPU是几核 #cat /proc/cpuinfo |grep "cores"|uniq  cpu cores : 4 4. 查看CPU的主频 #

Linux下查看CPU型号,内存大小,硬盘空间命令

  1 查看CPU 1.1 查看CPU个数 # cat /proc/cpuinfo | grep "physical id" | uniq | wc -l 2 **uniq命令:删除重复行;wc –l命令:统计行数** 1.2 查看CPU核数 # cat /proc/cpuinfo | grep "cpu cores" | uniq cpu cores : 4 1.3 查看CPU型号 # cat /proc/cpuinfo | grep 'model name' |

Linux下RAID磁盘阵列知识

1. 摘要 早在1978年美国加州大学伯克利分校就提出了RAID虚拟存储系统.RAID全称:Redundant Array of Independent Disk,独立冗余磁盘阵列.其思想是将多块独立的磁盘按不同的方式组合为一个逻辑磁盘,从而提高存储容量或提升存储性能或提供数据备份功能.RAID存储系统的组合方式根据RAID级别定义. RAID种类:软件RAID,硬件RAID.在现有的操作系统中如Windows.Linux.Unix等已经集成了软RAID的功能.软RAID可以实现与硬件RAID相