CPU pentixiongmaonum4HT以上是什么意思

> 调节CPU频率和北桥NB频率选项
资深版主手把手教您超频K10架构处理器
责任编辑:李鹏飞 【转载】
调节频率和北桥NB频率选项:
调节频率和北桥NB频率选项
   Overclocking Configurat ion-北桥NB频率调节和CPU倍频调节& (将会在下面详细解释)&
  CPU-NB HT Link Speed-CPU-HT总线频率调节
  他的计算方式是:设置的基数X外频=最终的CPU-HT频率,比如CPU-NB HT Link Speed设置X7,外频是200的话那么CPU-HT最终的频率是:200X7=1400MHZ
  注意事项:CPU-HT必须要小于北桥NB频率,或者同步。
  Advanced Clock Calibration-ACC调节选项,经过实践,超高频的时候关闭他,实践证明这项功能几乎无用。个人认为。不过这项功能还有另外一个用处,那就是把AMD II X3 720系列破解出第四个核心,和将AMD II X4 810破解出第三级缓存,不过这些需要您的的支持,需要运气,不可能每颗处理器都能破解。如果AMD II X3 720编号是0904的就可以试试。
  CPU/HT Reference Clock (MHz)-CPU外频调节选项
  主频的频率计算方式是:外频X倍频=主频
  献给那些还没有买的人:ACC能破解出AMD II 720三核的另一颗核心。这必须要主板的南桥是SB 750或者SB 710才能有这项功能。
频道热词:&&&&&&
精彩内容推荐
CPU评测热点
排行 文章标题
TOP10周热门CPU排行榜
商家报价:
27用户点评
商家报价:
11用户点评
商家报价:
21用户点评
商家报价:
71用户点评
商家报价:
16用户点评
商家报价:
71用户点评
商家报价:
商家报价:
27用户点评
商家报价:
21用户点评
商家报价:博客访问: 1026729
博文数量: 281
博客积分: 10851
博客等级: 上将
技术积分: 2637
注册时间:
分类: LINUX 12:42:54
一. 如何判断你的CPU支持超线程技术
Intel introduced Hyper-Threading Technology (HT) in its line of Xeon processors in 2002. HT Technology enables multiprocessor servers to act as if they had twice as many processors installed. Intel’s HT Technology allows a single processor to handle two independent sets of instructions at the same time. In essence, HT Technology converts a single physical processor into two virtual processors. Currently HT is present in other Intel CPUs besides the high level Xeons, like Pentium 4 (with 800MHz CPU bus speed) or Pentium 4 Extreme Edition and the dual-core Pentium Extreme Edition.For more details see Intel’s site:
In order to make use of Hyper-Threading in Linux, you will need Hyper-Threading enabled in kernel. But how can you find out if your CPU supports HT? We can get the information from our running Linux system about its CPU by looking into /proc. For example, bellow you can see the output taken from a Xeon system:
# cat /proc/cpuinfo&processor : 0&vendor_id : GenuineIntel&cpu family : 15&model : 4&model name : Intel(R) Xeon(TM) CPU 3.20GHz&stepping : 3&cpu MHz : &cache size : 2048 KB&physical id : 0&siblings : 2&core id : 0&cpu cores : 1&fdiv_bug : no&hlt_bug : no&f00f_bug : no&coma_bug : no&fpu : yes&fpu_exception : yes&cpuid level : 5&wp : yes&flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm pni monitor ds_cpl cid cx16 xtpr&bogomips : 6404.17&Inside the flags section we are looking for a “ht” flag. If it is present, this means that the system supports HT.Let’s look on another sample taken from a Pentium4 CPU (the un-needed infos were removed):&model name : Intel(R) Pentium(R) 4 CPU 3.20GHz&cpu MHz : &flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm
Again this system also supports HT. If you don’t see the HT flag, then your system doesn’t support HT. Obviously this will not be available on AMD processors as this is an Intel technology (this might not be true anymore with newer AMD CPUs). Here is an example from an AMD Opteon system:
&model name : AMD Opteron(tm) Processor 242&cpu MHz : &flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext lm 3dnowext 3dnow
If your CPU supports HT, then you can take advantage of this technology only if HT support is enabled in your running kernel. You can either install a kernel provided by your Linux distribution with HT support (one that has *SMP* inside its name for ex.) or you can compile your own kernel and include HT support.
Once you are running a HT enabled kernel your should normally see the virtual CPU as a regular extra CPU (you will see 2 CPUs on a single CPU system, 4 CPUs on a dual processor system, etc.). You can easily check this with:# cat /proc/cpuinfo
If you still see only one CPU even after you have installed a HT enabled kernel, then you might want to check:1. HT is not disabled in BIOS.2. APCI is enabled in BIOS.
INTEL的官方文档对/proc/info里面的ht标志的解释: "ht" in 'flags' field of /proc/cpuinfo indicate that the processor supports the Machine SpecificRegisters to report back HT or multi-core capability.
Best way to check Hyper-threading feature in Linux Run "dmidecode -t processor" and grep for the entry "HTT" from the result.
Sample output:[root@server10 ~]# dmidecode -t processor | grep HTTHTT (Hyper-threading technology)HTT (Hyper-threading technology)[root@server10 ~]#
So if Hyper-threading is enabled, the count of Logical Processors would be double the number of CPU cores that you got on the server.To find the number of CPU cores, you either use "dmidecode -t processor" command or check the number of Physical IDs from "/proc/cpuinfo" output.
Please be aware the “ht” entry in /proc/cpuinfo output is a confusing flag. It may be definite for CPU with single core but not for multi-core CPU. Enabling HT should be done at BIOS level.
当cpu是单核的时候, ht标志可以确切地表示该cpu支持超线程, 如果是多核的cpu, ht标志不一定表示这个cpu支持超线程!
INTEL官方文档的具体解释:2. Detecting Hardware Multi-threading and Multi-core topology in 2.6 LinuxMultiple logical threads (HT) or execution cores (MC) in a physical package appear to the operating system as multiple logical processors (similar to SMP environment). For example, Dual-Core Intel Xeon? processor 7100 series provides four logical processors for each physical package in the platform, as it is a dual-core processor with HT Technology enabled.Linux kernel exports the multi-threading and multi-core topology to the applications using two mechanisms. Applications can use the topology information for number of purposes such as application licensing, binding application threads/processes to a specific group of threads/cores/physical packages to achieve peak throughput.
2.1 Exporting through ‘proc’ file system:/proc/cpuinfo contains information about the different CPUs in the system. This proc file also exports the multi-threading and multi-core topology information as seen by the OS. This is the legacy mechanism of exporting topology information to the user, which started initially when Hyper-threading got introduced."ht" in 'flags' field of /proc/cpuinfo indicate that the processor supports the Machine Specific Registers to report back HT or multi-core capability. Additional fields (listed down below) in the CPU records of /proc/cpuinfo will give more precise information about the CPU topology as seen by the operating system.
"physical id"&& Physical package id of the logical CPU"siblings"&&&&& Total number of logical processors(includes both threads and cores) in the physical package currently in use by the OS"cpu cores"&&&& Total number of cores in the physical package currently in use by the OS"core id"&&&&&& Core id of the logical CPU
Legacy HT optimized applications parse "ht" flag and "physical id", "siblings" fields in /proc/cpuinfo for identifying physical packages in the system. This package identification will be used for example in application licensing purposes or in binding a process to a specific physical package. These applications require no change and will work as it is on a multi-threaded and/or multi-core system if they require only the logical CPU to a physical package mapping.To identify if the physical package is purely multi-threaded or purely multi-core capable or both, then in addition to the "ht" flag, applications need to parse all the above mentioned fields.Following logic can be used to identify the CPU capabilities as seen by the OS.
"siblings == cpu cores >= 2"- Indicates that the physical package is multi-core capable and is not Hyper-threading capable"siblings >= 2" && "cpu cores == 1"- Indicates that the physical package is Hyper-threading capable and has one cpu core"siblings > cpu cores > 1"- Indicates that the physical package is both Hyper-threading and multi-core capable
To build the complete topology of which logical cpus belong to which CPU core and/or physical package, application need to parse "physical id" and "core id" fields. For two logical cpus, if both these ids are same, then they belong to same core (Hyper-Threading siblings). If they have same physical package id and different core id, then they belong to same physical package (core siblings).
2.2 Exporting through ‘sysfs’ file systemMore recent Linux Kernels [LK] (like 2.6.17) have the CPU topology exported in sysfs as well.This mechanism is simpler and faster compared to the previously mentioned /proc interface.Below listed fields exported under /sys/devices/system/cpu/cpuX/topology/ provide the complete topology information.physical_package_id&&&&&&&& Physical package id of the logical CPUcore_id&&&&&&&&&&&&&&&&&&&& Core id of the logical CPUcore_siblings Siblings&&&&& mask of all the logical CPUs in a physical packagethread_siblings Siblings&&& mask of all the logical CPUs in a CPU core
Hamming Weight (number of bits set) of siblings mask will give the physical package capabilities. (“哈明权”(Hamming weight)。这指代码中1的个数。如01110的哈明权为3。)“HW(core_siblings) == HW(thread_siblings) >= 2”- Indicates that the physical package is Hyper-threading capable and has one cpu core“HW(core_siblings) >= 2” && “HW(thread_siblings) == 1”- Indicates that the physical package is multi-core capable and is not Hyper-threading capable“HW(core_siblings) > HW(thread_siblings) > 1”- indicates that the physical package is both Hyper-threading and multi-core capable
二. 如何启用超线程?&&& 1. bios里面打开ht&&& 2. bios里面打开APIC&&& 3. 内核支持ht(SMP内核)
阅读(1133) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~
请登录后评论。博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)查看: 10099|回复: 14
超线程威力有多强?i7/i5/i3纵向对比
Intel的酷睿i系列是现今桌面处理器的最强性能的代表,拥有一系列引以为傲的独家技术。Core i系列相比上代产品的进步是非常多的,比如全新的总线传输,智能睿频加速,集成内存控制器等等。。。其中,超线程技术可谓最令人捉摸不透,也是最具争议的一项功能。
& & 当你的CPU支持HT,就以为着你有多核心可以用,拥有一颗“8核”、“12核”的CPU听起来很爽。不过,这些技术并不是免费的,比如带有睿频的i5比i3,支持超线程技术的i7 800则比i5 700都要贵一些,而他们的区别仅仅在于超线程技术,我们多花的这些钱到底是否有用,这是我们需要知道的答案。
四核CPU开启/关闭HT区别(点击看大图)& & 在多任务/多线程应用中,超线程技术可以带来巨大的帮助和性能提升,有效的充分利用CPU性能,而在单任务及并未对多线程优化的程序中,HT将会毫无用武之地。在官方说明中,宣称HT技术可以令CPU的效率提高40%以上,也有人会说HT玩游戏没区别,还不如不支持超线程的好。很显然,在不同的应用中,超线程的表现、作用都不一样。那么,超线程技术究竟有多大的威力?有多少地方可以用到它呢?
超线程技术介绍与解析
& & HT超线程技术,也就是Hyper-Threading,是Intel早在2001年就提出的一种技术。尽管提高时钟频率和缓存容量可以改善英特尔Hyper-Threading技术的特点是:
& & (1)物理上用一个处理器处理多个线程
& & (2)多线程的分配采用根据计数器的空闲状态进行线程处理的SMT(simultaneous multi-threading)方式。
& & HT技术最早出现在2002年的Pentium4上,它是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高CPU的运行效率。但是,由于这个设计太过超前,奔腾4并没有借助HT大放光彩,在之后的酷睿架构中,Intel也再没有使用这个技术。然而,基于Nehalem架构的Core i7再次引入超线程技术,使四核的Corei7可同时处理八个线程操作,大幅增强其多线程性能。如今最新的32nm&&Core i3/i5 也保留着了HT功能。
测试CPU简介
& & Intel的酷睿i系列分为i3/i5/i7三大系列,型号众多,规格也各有区别,混杂着双核、四核以及六核产品,并且还有LGA 1156和LGA 1366两种不同接口。
& & 按核心及是否支持超线程来区分的话,i3 500/i5 600为2C/4T,i5 700为4C/4T,i7 800为4C/8T,i7 900为4C/8T或6C/12T。除此之外,32nm的奔腾系列GT。
& & 可以看到,除了新奔腾G系列和i5 700,其他型号的CPU都带有HT技术的支持,也就是说,Intel认为对大多数用户来说,HT技术是很有用处的。
& & 那么实际情况真的如此吗?我们这次选取了双核的i3 530以及四核的i7 870,两者都支持HT技术。想对应的,没有HT功能的i5 750的默认主频比i7 870稍低,奔腾G6950则比i3 530少了1M三级缓存,他们主要的区别就在于此是否支持HT。Core i3 530为32nm双核四线程CPU,默认主频2.93GHz,拥有4MB三级缓存,Core i7 870为45nm四核八线程CPU,默认主频2.93GHz,8MB三级缓存,并带有睿频技术。在BIOS中打开/关闭HT功能进行相同项目的测试,对比结果,看看超线程究竟能发挥多大的作用,关闭HT后的性能也可作为G6950和i5 750性能的参考。
测试平台及测试方法简介
& & 这次测试使用的平台如下:
& & 由于测试中不需要使用i3的集成GPU,所以使用一块P55的主板即可。配以双通道内存,单碟500G硬盘,大功率电源等。显卡则选用了铭瑄的GTX 480,为目前性能最强的单核心显卡,避免在测试中因显卡瓶颈限制CPU发挥。
i3 530开启HTi3 530关闭HTi7 870开启HTi7 870关闭HT& & 测试前进入BIOS,关闭节能、睿频等功能,开启/关闭HT功能分别进行测试,测试项目包括基准测试、科学计算、应用软件、3D游戏等等,对整个平台的运算、渲染、3D显示等功能进行了全面的测试。
科学运算测试
& & SuperPI是检测CPU单核心计算能力的老牌测试工具了,无论是基本性能还是超频后测试,都常常用到它。用来测试CPU基本性能非常有效。& & 在SuperPI 4M的测试中,结果显示开关HT对CPU单核心性能影响是有一点点的,关闭HT后单线程运算会快一点点。& & ★wPrime与SuperPI的检测原理类似,唯一的区别是支持多核心/多线程,可以算是SuperPI的“多核版”。& & ★Fritz Chess Benchmark是著名国际象棋游戏Fritz中带有的性能测试工具,主要用来考验CPU的运算能力,同样支持多线程。& & 这两款工具都很好的支持多线程,开启HT功能后运算能力大大提高,区别非常明显。
Sisoftware Sandra CPU性能测试
& & SiSoftware Sandra是一套功能强大的系统分析评比工具,拥有超过30种以上的分析与测试模组,还有CPU、Drives、CD-ROM/DVD、Memory 的Benchmark工具,它还可将分析结果报告列表存盘。SiSoft Sandra除了可以提供详细的硬件信息外,还可以做产品的性能对比,提供性能改进建议。& & 这次测试中进行了算术运算及多媒体运算两项测试。
& & 不论是在算术运算和多媒体运算中,HT的威力都显示出来,开启HT后成绩要高出很多。而且,我们可以看到,不管是否开启HT,i7 870的成绩基本达到i3 530的2倍,两者的主频相同,区别主要在于物理核心的数量。
在本页阅读全文(共11页)
内存性能及文件压缩测试
& & Everest是一款著名的硬件检测工具,可以识别数万种硬件并可检测电压、温度等信息,不仅如此,软件还带有简单的性能测试工具。& & 出去测量误差因素,可以看出是否开启HT对于CPU的内存性能是毫无影响的。& & ★WinRAR是经常用到的压缩软件,它自带性能测试工具,压缩/解压缩的运算主要依赖于CPU的性能以及内存性能。& & 文件压缩测试的结果和之前的运算不太一样,双核i3是否开启HT对性能影响非常大,而四核的i7就基本没有什么影响,而其单核心性能则没有什么变化。看来,四核心/线程还是很有必要的。
图片渲染及视频转码测试
& & CineBench使用针对电影电视行业开发的Cinema 4D特效软件引擎,可以测试CPU和处理器的要求极高,而且软件支持多线程操作因此本测试能够反映出处理器在高负载下进行视频多媒体内容进行压缩的性能。这次的测试内容为将一段长度为5分钟的1080P高清视频以H.264格式进行再编码,记录时间。& & 视频/音频编码也是超线程技术能发挥很大作用的一个领域,开启HT后效率大大提升,可以节省不少时间。
在本页阅读全文(共11页)
PCMark Vantage和3Dmark Vantage测试
& & PCMark Vantage可以衡量各种类型PC的综合性能。从多媒体家庭娱乐系统到笔记本,从专业工作站到高端游戏平台,无论是在专业人士手中,还是属于普通用户,都能在PCMark Vantage里了解透彻,从而发挥最大性能。其主要分为三大部分进行:1、处理器测试:基于数据加密、解密、压缩、解压缩、图形处理、音频和视频转码、文本编辑、网页渲染、邮件功能、处理器人工智能游戏测试、联系人创建与搜索。2、图形测试:基于高清视频播放、CPU都要低一些,看来单纯的双核真的不够用了。而i7则不受什么影响。
本帖最后由 woiatff 于
15:53 编辑
3D游戏测试
& & 这次测试的游戏包括:侠盗猎车4、生化危机5和战地:叛逆连队2。分别使用了DX9、DX10、DX11技术,游戏的推出时间从08~10年,是非常有代表性、十分流行的3D大型游戏。游戏测试中分辨率设置都为,画面设置为最高。& & 三个游戏的测试结果并不一致,侠盗猎车4和叛逆连队2中,四核i7是否开启HT对帧数影响非常小,而i3的区别就非常明显了,如果没有HT的支持,性能下降非常多。
测试总结:当前四线程最合适
& & 在进行的十几项测试中,我们可以看到超线程技术对CPU的运算能力、多媒体性能的帮助是显而易见的,而在一些游戏和其他日常应用中,单纯的双核心与双核四线程存在着很大的性能差距,这也是为什么i3 530要比G6950贵了不少。而8线程在很多地方还不能完全发挥其作用,四个物理核心即使没有多线程的支持,在日常使用中也足够强大。& &另外,开启HT后的温度、功耗也会增加,下面是温度对比。& & CPU中控制超线程的器件在工作时必然会带来更高的温度和功耗,不过如果性能得以发挥,这一点点的温度增加还是十分值得的。& & 看到这里,我想读者也应该对该如何选取一款Core i系列CPU有了可以参考的意见。对于双核的i3/i5系列,超线程技术的价值非常明显,对性能帮助很大,不管是多任务还是游戏中,表现都非常出色,而在多媒体处理上也比传统双核要提升不少。而i7系列的定位更高一些,是进行大量多媒体任务及多线程运算的利器,但非并所有用户都有需要,如果只是玩游戏的话,没有HT功能的i5 700也完全可以满足要求。■
又犯病了?
楼主取个这么相似的ID很好玩吗
RE: 超线程威力有多强?i7/i5/i3纵向对比
shadowl 发表于
又犯病了?[titter&
习惯性乱喷的毛病又犯了?看清楚iD
本帖最后由 ilovechina 于
16:35 编辑
在多任务/多线程应用中,超线程技术可以带来巨大的帮助和性能提升。四核i7是否开启HT对帧数影响非常小,而i3的区别就非常明显了,如果没有HT的支持,性能下降非常多。
所以说,超线程无用论就是煞笔提出来的。游戏目前看不到差距,那是因为游戏最多只支持4线程。这也是为什么i3关闭了超线程游戏性能下降厉害,i5跟e3游戏差距不大。这也导致了主频至上的煞笔的出现,从而有了为了4倍频而放弃超线程的煞笔的出现。所以说,评测真是害死人。这帮傻比对评测根本没有自己的思考。看到评测的结果就立马想当然的下结论。这就是人与人之间的差距了。
还有煞笔竟然认为超线程在多任务当中也无用,只有在单任务多线程当中才有用,这种煞笔真是世间罕见。
大多数买I5&&I7CPU的还是用来玩游戏的,正因为大多数游戏不能完美地支持8线程,所以I5+4倍频福利才能体现出性价比
各取所需而已,怎么在楼上这位眼里就如此不堪呢?
反正我已经手滑了,满篇脏话看得都难受
Powered by Discuz! X3.4超线程加快了 Linux 的速度
当前的 2.4 和 2.5 版本中的 Linux 对称多处理(SMP)内核都支持超线程,并且已经在多线程基准测试程序中观测到了性能的提高(请参阅本文后面的
以获取含有更多详细信息的文章)。
本文提供了我们研究超线程(HT)对 Linux SMP 内核影响的结果。它比较了支持超线程的 Linux SMP 内核和不支持超线程的 Linux SMP 内核的性能。测试中的系统是支持多线程的、单 CPU Xeon。研究中所使用的基准测试程序涵盖了内核中受超线程影响的那些领域,比如调度程序、低级内核原语、文件服务器、网络和线程支持。在 Linux 内核 2.4.19 上测试的结果说明了超线程技术可以使多线程应用程序的性能提高 30%。当前该技术使 Linux 内核 2.5.32 的性能提高幅度多达 51%。简介
Intel 的超线程技术通过复制、分区和共享 Intel NetBurst 微体系结构管道中的资源,使得一个物理处理器能包含两个逻辑处理器。被复制的资源为两个线程创建了资源副本:每个 CPU 的所有体系结构状态指令指针,重命名逻辑一些较小的资源(例如返回堆栈预测器、ITLB 等)已分区的资源划分执行线程之间的资源:几个缓冲区(Re-Order 缓冲区、Load/Store 缓冲区、队列等)共享的资源按需在两个正在执行的线程之间使用资源:乱序执行引擎高速缓存通常,每个物理处理器在一个处理器核心上都有一个体系结构状态,来为线程提供服务。使用了 HT,每个物理处理器在单个核心上就有两个体系结构状态,这使得物理处理器看起来象有两个逻辑处理器在为线程提供服务。系统 BIOS 列举出物理处理器中的每个体系结构状态。由于支持超线程的操作系统利用了逻辑处理器,因此这些操作系统就有两倍的资源可用于为线程提供服务。Xeon 处理器中的超线程支持
在通用处理器中 Xeon 处理器最先实现同步多线程(SMT)(请参阅
以获取有关 Xeon 处理器系列的更多信息)。为达到在单一物理处理器上执行两个线程的目标,该处理器同时维持多个线程的上下文,这允许调度程序并发分派两个可能无关的线程。
操作系统(OS)将多个线程代码调度和分派给每个逻辑处理器,就如同在 SMP 系统中。没有分派线程时,相关的逻辑处理器保持空闲。当将一个线程调度和分派给逻辑处理器 LP0 时,超线程技术利用必需的处理器资源来执行该线程。当将第二个线程调度和分派给第二个逻辑处理器 LP1 时,就要按需为执行该线程而复制、划分或共享资源。每个处理器都在管道各点上进行选择,以控制和处理这些线程。当每个线程完成时,操作系统将未用的处理器置为空闲,释放资源让正在运行的处理器使用。OS 将线程调度和分派给每个逻辑处理器,就好像是在双处理器或多处理器系统中进行的那样。当系统调度线程并将之引入到管道中时,按需利用资源以处理这两个线程。Linux 内核 2.4 中的超线程支持
Linux 内核将带有两个虚拟处理器的超线程处理器看成是一对真正的物理处理器。其结果是,处理 SMP 的调度程序也应该能处理超线程。Linux 内核 2.4.x 中的超线程支持始于 2.4.17,它包括了以下增强技术:128 字节锁对齐螺旋等待循环优化基于非执行的延迟循环检测支持超线程的处理器,并启动逻辑处理器,如同该机器是 SMPMTRR 和微码更新(Microcode Update)驱动程序中的串行化,因为它们影响共享状态在逻辑处理器上的调度发生之前,当系统空闲时对物理处理器上的调度进行优先级排序时,对调度程序进行优化偏移用户堆栈以避免 64K 混叠内核性能测量
为评定超线程对 Linux 内核性能的影响,我们在包括 Intel Xeon 处理器(具有 HT 功能)的系统上测量了内核基准测试程序的性能。硬件是:支持 SMT 的单 CPU、1.6 GHz Xeon MP 处理器、2.5 GB RAM 和两个 9.2 GB SCSI 硬盘驱动器。测量的内核是配置和构建了支持 SMP 的现有内核 V2.4.19。内核超线程支持通过引导选项
acpismp=force 来指定使用超线程,并通过引导选项
noht 来指定不使用超线程。查看是否支持超线程可以通过使用命令
cat /proc/cpuinfo ,来显示处理器 0 和处理器 1 这两个处理器是否存在。请注意
中用于 CPU 0 和 1 的
ht 标志。在不支持超线程的情况下,将只显示处理器 0 的数据。
清单 1. cat /proc/cpuinfo 的输出,显示超线程支持
: GenuineIntel
cpu family
model name
: Intel(R) Genuine CPU 1.60GHz
cache size
fpu_exception: yes
cpuid level
: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr
pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht
: GenuineIntel
cpu family
model name
: Intel(R) Genuine CPU 1.60GHz
cache size
fpu_exception: yes
cpuid level
: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr
pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht
: 3198.15Linux 内核基准测试程序
为测量 Linux 内核性能,使用了 5 个基准测试程序:LMbench、AIM Benchmark Suite IX(AIM9)、chat、dbench 和 tbench。LMbench 基准测试程序对各种 Linux 应用程序编程接口(API)(例如,基本系统调用、上下文切换延迟和内存带宽)进行计时。AIM9 基准测试程序提供对用户应用程序工作负载的测量。chat 基准测试程序是模仿聊天室的客户机/服务器工作负载。dbench 基准测试程序是文件服务器工作负载,tbench 是 TCP 工作负载。chat、dbench 和 tbench 是多线程基准测试程序,而其它的则是单线程基准测试程序。超线程对 Linux API 的影响
超线程对 Linux API 的影响通过 LMbench 来测量,LMbench 是包含一套带宽和延迟测量方法的微基准测试程序。这些影响中涉及了高速缓存文件读取、内存复制(bcopy)、内存读/写(和延迟)、管道、上下文切换、联网、文件系统的创建和删除、进程的创建、信号处理以及处理器时钟延迟。LMbench 着重测量以下内核组件:调度程序、进程管理、通信、联网、内存映射和文件系统。低级内核原语提供一个很好的、底层硬件能力和性能的指示器。为研究超线程的效果,我们着重于延迟的测量,它测量消息控制的时间(换句话说,系统执行某个操作能有多快)。延迟的数量用“微秒/操作”进行记录。表 1 显示了用 LMbench 进行测试的部分内核功能列表。每个数据点是三次运行的平均值,而且该数据已经作过收敛测试,以保证在相同的测试环境条件下它们是可再现的。通常,对于那些作为单线程运行的功能来说,有超线程和无超线程之间没有什么性能差别。然而,对于那些需要运行两个线程的测试(例如,管道延迟测试和三个进程延迟测试)来说,超线程似乎延长了它们的延迟时间。已配置的现有的 SMP 内核被标为 2419s。如果配置的内核不支持超线程,则将其标为 2419s-noht。若有超线程支持,则该内核被列为 2419s-ht。表 1. 超线程对 Linux API 的影响内核函数2419s-noht2419s-ht加速简单的 syscall1.101.100%简单的 read1.491.490%简单的 write1.401.400%简单的 stat5.125.140%简单的 fstat1.501.500%简单的 open/close7.387.380%对 10 个 fd 的选择5.415.410%对 10 个 tcp fd 的选择5.695.700%信号处理程序安装1.561.550%信号处理程序开销4.294.270%管道延迟11.1611.31-1%进程 fork+exit190.75198.84-4%进程 fork+execve581.55617.11-6%进程 fork+/bin/sh -c3051.283118.08-2%注:数据用微秒表示:越小越好。管道延迟的测试使用了两个通过 UNIX 管道进行通信的进程来测量经由套接字的进程间通信延迟。基准测试程序在这两个进程之间来回传送标记。性能下降幅度为 1%,小得可以忽略不计。这三个进程测试包括了在 Linux 中进行的进程创建和执行。目的是测量创建基本控制线程所花去的时间。对于进程 fork+exit 测试来说,该数据表示将一个进程分成两个(几乎)相同的副本并退出其中一个所花的延迟时间。新进程就是这么创建的 - 但这不是非常有用,因为两个进程执行相同的操作。在这个测试中,超线程造成的性能下降幅度为 4%。在进程 fork+execve 中,数据表示创建新进程并让该新进程运行新程序所花的时间。这是所有 shell(命令解释器)的内循环。由于超线程,可以看到这个测试性能下降幅度为 6%。在进程 fork+/bin/sh -c 测试中,数据表示创建新进程并使该新进程运行新程序(通过让系统 shell 查找该程序并运行它)所要花去的时间。C 库接口就是这样实现对系统的调用。这个调用最常见,也最费时。在使用超线程的情况下,相对不用超线程而言,运行本测试慢了 2%。超线程对 Linux 单用户应用程序工作负载的影响
AIM9 基准测试程序是单用户工作负载,旨在测量硬件和操作系统的性能。结果如表 2 所示。该基准测试程序中的大多数测试在使用超线程和不用超线程情况下执行性能都相同,只是同步文件操作和整数过滤(Integer Sieve)有所不同。同步随机磁盘写操作(Sync Random Disk Writes)、同步顺序磁盘写操作(Sync Sequential Disk Writes)和同步磁盘复制(Sync Disk Copies)这三个操作在使用超线程的情况下都慢了将近 35%。相反,在整数过滤的情况下使用超线程比不使用超线程速度提高了 60%。表 2. 超线程对 AIM9 工作负载的影响2419s-noht2419s-ht加速add_double每秒钟的双精度加法运算次数(千次)6383616377240%add_float每秒钟的单精度加法运算次数(千次)6384006377620%add_long每秒钟的长整型加法运算次数(千次)147904114790410%add_int每秒钟的整型加法运算次数(千次)148354914910171%add_short每秒钟的短整型加法运算次数(千次)148080014784000%creat-clo每秒钟的文件创建和关闭次数1291001397008%page_test每秒钟的系统分配和换页数1613301618400%brk_test每秒钟的系统内存分配次数6334666358000%jmp_test每秒钟的非本地 goto 次数866690086948000%signal_test每秒钟的信号陷阱数1423001429000%exec_test每秒钟的程序装入次数3873870%fork_test每秒钟的任务创建次数236524473%link_test每秒钟的链接/解链对数54142591699%disk_rr每秒钟的随机磁盘读取数(K)85758895104%disk_rw每秒钟的随机磁盘写入数(K)76800784552%disk_rd每秒钟的顺序磁盘读取数(K)3519043568641%disk_wrt每秒钟的顺序磁盘写入数(K)1541121563591%disk_cp每秒钟的磁盘复制数(K)1043431062832%sync_disk_rw每秒钟的同步随机磁盘写入数(K)239155-35%sync_disk_wrt每秒钟的同步顺序磁盘写入数(K)9760-38%sync_disk_cp每秒钟的同步磁盘复制数(K)9760-38%disk_src每秒钟的目录搜索次数4891548195-1%div_double每秒钟的双精度除法运算次数(千次)37162372020%div_float每秒钟的单精度除法运算次数(千次)37125372020%div_long每秒钟的长整型除法运算次数(千次)27305273600%div_int每秒钟的整型除法运算次数(千次)27305273320%div_short每秒钟的短整型除法运算次数(千次)27305273600%fun_cal每秒钟的函数调用(没有参数)次数-1%fun_cal1每秒钟的函数调用(1 个参数)次数0%fun_cal2每秒钟的函数调用(2 个参数)次数0%fun_cal15每秒钟的函数调用(15 个参数)次数0%sieve每秒钟的整数过滤次数152460%mul_double每秒钟的双精度乘法运算次数(千次)4562874567430%mul_float每秒钟的单精度乘法运算次数(千次)4560004567430%mul_long每秒钟的长整型乘法运算次数(千次)1679041681680%mul_int每秒钟的整型乘法运算次数(千次)1679761682160%mul_short每秒钟的短整型乘法运算次数(千次)1557301559100%num_rtns_1每秒钟的数字函数个数92740929200%trig_rtns每秒钟的三角函数个数4040004050000%matrix_rtns每秒钟的点转换次数8751408913002%array_rtns每秒钟解决的线性系统数5795780%string_rtns每秒钟的字符串操作次数256025640%mem_rtns_1每秒钟的动态内存操作次数9820359800190%mem_rtns_2每秒钟的块内存操作次数2145902153900%sort_rtns_1每秒钟的排序操作次数481472-2%misc_rtns_1每秒钟的辅助循环次数79167864-1%dir_rtns_1每秒钟的目录操作次数200200020010000%shell_rtns_1每秒钟的 Shell 脚本数95972%shell_rtns_2每秒钟的 Shell 脚本数95961%shell_rtns_3每秒钟的 Shell 脚本数95972%series_1每秒钟的级数求值次数316527031896301%shared_memory每秒钟的共享内存操作次数1740801742200%tcp_test每秒钟的 TCP/IP 消息数65835662311%udp_test每秒钟的 UDP/IP 数据报数1118801121500%fifo_test每秒钟的 FIFO 消息数2289202289000%stream_pipe每秒钟的流管道消息数1702101710600%dgram_pipe每秒钟的数据报管道消息数1683101705601%pipe_cpy每秒钟的管道消息数245090243440-1%ram_copy每秒钟的内存到内存复制次数1%超线程对 Linux 多线程应用程序工作负载的影响
为测量超线程对 Linux 多线程应用程序的影响,我们使用模仿聊天室的 chat 基准测试程序。该基准测试程序包括了客户机和服务器。该基准测试程序的客户机端将报告每秒钟所发送的消息数;聊天室和消息的数量将控制工作负载。该工作负载创建许多线程和 TCP/IP 连接,并发送和接收许多消息。它使用了以下缺省参数:聊天室个数 = 10消息数 = 100消息大小 = 100 字节用户数 = 20缺省情况下,每个聊天室有 20 位用户。10 个聊天室一共有 20x10 = 200 位用户。客户机将为聊天室里的每位用户创建至服务器的连接。由于我们有 200 位用户,所以我们将有 200 个到服务器的连接。现在,为聊天室中的每个用户(或连接)都创建了一个“发送”线程和一个“接收”线程。因此,“10 个聊天室”方案将创建 10x20x2 = 400 个客户机线程和 400 个服务器线程,一共是 800 个线程。但事实上不止这些。每个客户机“发送”线程将把指定数量的消息发送给服务器。对于 10 个聊天室和 100 条消息而言,客户机将发送 10x20x100 = 20,000 条消息。服务器“接收”线程将接收相应数量的消息。聊天室服务器将把每条消息传回给聊天室中的其他用户。因而,对于 10 个聊天室和 100 条消息而言,服务器“发送”线程将发送 10x20x100x19 = 380,000 条消息。客户机“接收”线程将接收相应数量的消息。通过命令行会话启动聊天服务器,以另一个命令行会话启动客户机,来开始测试。客户机模拟工作负载,并且其结果表示由该客户机所发送的消息数。当客户机结束其测试时,服务器循环并接受来自该客户机的其它启动消息。在我们的测量中,我们用 20、30、40 和 50 个聊天室来运行该基准测试程序。相应的连接和线程数如表 3 所示。表 3. 所测试的聊天室和线程的数量聊天室的
数量连接的
数量线程的
数量所发送消息的
数量所接收的消息的
数量消息的
总数204001,60040,000760,000800,000306002,40060,0001,140,0001,200,000408003,20080,0001,520,0001,600,0005010004,000100,0001,900,0002,000,000表 4 显示了超线程对聊天工作负载性能的影响。每个数据点表示五次运行的几何平均数。数据集清楚地说明超线程根据聊天室的数量能将工作负载吞吐量提高 22% 到 28%。大体说来,基于 4 个聊天室样本的几何平均数,超线程将把聊天性能提高 24%。表 4. 超线程对聊天吞吐量的影响聊天室的数量2419s-noht2419s-ht加速20164,071202,80924%30151,530184,80322%40140,301171,18722%50123,842158,54328%几何平均数144,167178,58924%注:数据是客户机所发送的消息数:越大越好。图 1. 超线程对聊天工作负载的影响
超线程对 Linux 多线程文件服务器工作负载的影响
用 dbench 及其“同伴”测试 tbench 来测量超线程对文件服务器的影响。dbench 类似于 Ziff-Davis Media 基准程序中著名的 NetBench 基准测试程序,它让您在文件服务器处理来自客户机的网络文件请求时,测量其性能。但是,NetBench 要求精心设置实际的物理客户机,而 dbench 则模拟 90,000 个操作以产生相同的工作负载,这些操作通常由 NetBench 客户机通过嗅探称为 client.txt 的 4 MB 文件来运行。这个文件的内容是文件操作伪指令,例如 SMBopenx、SMBclose、SMBwritebraw 和 SMBgetatr 等。这些 I/O 调用符合服务器消息块(Server Message Block,SMB)协议,SAMBA 中的 SMBD 服务器在 netbench 运行中将产生该协议。SMB 协议被 Microsoft Windows 3.11、NT 和 95/98 用于共享磁盘和打印机。在我们的测试中,一共使用了 18 种不同类型的 I/O 调用,包括打开文件、读、写、锁定、解锁、获取文件属性、设置文件属性、关闭、获取磁盘可用空间、获取文件时间、设置文件时间、“查找”打开、“查找”下一个、“查找”关闭、重命名文件、删除文件、创建新文件和清空文件缓冲区。dbench 可以模拟任何数量的客户机,而不必进行物理设置。dbench 只产生文件系统负载,它没有联网调用。运行期间,每个客户机记录所移动的数据字节数并将该数除以移动该数据所需的时间量。然后累加所有的客户机吞吐量数以确定该服务器的总吞吐量。总的 I/O 吞吐量分数表示测试期间每秒钟所传送的兆字节数。这个测量说明该服务器对来自客户机的文件请求的处理质量。dbench 非常适合于对超线程的测试,因为它对 CPU 和 I/O 调度程序创建了大量负载和活动。dbench 可以严格测试超线程支持多线程文件服务的能力,因为客户机同时创建和访问许多文件。每个客户机必须创建相当于大约 21 兆字节的测试数据文件。对于要运行 20 个客户机的测试,预计要大约 420 兆字节的数据。对于测量 Linux 文件系统所用的电梯算法性能,dbench 被认为是非常不错的测试方法。dbench 用于测试该算法的工作正确性,并测试电梯的反应是否足够快速。它还是很有趣的页面替换测试。表 5 显示了 HT 对 dbench 工作负载的影响。每个数据点表示五次运行的几何平均数。数据说明了超线程将 dbench 的性能最少提高了 9%,最多提高了 29%。基于这五个测试方案的几何平均数,总体的提高幅度是 18%。表 5. 超线程对 dbench 吞吐量的影响客户机的数量2419s-noht2419s-ht加速20132.82171.2329%30131.43169.5529%60119.95133.7712%90111.89121.819%12099.31114.9216%几何平均数118.4140.318%注:数据是用 MB/sec 表示的吞吐量:越大越好。图 2. 超线程对 dbench 工作负载的影响
tbench 是类似于 dbench 的另一个文件服务器工作负载。但是,tbench 只产生 TCP 和进程负载。tbench 进行套接字调用,和 SMBD 在 netbench 负载下进行的调用相同,但是 tbench 不进行文件系统调用。tbench 背后的思想是将 SMBD 从 netbench 测试中消除掉,尽管可以使 SMBD 代码快速运行。tbench 的吞吐量结果告诉我们,如果我们消除所有文件系统 I/O 和 SMB 信息包处理,netbench 可以运行得有多快。tbench 被构建成 dbench 包的一部分。表 6 描述了超线程对 tbench 工作负载的影响。和前面一样,每个数据点代表五次运行的几何平均数。超线程的确会提高 tbench 的吞吐量,提高幅度从 22% 到 31%。基于这五个测试方案的几何平均数,整体提高幅度为 27%。表 6. 超线程对 tbench 吞吐量的影响客户机的数量2419s-noht2419s-ht加速2060.9879.8631%3059.9477.8230%6055.8570.1926%9048.4558.8822%12037.8547.9227%几何平均数51.8465.7727%注:这些数据是用 MB/sec 表示的吞吐量:越大越好。图 3. 超线程对 tbench 工作负载的影响
Linux 内核 2.5.x 中的超线程支持
Linux 内核 2.4.x 自 2.4.17 发行版起就支持 HT。内核 2.4.17 了解逻辑处理器,并将超线程处理器当作两个物理处理器。但是,仍然认为现有的内核 2.4.x 中所使用的调度程序还不成熟,因为它不能区别是两个逻辑处理器在争用资源,还是两个单独的物理处理器在争用资源。Ingo Molnar 已经指出了当前调度程序出现错误的一些情况(请参阅
以获取链接)。请研究一下带有两个物理 CPU 的系统,每个 CPU 提供两个虚拟处理器。如果两个任务正在运行,当前调度程序会让它们同时在单个物理处理器上运行,即使将其中一个进程迁移到另一个物理 CPU 会得到好得多的性能。该调度程序还不明白:将进程从一个虚拟处理器迁移到另一个虚拟处理器(同一物理 CPU 上的逻辑 CPU)要比将进程在物理处理器之间进行迁移来得更省力(由于高速缓存装入)。
解决方案是更改运行队列的工作方式。2.5 调度程序在每个处理器中维持一个运行队列,并设法避免在队列之间移动任务。这种更改是让每个物理处理器拥有一个运行队列,它能将任务提供给所有的虚拟处理器。这样就比较清晰地说明,是什么产生了空闲 CPU(所有的虚拟处理器必须为空闲),产生的代码就会“神奇地实现”在超线程系统进行调度的需要。除了 2.5 调度程序中运行队列的更改之外,还要进行其它必要的更改,以使 Linux 内核能够利用 HT 达到最佳性能。Molnar 讨论过的那些更改(请再次参阅
以获取有关此内容的更多信息)如下所示。
支持 HT 的被动的负载均衡:
用 IRQ 驱动的均衡操作必须针对各个物理 CPU,而不是各个逻辑 CPU。否则,可能会发生:一个物理 CPU 运行两个任务,而另一个物理 CPU 不运行任务;现有的调度程序不会将这种情形认为是“失衡的”。在调度程序看来,似乎是第一个物理处理器上的两个 CPU 运行 1-1 任务,而第二个物理处理器上的两个 CPU 运行 0-0 任务。现有的调度程序没有意识到这两个逻辑 CPU 属于同一个物理 CPU。
“主动的”负载均衡:
当一个逻辑 CPU 变成空闲,从而造成一个物理 CPU 失衡时,会出现这种情况。只有在现有的 1:1 调度程序中才不会出现这个机制。由空闲 CPU 引起的失衡可以通过常见的负载均衡器来解决。在使用 HT 的情况下,这种情形很特殊,因为源物理 CPU 可能只有两个任务在运行,而两个都可以运行。现有的负载均衡器不能处理这种情形,因为正在运行的任务难以迁移。而这个迁移是必需的 - 否则一个物理 CPU 费力地运行两个任务,而另一个物理 CPU 却保持空闲。
支持 HT 的任务挑选:
当调度程序挑选了一个新任务时,它在尝试从其它 CPU 接收任务之前,应该优先挑选所有共享同一物理 CPU 的任务。现有的调度程序只挑选那些被调度到特定逻辑 CPU 的任务。
支持 HT 的亲缘性:
这些任务应当设法“盯牢”物理 CPU,而不是逻辑 CPU。
支持 HT 的唤醒:
现有的调度程序只知道“当前”CPU,不知道其任何“伙伴”CPU。在 HT 上,如果一个逻辑 CPU 正在执行任务,其上的一个线程被唤醒了,而且其“伙伴”CPU 是空闲的,那么该“伙伴”CPU 必须被唤醒以立即执行刚唤醒的任务。
在撰写本文时,Molnar 已经提供了现有的内核 2.5.32 补丁程序,它通过引入共享运行队列(多个 CPU 可以共享同一个运行队列)的概念来实现上述所有更改。共享的、针对每个物理 CPU 的运行队列实现了上面所列的所有 HT 调度操作的需要。显然,这使调度和负载均衡变得复杂了,而且这对 SMP 和单处理器调度程序的影响仍然是未知的。Linux 内核 2.5.32 中的更改旨在对带有两个以上 CPU 的 Xeon 系统产生影响,尤其是在负载均衡和线程亲缘性这些区域方面。由于硬件资源限制,我们只能测量其在我们单 CPU 测试环境中的影响。使用 2.4.19 中所使用的相同测试进程,我们在 2.5.32 上运行了三个工作负载:chat、dbench 和 tbench。对于 chat 而言,在有 40 个聊天室的情况下,HT 可以将速度提高 60%。整体提高幅度大约为 45%。对于 dbench 而言,27% 是最高的提高幅度,整体提高幅度大约为 12%。对于 tbench 而言,整体提高幅度大约为 35%。表 7. 超线程对 Linux 内核 2.5.32 的影响chat 工作负载聊天室的数量2532s-noht2532s-ht加速20137,792207,78851%30138,832195,76541%40144,454231,50947%50137,745191,83439%几何平均数139,678202,03445%dbench 工作负载客户机的数量2532s-noht2532s-ht加速20142.02180.8727%30129.63141.199%6084.7686.021%9067.8970.374%12057.4470.5923%几何平均数90.54101.7612%tbench 工作负载客户机的数量2532s-noht2532s-ht加速2060.2882.2336%3060.1281.7236%6059.7381.236%9059.7180.7935%12059.7379.4533%几何平均数59.9181.0735%注:chat 数据是用 client/sec 表示的发送消息数;dbench 和 tbench 数据是用 MB/sec 表示的。结束语
Intel Xeon 超线程对 Linux 内核和多线程应用程序肯定有积极作用。超线程产生的性能改进在现有的内核 2.4.19 中可高达 30%,在内核 2.5.32 中由于调度程序中运行队列支持和超线程支持的大量更改,其速度可提高 51%。
相关主题您可以参阅本文在 developerWorks 全球站点上的
中获取更多信息。
下载 chat 基准测试程序。
上找到有关 LMbench 的更多信息。
Ziff-Davis
基准测试程序测试主页提供了他们的测试套件的更多详细信息。
2000 年 11 月 23 日版的
Linux Weekly News内核开发版块中讨论了
Intel Technology Journal上由 Marr, D.T. 等编著的名为
的论文提供了有关超线程内部工作方式的更多详细信息。
由 Ingo Molnar 在 2002 年 8 月寄往内核列表的有关超线程的说明,在 Linux Weekly News 中
另一篇 2002 年 8 月的 LWN 文章也讨论了
(还有其它)。
Intel 的白皮书(PDF 格式)
是另一个很好的有关超线程背后的体系结构细节的详细信息源。
作者还想感谢 Intel 的 Sunil Saxena 在 LinuxWorld Conference Session 上提供的无价信息:
Performance tuning for threaded applications -- with a look at Hyper-Threading(LinuxWorld 大会,旧金山,2002 年 8 月)。
developerWorksLinux 专区中查找更多的
添加或订阅评论,请先或。
有新评论时提醒我
static.content.url=http://www.ibm.com/developerworks/js/artrating/SITE_ID=10Zone=LinuxArticleID=21484ArticleTitle=超线程加快了 Linux 的速度publish-date=

我要回帖

更多关于 pentiwnag 的文章

 

随机推荐