是否开启超线程对CPU不同命令的影响情况

是否,开启,超线程,cpu,不同,命令,影响,情况 · 浏览次数 : 290

小编点评

**超线程与否测试验证结果** | 指令 | 超线程 | 单核心 | |---|---|---| | ackermann apery | yes | no | | bitops | yes | no | | callfunc | yes | no | | cdouble | yes | no | | cfloat | yes | no | | clongdouble | yes | no | | collatz | yes | no | | correlate | yes | no | | crc16 | yes | no | | decimal32 | yes | no | | decimal64 | yes | no | | decimal128 | yes | no | | dither | yes | no | | div8 | yes | no | | div16 | yes | no | | div32 | yes | no | | div64 | yes | no | | div128 | yes | no | | double | yes | no | | euler | yes | no | | explog | yes | no | | factorial | yes | no | | fibonacci | yes | no | | fft | yes | no | | fletcher16 | yes | no | | float | yes | no | | float80 | yes | no | | float128 | yes | no | | floatconversion | yes | no | | gamma | yes | no | | gcd | yes | no | | gray | yes | no | | hamming | yes | no | | hanoi | yes | no | | hyperbolic | yes | no | | idct | yes | no | | int128 | yes | no | | int64 | yes | no | | int32 | yes | no | | int16 | yes | no | | int8 | yes | no | | int128float | yes | no | | int128double | yes | no | | int128longdouble | yes | no | | ipv4checksum | yes | no | | jmp | yes | no | | lfsr32 | yes | no | | ln2 | yes | no | | logmap | yes | no | | longdouble | yes | no | | loop | yes | no | | matrixprod | yes | no | | nsqrt | yes | no | | omega | yes | no | | parity | yes | no | | phi | yes | no | | pi | yes | no | | prime | yes | no | | psi | yes | no | | queens | yes | no | | rand | yes | no | | rand48 | yes | no | | rgb | yes | no | | sieve | yes | no | | stats | yes | no | | sqrt | yes | no | | trig | yes | no | | union | yes | no | | zeta | yes | no |

正文

背景

最近公司购买了一台服务器, 要进行一次性能测试. 
基于此, 我这边进行了一下超线程与否的测试验证
使用stress-ng的命令,对所有的 CPU 方法进行测试
然后只分析 bogo ops/s  进行简要分析

测试结果

for i in ackermann apery bitops callfunc cdouble cfloat clongdouble collatz correlate crc16 decimal32 decimal64 decimal128 dither div8 div16 div32 div64 div128 double euler explog factorial fibonacci fft fletcher16 float float80 float128 floatconversion gamma gcd gray hamming hanoi hyperbolic idct int128 int64 int32 int16 int8 int128float int128double int128longdouble int128decimal32 int128decimal64 int128decimal128 int64float int64double int64longdouble int32float int32double int32longdouble intconversion ipv4checksum jmp lfsr32 ln2 logmap longdouble loop matrixprod nsqrt omega parity phi pi prime psi queens rand rand48 rgb sieve stats sqrt trig union zeta ;
do
echo $i ;
 ./stress-ng-amd --cpu 1 --cpu-method $i -t 10s --metrics-brief  ;
 ./stress-ng-amd --cpu 0 --cpu-method $i -t 10s --metrics-brief ;
done

打印出算法来

for i in ackermann apery bitops callfunc cdouble cfloat clongdouble collatz correlate crc16 decimal32 decimal64 decimal128 dither div8 div16 div32 div64 div128 double euler explog factorial fibonacci fft fletcher16 float float80 float128 floatconversion gamma gcd gray hamming hanoi hyperbolic idct int128 int64 int32 int16 int8 int128float int128double int128longdouble int128decimal32 int128decimal64 int128decimal128 int64float int64double int64longdouble int32float int32double int32longdouble intconversion ipv4checksum jmp lfsr32 ln2 logmap longdouble loop matrixprod nsqrt omega parity phi pi prime psi queens rand rand48 rgb sieve stats sqrt trig union zeta ;
> do echo $i ; echo $i ; done

awk命令处理

 cat  withht.txt  |grep cpu |grep -v dispatching |awk '{print $9}'

excel处理

复制然后进行一些简单的结果展示
可以对数据进行一些简单的展示和测算

简单总结

1. 超线程是否开启对仅进行单线程测算的结果影响不大. 
2. 开启超线程对不同的命令全核指令的提升不一样. 
3. 感觉指令数越小的指令提升越明显. 
4. 部分指令开启超线程性能会有较大提升.
5. 数据库可能有较多的操作数. 还是建议关闭超线程. 

单核心是否超线程的影响

image


多核心是否超线程的影响

image


与是否开启超线程对CPU不同命令的影响情况相似的内容:

是否开启超线程对CPU不同命令的影响情况

背景 最近公司购买了一台服务器, 要进行一次性能测试. 基于此, 我这边进行了一下超线程与否的测试验证 使用stress-ng的命令,对所有的 CPU 方法进行测试 然后只分析 bogo ops/s 进行简要分析 测试结果 for i in ackermann apery bitops callfu

4.7 C++ Boost 多线程并发库

C++语言并没有对多线程与网络的良好支持,虽然新的C++标准加入了基本的`thread`库,但是对于并发编程的支持仍然很基础,Boost库提供了数个用于实现高并发与网络相关的开发库这让我们在开发跨平台并发网络应用时能够像Java等语言一样高效开发。thread库为C++增加了多线程处理能力,其主要提供了清晰的,互斥量,线程,条件变量等,可以很容易的实现多线程应用开发,而且该库是可跨平台的,并且支持

C#的多线程UI窗体控件显示方案 - 开源研究系列文章

上次编写了《LUAgent服务器端工具》这个应用,然后里面需要新启动一个线程去对文件进行上传到FTP服务器,但是新线程里无法对应用主线程UI的内容进行更改,所以就需要在线程里设置主UI线程里控件信息的方法,于是就有了此博文。此文记录的是一种高级用法。 为了实际的使用,笔者将线程操作放在独立的类当中,

(三)Redis 线程与IO模型

1、Redis 单线程 通常说 Redis 是单线程,主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的,其他功能,比如持久化、异步删除、集群数据同步等,是由额外的线程执行的,所以严格来说,Redis 并不是单线程。 多线程开发会不可避免的带来并发控制和资源开销的问题,如果没有良好

太坑了吧!一次某某云上的redis读超时排查经历

一次排查某某云上的redis读超时经历 性能排查,服务监控方面的知识往往涉及量广且比较零散,如何较为系统化的分析和解决问题,建立其对性能排查,性能优化的思路,我将在这个系列里给出我的答案。 问题背景 最近一两天线上老是偶现的redis读超时报警,并且是业务低峰期间,甚是不解,于是开始着手排查。 以下

驱动开发:内核LoadLibrary实现DLL注入

远程线程注入是最常用的一种注入技术,在应用层注入是通过`CreateRemoteThread`这个函数实现的,通过该函数通过创建线程并调用 `LoadLibrary` 动态载入指定的DLL来实现注入,而在内核层同样存在一个类似的内核函数`RtlCreateUserThread`,但需要注意的是此函数未被公开,`RtlCreateUserThread`其实是对`NtCreateThreadEx`的包

驱动开发:内核枚举进程与线程ObCall回调

在笔者上一篇文章`《驱动开发:内核枚举Registry注册表回调》`中我们通过特征码定位实现了对注册表回调的枚举,本篇文章`LyShark`将教大家如何枚举系统中的`ProcessObCall`进程回调以及`ThreadObCall`线程回调,之所以放在一起来讲解是因为这两中回调在枚举是都需要使用通用结构体`_OB_CALLBACK`以及`_OBJECT_TYPE`所以放在一起来讲解最好不过。

驱动开发:内核枚举ShadowSSDT基址

在笔者上一篇文章`《驱动开发:Win10枚举完整SSDT地址表》`实现了针对`SSDT`表的枚举功能,本章继续实现对`SSSDT`表的枚举,ShadowSSDT中文名`影子系统服务描述表`,SSSDT其主要的作用是管理系统中的图形化界面,其`Win32`子系统的内核实现是`Win32k.sys`驱动,属于GUI线程的一部分,其自身没有导出表,枚举`SSSDT`表其与`SSDT`原理基本一致。

[转帖]CULinux缘何迅速崛起?原因是一份对信任的精彩回报

https://www.modb.pro/db/611552 “16%的市场占有率为操作系统领域的生态拐点,超过这个份额便可自循环、自发展。”自从欧拉出生以来,如何帮客户创造价值并获得市场的认可一直是头等大事。 就在前不久召开的 2022 年操作系统产业峰会上,我们看到,得益于开源激发出的澎湃动力,

4.4K Star!推荐一款新一代的极简监控系统!轻量高性能!超500个监控指标,颜值高、功能强大!

在信息化快速发展的今天,企业运维面临的挑战日益增多。传统的运维监控系统往往存在功能冗余、性能低下、操作复杂等问题,难以满足现代企业对高效、稳定、智能的运维管理需求。 今天给大家推荐一款新一代极简运维监控系统:WGCLOUD 1、介绍 WGCLOUD是一个基于Java开发的高性能、高并发的分布式监控系