【案例实操】银河高级服务器操作系统实例分享,应用迁移海光服务器后CPU消耗高问题分析处理

1. 服务器环境以及配置

【机型】

       处理器:

Hygon C86 7285

       内存:

16G

【内核版本】

【 OS 镜像版本】

0518-server

【 nkvers 命令输出】

2. 问题现象描述

客户现场红帽系统所在平台为 intel:

版本如下:

银河麒麟操作系统所在平台为海光:

版本如下:

将程序从红帽迁移至麒麟后, 在同样的压测下, 银河麒麟操作系统上该进程 cpu 占用明显升高。

红帽上面的 top 看到 hostl 进程占用 cpu 约为 151%

而银河麒麟操作系统上 top 看到的 hostl 进程占用 cpu 约为 380%

3. 问题分析

在银河麒麟操作系统上, 通过 top -Hp 查看该进程的线程占用情况如下:

然后 strace -p 跟踪每个线程的 pid, 发现所有线程都在不停的进行 nanosleep,可以知道应用在不停的调用系统的 nanosleep 函数:

通过 perf -p 采样信息来看, 消耗主要是在__pv_queued_spin_locak_slowpath函数:

继续perf -g采样,可以看到__nanosleep最终会调用__pv_queued_spin_lock_slowpath。 结合 strace 跟踪到的系统调用来看, 也可以看出应用在不停的调用 nanosleep, 从而导致 cpu 使用率的上升。

那么为什么同样的代码, 麒麟和海光的组合, cpu 使用率会高很多, 这个怀疑和海光平台有关, 怀疑在压测环境下, 程序不停调用 nanosleep, 海光平台比 intel 平台开销增大, 和系统无关

为了验证上述结论, 我们编写了如下测试代码进行测试, 循环执行 1 万次nanosleep 1ms。 分别在红帽-inetl, 麒麟-海光, 麒麟-intel 上分别做测试。

测试结果如下:

红帽-intel 耗时约 11s:

麒麟-海光耗时约为 13s:

麒麟-intel 耗时约为 11s,基本和红帽-intel 持平, 而且 cpu 使用率也和红帽-intel 持平。

4. 问题分析结果

从 strace 以及 perf 的分析, 程序不停的调用系统 nanosleep 增加了系统的开销。 而海光平台相较于 intel 平台, 在现场压测环境中, 海光平台的开销较大。

5. 解决方案

在海光平台上面, 应用厂家尽量不要频繁调用系统 nanosleep 函数, 可以考虑变更一下代码, 走其他的系统调用方式。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

windows系统搭建go开发编译环境

1、前言 windows系统,从零开始搭建go开发编译环境详细步骤。 2、go下载和安装 2.1 下载 下载地址如下: All releases - The Go Programming Language 可以根据自己的需要选择下载对应的版本下载即可。 对于windows系统,如果是6…

HTCC电路板是什么,有哪些主要应用领域

HTCC英文名称是High-Temperature Co-Fired Ceramic,又称高温共烧多层陶瓷基板。因其具有导热系数高、耐热性好、热膨胀系数小、机械强度高、绝缘性好、耐腐蚀等优势,是保持高速增加的PCB线路板之一。 SPEA作为专业电路板测试设备方案服务商,公…

动规算法-地下城游戏

在刷题练习专栏中,已经写了两篇文章实现对动态规划入门题目的讲解了,动态规划这类题目很难很好的掌握,今天给大家带来稍微深入的题目,帮助大家更好的理解动态规划的算法思想,加深对该算法的理解,建议看每道…

Leo赠书活动-26期 不同数据库背后的数据存储方案

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 赠书活动专栏 ✨特色专栏:…

Spark的性能调优——RDD

前言 RDD 是 Spark 对于分布式数据集的抽象,每一个 RDD 都代表着一种分布式数据形态。比如 lineRDD,它表示数据在集群中以行(Line)的形式存在;而 wordRDD 则意味着数据的形态是单词,分布在计算集群中。 参…

N1000A Keysight DCA-X 宽带宽示波器主机 简述

Keysight N1000A DCA-X 宽带宽示波器主机由keysight 是德科技生产,该产品属于高端专业级别的测试设备。其目标用户群包括但不限于电子制造、半导体设计与测试、通信设备研发等行业的工程师和技术人员。 DCA-X 平台由主机和各种模块组成,可以执行灵活的…

【MyBatis】零基础从入门到进阶(源码级深入详解)

1 MyBatis概述 1.1 框架 ● 在⽂献中看到的framework被翻译为框架 ● Java常⽤框架: ○ SSM三⼤框架:Spring SpringMVC MyBatis ○ SpringBoot ○ SpringCloud ○ 等。。 ● 框架其实就是对通用代码的封装,提前写好了⼀堆通用…

基于docker的oracle12.2.0.1部署及oracle使用与docker镜像容器制作迁移方法

基于docker的oracle12.2.0.1部署及oracle使用与docker镜像容器制作迁移方法 本文介绍了基于docker的oracle12.2.0.1部署,包含了oracle基本配置、监听器和实例启动方法、PDB和CDB操作方法、表空间建立和用户数据库建立、常见启动问题解决等,并介绍了镜像制…

曹操出行巨亏70亿: 市场份额承压,上百次行政处罚与数千条投诉

《港湾商业观察》黄懿 4月29日,CaoCao Inc. (曹操出行有限公司,下称“曹操出行”)向港交所主板递交上市申请,其国内运营主体为杭州优行科技有限公司(下称“杭州优行”)。 这是继嘀嗒出行、如祺出行、小马…

Redis数据类型(下篇)

5.Redis有序集合zset(sorted set) 本质就是在set的基础上,每个val值前面加了一个score分数值。 (1)向有序集合中添加多个(或者一个)元素和其对应的分数 127.0.0.1:6379> zadd zset1 100 a 90 b 80 c 70 d 60 e (…

MySQl基础入门⑬.5

创建多表连接查询 表准备 CREATE TABLE 员工信息 (员工号 INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,姓名 VARCHAR(50) NOT NULL,性别 ENUM(男, 女) NOT NULL,出生日期 DATE NOT NULL,部门 VARCHAR(50) NOT NULL,手机号码 VARCHAR(20) NOT NULL,-- 根据数据库不同&#x…

怎么做好企业短信服务呢?(文字短信XML接口示例)

企业短信服务已经成为各行各业都信赖的行业推广方式之一,并且短信行业也与时俱进的发展着,随之而来的就是市场上短信平台的数量也随之增多。那么怎么在鱼龙混杂的短信行业中选择适合自己的企业短信服务平台呢?企业短信服务平台又适用于哪些应…

合并两个有序链表和合并 K 个升序链表

21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4]示例 2: 输入:l1 [], l2 […

【C语言】字符串左旋(三种方法)

(方法3只给出思路参考) 问题 描述: 实现一个函数,可以左旋字符串中的k个字符。 例如: ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 分析 我们先来理解一下,什么叫“左旋”?其实是这…

html+CSS+js部分基础运用12

一、显示列表项的内容 编写javaScript代码实现用户登录时数据合法性校验功能,界面如图教材P338 第2题,效果如下图所示: 图1 显示列表项内容 二、日期的处理 实时显示当前时间及累计登录时间,如下图2所示。[提示window.setInt…

两款 IntelliJ IDEA 的 AI 编程插件

介绍两款 IntelliJ IDEA 的 AI 编程插件:通义灵码和 CodeGeeX。 通义灵码 这是由阿里推出的一个基于通义大模型的 AI 编码助手。 它提供了代码智能生成、研发智能问答等功能。通义灵码经过海量优秀开源代码数据训练,可以根据当前代码文件及跨文件的上下…

【Moveit】step或stl文件转urdf,并添加到机械臂上

【Moveit】step或stl文件转urdf,并添加到机械臂上 文章目录 【Moveit】step或stl文件转urdf,并添加到机械臂上1. 安装sw_urdf_exporter插件2. 导出urdf3. 将夹爪连接到机械臂上4. 使用moveit_setup_assistant配置功能包Reference ROS专门提供了一种机器人…

clion配置ssh隧道转发 实现远程主机功能

clion配置ssh隧道转发 clion自带的ssh配置只能配置主机和用户名的格式来实现ssh,因此如果需要通过中间设备来访问调试主机的话就无法使用了。 配置ssh隧道的方式有两种,一种是直接配置 ~/.ssh/config 配置文件,一种是使用跳板机工具。clion…

Java邮件客户端设计实现:使用JavaMail向QQ邮箱发邮件

目录 JavaMail 用JavaMail向qq邮箱发消息 ▐ 授权码的获取 JavaMail JavaMail 是一个用于发送和接收电子邮件的 Java API。它提供了一个平台无关和协议无关的框架,允许开发人员通过标准电子邮件协议(如 SMTP、POP3 和 IMAP)来创建、发送…

【TB作品】MSP430 G2553 单片机口袋板,电风扇模拟控制系统设计

功能 电风扇模拟控制系统设计 基本要求: 用LED/LCD 显示电风扇的工作状态 (1,2,3,4 四档风力), 显示风类:“自然风”、“常风”和“睡眠风”。 设计 “自然风”“常风”和“睡眠风” 三个风类键用于设置风类 设计一个“摇头”键用于控制电机摇头。 设计一个“定时”键&#x…