从硬件角度看服务器性能调优

news2024/12/23 17:09:44

bios整体配置

bios系统设置Hyper Thread开启超线程,设置后lscpu命令Thread(s) per core 值显示为 2。超线程可以理解为CPU的虚拟化,一颗物理CPU并行执行两条流水线指令。确认处理器基本频率及睿频频率,部分处理器基础频率低,但是睿频不低。

内核引导参数

内核引导参数大体上可以分为两类:一类与设备无关,另一类与设备有关。

idle参数

调整CPU运行频率及状态,减少低功耗状态。需要修改内核状态参数idle,如下:

idle=poll
idle=halt
idle=nomwait

对CPU进入休眠状态的额外设置。

poll:从根本上禁用休眠功能(也就是禁止进入C-states状态),可以略微提升CPU性能,功耗也较高;
halt:直接使用HALT指令让CPU进入C1/C1E休眠状态,但是不再继续进入C2/C3以及更深的休眠状态。属于综合状态,CPU唤醒速度快,功耗略微降低。
nomwait :进入休眠状态时禁止使用CPU的MWAIT指令。MWAIT是专用于Intel超线程技术的线程同步指令,可以提升CPU的超线程效能。

isolcpus

isolcpus=<CPU编号列表>

将列表中的CPU从内核SMP平衡和调度算法中剔除,该参数的主要用于实现特定cpu只运行特定进程的目的。当然剔除后并不是绝对不能再使用该CPU,仍然可以通过task_set指定特定的进程使用哪个CPU。

查看核心是否被过滤的命令:taskset -pc 1

调节tuned模式

tuned-adm active

tunning作为一个守护进程,监视网卡、磁盘、内存、CPU等接口状态,并提供了高吞吐、低时延、禁止大页等模式供选择,省的用户到处修改配置文件。

e6be135a80e4afccc7e726828782f3f9.png

turbostat -n 1

监测cpu的工作频率,确认cpu是否处于C0满速运行状态。

关闭无关的防火墙配置,减少多余性能损耗。

Iptables、firewalld

2cac83f6a1dec8a268f9f194dd644f79.png

关闭selinux模块(用于控制访问权限的模块)

e5fdc3f2124e12d0f7ac43653004bccf.png

上述内核参数修改之后需要reboot重启才能生效。

numa

将应用程序绑定在网卡对应的numa上,使用lspci查看目标网卡在哪颗CPU对应的PCI卡槽上,使用lscpu查看物理CPU对应的逻辑cpu node节点号。

使用taskset查看所有cpu核心,排除cpu被过滤的影响;使用numactl --cpunodebind=0 --localalloc .exec 启动应用;然后使用top查看idle值确认绑定效果。

系统性能测试摸底

用unixbench、sysbench跑跑系统分,如果是数据库服务器,推荐使用sysbench。

f197dd40f256dd2436e30e4c311164e3.png

用iperf,qperf测网卡时延带宽及吞吐量。

用nmom工具查看是否有频繁的内存页换入换出pageout及cache miss,根据测试结果对应调整应用程序的资源分配。

性能测试之前清一下缓存,保证实验环境干净,减少干扰分析因素:

echo 3 > /proc/sys/vm/drop_caches

观察内存分配变化,如果波动较大,使用top -2监控CPU占用是否存在多应用程序争抢资源的问题。

网卡性能

对于多核CPU服务器,如果把硬件中断分配给不同的CPU (core) 处理能有更好的平衡性能。如果让网卡中断/磁盘IO中断独占1个CPU (core)的话可以提高整体处理效率,减少数据跨核传输。网卡中断绑核过程为:关闭中断,直接将网卡绑定到指定CPU上,不让IRQ balance服务分配。

绑核之后使用cat proc/interrupts 查看应用绑定的CPU对应的网卡中断是否符合预期,检查对应的numa节点其不同CPU核中断分配是否均衡。

Irq balance的工作过程:

/proc/stat获取每个cpu的负载情况,/proc/interrupts获取每个节点的中断负载情况。得到每个节点的负载以及每个中断的负载之后,需要找到负载较高的节点,把该节点的中断从节点中移动到其他的节点来平衡每个cpu的中断。

手工绑定中断亲和关系,可以配置一个中断号和多个CPU绑定:

/proc/irq/{IRQ_ID}/smp_affinity

echo 11 > /proc/irq/24/smp_affinity

RSS网卡多队列技术

支持RSS(Receive Side Scaling)的网卡,通过多队列技术,每个队列对应一个中断号,通过对每个中断的绑定,可以实现网卡中断在CPU多核上的分配。当网卡收到数据包时会产生中断,通知内核有新数据包,然后内核调用中断处理程序进行处理,把数据包从网卡缓存拷贝到内存,因为网卡缓存大小有限,如果不及时拷出数据,后续数据包将会因为缓存溢出被丢弃。通过多队列网卡驱动的支持,将各个队列通过中断绑定到不同的CPU核上,以满足网卡的需求。网卡消息积压一点点,应用时延会成指数级变化,因此RSS特性可以极大提高应用处理阈值。

RPS/RFS

在不支持RSS的环境中,RPS/RFS提供了软件上的替代方案。RPS(Receive Packet Steering)是把一个rx队列的软中断分发到多个CPU核上,从而达到负载均衡的目的。RFS(Receive Flow Steering)是RPS的扩展,RPS只依靠hash来控制数据包,提供负载平衡,没有考虑到应用程序的位置(应用程序所在CPU)。RFS目标是通过指派应用线程正在运行的CPU处理中断,增加数据缓存的命中率。

开启方式:

# echo 7 > /sys/class/net/eth0/queues/rx-0/rps_cpus

#开启rps,16进制7代表二进制111,对应CPU0-2

此时软中断基本分配到CPU0-2

nmap/os_scan扫描

nmap不止是漏洞探测器或安全扫描器,其还有一个核心功能是操作系统侦测,包括识别出操作系统类型、版本号、目标机硬件平台类型及附加信息(如TCP序号产生方式、IPID产生方式、启动时间等)。

应用crash异常分析

windows服务器可以使用windbg工具分析,linux服务器使用pstack导出进程堆栈,通过堆栈查看waitlock等关键字确定死锁线程,通过bt找到死锁线程等待的锁对象,通过lockowner持有该锁的线程,分析该线程堆栈即可找到死锁原因。通常情况下,是该线程持有多个同步资源(锁),并且被abort了,一般出在异常退出onError处理不完善,网络断开重连导致资源状态脏等场景。

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

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

相关文章

看完了你还能不懂JAVA内存模型(JMM),我输了

前言 开篇一个例子&#xff0c;我看看都有谁会&#xff1f;如果不会的&#xff0c;或者不知道原理的&#xff0c;还是老老实实看完这篇文章吧。 Slf4j(topic "c.VolatileTest") public class VolatileTest { static boolean run true; public static void main(S…

基于Java+Swing实现《扫雷》游戏

基于JavaSwing实现《扫雷》游戏一、系统介绍二、功能展示三、其他系统一、系统介绍 windows自带的游戏《扫雷》是陪伴了无数人的经典游戏&#xff0c;本程序参考《扫雷》的规则进行了简化&#xff0c;用java语言实现&#xff0c;采用了swing技术进行了界面化处理&#xff0c;设…

基于蚁群算法求解运钞车路径规划问题(Matlab代码实现)

&#x1f352;&#x1f352;&#x1f352;欢迎关注&#x1f308;&#x1f308;&#x1f308; &#x1f4dd;个人主页&#xff1a;我爱Matlab &#x1f44d;点赞➕评论➕收藏 养成习惯&#xff08;一键三连&#xff09;&#x1f33b;&#x1f33b;&#x1f33b; &#x1f34c;希…

[附源码]JAVA毕业设计桔子酒店客房管理系统(系统+LW)

[附源码]JAVA毕业设计桔子酒店客房管理系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目…

vue app开发调用原生方法实现权限访问授权处理(一)

vue app开发调用原生方法实现权限访问授权处理 前提&#xff1a;在写代码之前应该想清楚调用原生安卓、ios的方法&#xff0c;就应该遵循双端的方法规则&#xff0c;调用方法时应该注意&#xff0c;在这里先主要介绍一下注意事项&#xff1a; 根据App发布应用市场的要求&…

【sciter】安全应用列表控件总结

一、效果图 二、功能点 实现电脑文件拖拽进入到安全桌面,读取文件路径,生成应用。可以配置允许拖拽进入安全桌面的文件应用。点击添加图标,可以添加应用到安全桌面中。在安全桌面列表中每一个应用实现双击、失去焦点,获取焦点、右键事件在安全桌面列表中每一个应用可以实现…

[附源码]计算机毕业设计springboot疫情防控平台

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

HTML5期末大作业:用DIV+CSS技术设计的网页与实现(剪纸传统文化网页设计主题)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

二本土木工程管理毕业5年,零基础转型大数据开发,收割长沙深圳多个大数据offer...

点击上方 "大数据肌肉猿"关注, 星标一起成长点击下方链接&#xff0c;进入高质量学习交流群今日更新| 1052个转型案例分享-大数据交流群分享一位学习群同学的转型经历&#xff0c;他是二本土木类工程管理专业&#xff0c;17年毕业&#xff0c;毕业后在长沙工地从事了…

Java基于springboot+vue的汽车饰品销售购物商城系统 前后端分离

开发背景 随着我国科技和经济的发展&#xff0c;我国的汽车数量也越来越多&#xff0c;基本家家户户都拥有了自己的汽车&#xff0c;为了让汽车用起来更加的舒心&#xff0c;于是各类琳琅满目的汽车饰品也出现了。大多数时候人们在购买汽车饰品的时候都回到这些专卖店购买&…

C++之面向对象

目录 对象与类 类的语法&#xff1a; C中class与struct的区别&#xff1a; 通过类实例化对象的方式 具体案例 类作用域与分文件编写 创建circle.h头文件 创建源文件circle.cpp 创建all.cpp来作为程序的入口 封装 封装的意义 访问权限符 成员属性私有化 优点 具体…

Python解题 - 括号上色(递归)

题目 小艺酱又得到了一堆括号。括号是严格匹配的。现在给括号进行上色。上色有三个要求&#xff1a; 1、只有三种上色方案&#xff0c;不上色&#xff0c;上红色&#xff0c;上蓝色。 2、每对括号只有一个上色。 3、相邻的两个括号不能上相同的颜色&#xff0c;但是可以都不上色…

【Java面试指北】Exception Error Throwable 你分得清么?

读本篇文章之前&#xff0c;如果让你叙述一下 Exception Error Throwable 的区别&#xff0c;你能回答出来么&#xff1f; 你的反应是不是像下面一样呢&#xff1f; 你在写代码时会经常 try catch(Exception)在 log 中会看到 OutOfMemoryErrorThrowable 似乎不常见&#xff0c…

为什么大部分人做网赚是赚不到钱的,这才是真正的原因!

说实话&#xff0c;互联网已经发展到现在的水平&#xff0c;目前来看&#xff0c;互联网上只存在两种平台&#xff0c;一种是社交平台&#xff0c;一种是内容平台。 所有的抖音、知乎、小红书、搜索引擎、淘宝等等这些都是内容平台&#xff0c;如果你想要解决精准流量问题&…

JSP+MySQL基于SSM的高校毕业生就业管理系统

本高校毕业生就业管理系统主要包括系统用户管理模块、招聘信息管理模块、简历接收管理、投递简历管理、登录模块、和退出模块等多个模块。它帮助高校毕业生就业管理实现了信息化、网络化,通过测试,实现了系统设计目标,相比传统的管理模式,本系统合理的利用了高校毕业生就业管理…

配电网重构|基于新颖的启发式算法SOE的随机(SDNR)配电网重构(Matlab代码实现)【算例33节点、84节点、119节点、136节点、417节点】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f4dd;目前更新&#xff1a;&#x1f31f;&#x1f31f;&#x1f31f;电力系统相关知识&#xff0c;期刊论文&…

【数据集NO.3】人脸识别数据集汇总

文章目录前言一、IMDB-WIKI人脸数据集二、WiderFace人脸检测数据集三、GENKI 人脸图像数据集四、哥伦比亚大学公众人物脸部数据库五、CelebA人脸数据集六、美国国防部人脸库七、MTFL人脸识别数据集八、BioID人脸数据集九、PersonID人脸识别数据集十、CMU PIE人脸库十一、Youtub…

Linux虚拟内存

问题 什么是虚拟内存地址 &#xff1f;Linux 内核为啥要引入虚拟内存而不直接使用物理内存 &#xff1f;虚拟内存空间到底长啥样&#xff1f;内核如何管理虚拟内存&#xff1f;什么又是物理内存地址 &#xff1f;如何访问物理内存&#xff1f; 什么是虚拟内存地址 举一个生活…

Redis学习笔记(四)

事务 一个命令执行的队列&#xff0c;中间不会被打断或者干扰基本操作、 开启事务&#xff1a;multi 作用&#xff1a;设定事务的开启位置&#xff0c;执行此命令后&#xff0c;后续所有指令均加入事务中 执行事务&#xff1a;exec 作用&#xff1a;设定事务结束的位置&#xf…

【MySQL】表的增删改查(一)

你可以了解世间万物&#xff0c;但追根溯源的唯一途径便是亲身尝试。——《心灵捕手》 前言&#xff1a; 大家好&#xff0c;我是拳击哥&#xff0c;今天给大家讲解的是mysql表GRUD操作中的新增数据、查询数据以及表中数据的排序、去重等。因篇幅过长&#xff0c;分为两期来讲解…