关于异数OS服务器CPU效能分析工具

该工具发布背景

近年来,国产服务器CPU产业的逐渐发展,但由于专业性较差,与国外存在40年以上技术差距,一些服务器CPU厂商利用信息差来制造一些非专业的数据夸大并虚假宣传混淆视听,成功达到劣币驱良币的目标,本着正本清源驱除劣币以正视听让国产服务器CPU产业达到良性竞争的目标,四川墨道科技放出部分专业的异数OS服务器CPU效能分析工具,让更多业内人士能够更加准确的认识分辨国产服务器CPU性能,以此帮助落后40年的国产服务器CPU开发商能够找到自身产品缺陷不足来提高优化产品。

差距40年的依据是什么?

甲骨文公司成立于1977年,其产品Oracle垄断全球高端市场40年,阿里自2012年开始去IOE战略,截至2023年,其核心产品OceanBase在当今最强大的服务器CPU加持下,其TPS性能仅相当于2010年Oracle RAC(甲骨文自研的CPU)性能的三分之一,因此有理由相信在服务器领域,中美差距至少在40年。

这个工具测的什么?

服务器CPU和桌面CPU实际上有非常大的不同,桌面CPU通常注重IPC和频率,但服务器CPU则受到存储墙约束而更看重多核numa互联访存效率,为何会这样?因为CPU的IPC性能差距通常不会高于1个数量级,但是numa互联访存效率则会导致CPU的IPC利用效率下降2到3个数量级,因此专业的服务器开发商通常都不关心CPU的IPC和频率,而更关心numa互联效率及其优化方案,因此异数OS的这个服务器CPU分析工具并不测试CPU的IPC,而主要测试项目是CPU Diff,当然这个CPU Diff和其他测试工具有不同点,他的主要目标是更加深入的揭露一些CPU厂的作弊行为,CPU厂一般处于自身利益考虑,只放出最小延迟的CPU Diff,这个Diff是不负责任并有害的,因为最小延迟测试同一时间只启动两个CPU核做延迟测试,其他核都是空载空闲的,这与实际云环境不同,云环境一般多核访存负载都很高,并且无法做针对性的numa优化,这时测到的CPU延迟会成十倍甚至百倍的增加,从而使IPC下降到甚至不足百分之一,因此CPU厂通常为了掩盖问题真像而只提供最小互联延迟,并让这个成绩好看,这种行为甚至能忽悠到很多专业的服务器开发商,但这个成绩在更多时候可能要反着理解才有意义,因为一些做了numa分布式内存解决方案的cpu,最小延迟表现可能是很差的,但拥塞延迟效率却会提高,反而是一些没有做numa分布式内存的cpu,最小延迟数据很好看,但拥塞延迟完全不能入眼。

因此异数OS的 CPU Diff工具提供了拥塞延迟测试数据,拥塞延迟是所有CPU核同时启动延迟测试得到的CPU延迟数据,之后通过拥塞延迟与最小延迟的比值来得到拥塞延迟效率,单位为千分之一,该值体现服务器CPU全核负载下的真正效率,这个效率可用于分析云上实际部署后的性能,比如拥塞效率是千分之十,则说明一个100核的服务器CPU在访存满载时性能不如一个单核CPU。

12700H win平台例子

在这里插入图片描述

在这里插入图片描述

打开工具选择第10项,CPU Diff,测得12700H测得的延迟表现,以此举例说明,Core-MinLatencyTest是最小延迟测试,单位是ns他的成绩几乎和CPU厂发布的最小延迟数据一致,Core-ThrongLatencyTest是拥塞延迟测试,数值超过999ns时显示溢出,Throng efficiency是拥塞访存效率,他是Core-ThrongLatencyTest成绩和Core-MinLatencyTest成绩的比值,单位是千分之一,如果Core-ThrongLatencyTest数值显示溢出,可用Throng efficiency反推拥塞延迟,可以看出12700H的最小延迟测试成绩很优秀,无论大核小核都只有40ns到50ns延迟,但在拥塞延迟测试中,大核延迟则增加了10倍,小核延迟增加了20倍,这说明你的游戏客户端或者服务器在做粒子物理仿真时开更多的核是无意义的,开2到4个CPU核甚至只开1个核反而更优,小核12访问小核19最小延迟45ns,但拥塞延迟已超过999溢出,拥塞延迟效率千分之39,因此反推出拥塞延迟为1153ns,通过对比最小延迟分布和拥塞延迟分布可以发现最小延迟分布仅有1个梯度,而拥塞延迟分布有3个梯度,拥塞延迟梯度分布更加符合numa互联瓶颈的分布梯度,因此更加符合云服务器实际有负载时的场景情况。

平台支持

该测试工具目前支持x64 arm64 sw64三种指令集,采用静态链接编译,不开放源代码,因此不存在编译优化,操作系统优化,libc优化作弊等问题,另外在linux上需要开启numa巨页支持,一些国产服务器CPU可能由于不专业所以没有做好numa巨页支持,这需要服务器CPU厂自己解决。numa巨页支持属于服务器必不可少的选项,在很多基础软件中都有大量使用,比如大多数的数据库软件,numa 巨页的开启方法见后面两张图,分别是申威sw1621,阿里云安培32核arm的,其他平台可以照抄或自行研究。

在这里插入图片描述

下载链接

Github下载地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/59397.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【论文笔记】最近看的时空数据挖掘综述整理8.27

Deep Learning for Spatio-Temporal Data Mining: A Survey 被引用次数:392 [Submitted on 11 Jun 2019 (v1), last revised 24 Jun 2019 (this version, v2)] 主要内容: 该论文是一篇关于深度学习在时空数据挖掘中的应用的综述。论文首先介绍了时空数…

react css 污染解决方法

上代码 .m-nav-bar {background: #171a21;.content {height: 104px;margin: 0px auto;} }import React from "react"; import styles from ./css.module.scssexport default class NavBar extends React.Component<any, any> {constructor (props: any) {supe…

数组(个人学习笔记黑马学习)

一维数组 1、定义方式 #include <iostream> using namespace std;int main() {//三种定义方式//1.int arr[5];arr[0] 10;arr[1] 20;arr[2] 30;arr[3] 40;arr[4] 50;//访问数据元素/*cout << arr[0] << endl;cout << arr[1] << endl;cout &l…

Redis怎么测试?

有些测试朋友来问我&#xff0c;redis要怎么测试&#xff1f;首先我们需要知道&#xff0c;redis是什么&#xff1f;它能做什么&#xff1f; redis是一个key-value类型的高速存储数据库。 redis常被用做&#xff1a;缓存、队列、发布订阅等。 所以&#xff0c;“redis要怎么…

目标检测任务数据集的数据增强中,图像垂直翻转和xml标注文件坐标调整

需求&#xff1a; 数据集的数据增强中&#xff0c;有时需要用到图像垂直翻转的操作&#xff0c;图像垂直翻转后&#xff0c;对应的xml标注文件也需要做坐标的调整。 解决方法&#xff1a; 使用pythonopencvimport xml.etree.ElementTree对图像垂直翻转和xml标…

HiveSQL刷题

41、同时在线人数问题 现有各直播间的用户访问记录表&#xff08;live_events&#xff09;如下&#xff0c;表中每行数据表达的信息为&#xff0c;一个用户何时进入了一个直播间&#xff0c;又在何时离开了该直播间。 user_id (用户id)live_id (直播间id)in_datetime (进入直…

web自动化框架:selenium学习使用操作大全(Python版)

目录 一、浏览器驱动下载二、selenium-python安装&#xff08;打开网站、操作元素&#xff09;三、网页解析&#xff08;HTML、xpath&#xff09;四、selenium基本操作1、元素定位八种方法2、元素动态定位3、iframe切换4、填充表单_填充文本框5、填充表单_单选按钮6、填充表单_…

山海优选卷轴模式源码实例分享

山海优选通过与绿色有机产品供应商和生产商的合作&#xff0c;建立起稳定的供应链关系&#xff0c;确保产品的绿色、有机、健康。通过产品认证和检测&#xff0c;为会员提供可信赖的绿色产品。积分激励机制设计 山海优选引入“绿色积分”机制&#xff0c;通过会员购买产品、参与…

【Java Web】用拦截器的方式获取用户信息

流程&#xff1a;从cookie中获取凭证&#xff0c;根据凭证查询用户&#xff0c;并在本次请求中持有用户&#xff0c;在视图模板上显示登录用户的信息。 1. 定义拦截器 package com.nowcoder.community.controller.Interceptor;import com.nowcoder.community.entity.LoginTic…

MyBatis-Plus的公共字段自动填充

文章目录 1. 在实体类的相应属性上添加TableField注解2. 自定义元数据对象处理器3. 为了解决对象处理器MyMetaObjecthandler 获取不到外界数据的情况 1. 在实体类的相应属性上添加TableField注解 package com.itheima.reggie.entity;import com.baomidou.mybatisplus.annotati…

docker 搭建私有仓库和制作镜像

目录 1、使用mysql:5.6和 owncloud 镜像&#xff0c;构建一个个人网盘。 1.1 启动mysql镜像 1.2 启动owncloud镜像 1.3 浏览器访问 1.4 总结 2、安装搭建私有仓库 Harbor 2.1 下载docker-compose并赋予执行权限 2.2 磁盘挂载&#xff0c;保存harbor 2.3 修改配置文件…

4G WiFi LoRa无线外夹式超声波管道流量计MQTT/http协议 json数据说明

ip&#xff1a;114.128.112.131 port&#xff1a;1883 uname&#xff1a;scwl_flowmeter pwd&#xff1a;b123 topic&#xff1a;iot/data/scwlflowmeter { “deviceId”:“设备序列号”, “flow”:“瞬时流量&#xff08;浮点数&#xff09;”, “heatFlow”:“瞬时热流量&am…

Docker技术--Docker容器管理

1.Docker容器相关的指令(单个容器操) 我们之前在Docker中部署了一个实际应用的案例wordpress,其中使用到了一些相关于容器的指令,那么下面我们一起来总结使用。 Docker指令的语法规则如下所示: Docker + 命令关键字 [+参数选项] -1类:关闭、开启、重启、开启自启 systemct…

mysql问题处理大全

mysql问题处理大全 一&#xff1a;mysql中文乱码问题&#xff1a; 解决一次问题 show variables like “%chara%” character_set_client 为客户端编码方式&#xff1b; character_set_connection为建立连接使用的编码方式&#xff1b; character_set_database为数据库的编码…

Web 自动化神器 TestCafe—页面高级操作篇

♥ 前 言 在【Web 自动化神器 TestCafe — 页面基本操作篇】这篇文章中我们介绍了TestCafe页面交互的一些基本使用 Web 自动化神器 TestCafe — 页面基本操作篇 这篇文章接着上一篇来给大家介绍一下 TestCafe 页面交互的一些高级操作。 一、鼠标拖拽 鼠标拖拽鼠标拖拽 …

枚举分片容错性动态扩展

枚举分片之前的《mycat字符串枚举分片示例》中已经介绍过。 使用这种分片策略之后碰到了一个问题&#xff1a; 场景&#xff1a; 使用连锁店的店铺编号枚举分片&#xff08;第1至第100分布店分在第一个分片&#xff0c;第101至第250分店&#xff09;&#xff0c;全国的连锁店会…

JavaScript常见的运算符

一、运算符和运算元 1.认识运算符 在小学的时候我们就学习了各种运算符&#xff0c;比如加号 、乘号 *、减号 - 、除号/ 几乎所有的编程语言都有各种各样的运算符(也被称之为操作符&#xff0c;operators) 初次接触这些运算符, 你会感觉种类繁多, 难以记忆.但是并不需要特别…

Kotlin判断null比较let布尔值Boolean

Kotlin判断null比较let布尔值Boolean class MyData {val count: Int? 2023val number: Int? null }fun main(args: Array<String>) {val data MyData()val year 2022if (data.count ! null) {if (data.count > year) {println("data.count ! null")}}…

CSS 盒子模型

前言 盒子模型-组成 CSS盒子模型是一种用来描述元素在页面布局中占据空间的模型。它将每个元素看作由内容区域、内边距、边框和外边距组成的一个矩形框。 盒子模型的组成部分包括&#xff1a; 内容区域&#xff08;Content&#xff09;&#xff1a;显示元素的实际内容&#xf…

无涯教程-Android - Frame Layout函数

Frame Layout 旨在遮挡屏幕上的某个区域以显示单个项目&#xff0c;通常&#xff0c;应使用FrameLayout来保存单个子视图&#xff0c;因为在子视图彼此不重叠的情况下&#xff0c;难以以可扩展到不同屏幕尺寸的方式组织子视图。 不过&#xff0c;您可以使用android:layout_grav…