2021-02-26_tasking_nodelock_ultimate_secpatch-程序员宅基地

技术标签: 笔记  

本文是转载别人的。
引言
在进行服务器硬件性能测试的过程,不知道大家有没有发现一个问题,就是我明明在同一台机器上进行网卡、storage、Momery性能测试的时候,我仅仅是更换了OS就发现,与之前的性能测试结果偏差很大,那么是什么因素导致的呢?其实用交叉验证的方法很容易判断,OS的因素影响很大,正常情况下调优分为三个层次:硬件本身、BIOS设置、OS本身,这方向尤其在Storage上体现的淋淋尽职,比如IO读写在Windows上跟linux上就有很大的差异,想了解的朋友可以参考这个链接link,那么下面进入今天的正题。OS调优的方向以下是博主根据前辈的经验摸索到的知识,同时也查阅了相关材料并且小心印证总结了在以下几个方面的常见调优方法,如有什么不对的地方可以指出来,博主会去修正。在这里插入图片描述Note:由于本人对文件系统方面涉及不深,所以就不在此篇文章进行说明,感兴趣的朋友可以自行查找相关内容CPU性能调优的几个方向CPU: governor(时钟频率方面)状态如下:performance (性能):强制 CPU 尽可能使用最高的时钟频率powersave (省电):强制 CPU 尽可能使用最低的时钟频率ondemand (按需):系统负载高时,CPU 使用最高的时钟频率;系统空闲时,CPU 使用最低的时钟频率userspace (用户态):允许用户或用户态程序自行设置时钟频率conservative (保守):类似 ondemand,区别是它根据是否适合负载来调整时钟频率,而不是简单的在最高和最低之间选择查询当前CPU支持的频率是什么(每个core都可以查到)[root@localhost /]# cpupower --cpu all frequency-info --governors1查询当前CPU正在使用的频率模式(每个core都可以查到)[root@localhost /]# $ cpupower --cpu all frequency-info --policy1将CPU的运行频率打到performance状态[root@localhost /]# cpupower frequency-set -g performance1CPU: energy_perf_bias(能耗/性能偏差方面)状态如下:performance(性能):处理器不为了节省能源而牺牲性能normal(正常):处理器为了可能明显的节省能源而容许牺牲较小的性能powersave(省电):处理器为了最有效率的节省能源而接受可能明显的性能减少[root@localhost /]# x86_energy_perf_policy -rcpu0: 0x0000000000000006cpu1: 0x0000000000000006cpu2: 0x0000000000000006cpu3: 0x0000000000000006cpu4: 0x0000000000000006cpu5: 0x0000000000000006cpu6: 0x0000000000000006cpu7: 0x0000000000000006123456789现在是将其达到performance状态[root@localhost /]# x86_energy_perf_policy performancecpu0: 0x0000000000000000cpu1: 0x0000000000000000cpu2: 0x0000000000000000cpu3: 0x0000000000000000cpu4: 0x0000000000000000cpu5: 0x0000000000000000cpu6: 0x0000000000000000cpu7: 0x0000000000000000123456789CPU: min_perf_pct(CPU的P-state出发)状态如下:max_perf_pct:P-State 的最大值,指可用性能的百分比num_pstates:硬件支持的 P-State 数查询 min_perf_pct[root@localhost /]# cat /sys/devices/system/cpu/intel_pstate1Memory性能调优的几个方向transparent_ hugepages(透明巨页简称THP )状态如下:always:尝试为任意进程分配巨页madvise:利用 madvise() 系统调用只为个别进程分配巨页never:禁用透明巨页查看当前的transparent_huggepage状态[root@localhost /]# cat /sys/kernel/mm/transparent_hugepage/enabledy1设置当前的transparent_huggepage状态[root@localhost /]#echo “always” > /sys/kernel/mm/transparent_hugepage/enabled1vm.{dirty_ratio,dirty_background_ratio,swappiness}vm.dirty_background_ratio: 设置 dirty pages 开始后台回写时的百分比vm.dirty_ratio: 设置 dirty pages 开始回写时的百分比vm.swappiness: 控制从物理内存换出到交换空间的相对权重,取值为 0 到 100。更低的值导致避免交换,而更高的值导致尝试使用交换空间Storage性能调优的几个方向Readahead(读取文件列表的内容到内存,以便当实际需要时可从缓存读取)查看缓存读取大小[root@localhost /]#/sys/block/sda/queue/read_ahead_kb1Scheduler(I/O调度器)模式如下:cfq:Completely Fair Queueing(完全公平队列)调度器,它将进程分为实时、尽其所能和空闲三个独立的类别。实时类别的进程先于尽其所能类别的进程执行,而尽其所能类别的进程总是在空闲类别的进程之前执行。默认情况下分配到尽其所能类别的进程deadline:尝试为 I/O 请求提供有保障的延迟。适用于大多数情况,尤其是读取操作比写入操作更频繁的请求 ---->mq-deadlinenoop:执行简单的 FIFO(先进先出)调度算法,并实现请求合并。适合使用快速存储的 CPU 计算密集型系统----->noneblk-mq:即 Multi-Queue Block IO Queuing Mechanism(多队列块 IO 队列机制),它利用具有多核的 CPU 来映射 I/O 队列到多队列。与传统的 I/O 调度器相比,通过多线程及多个 CPU 核心来分发任务,从而能够加速读写操作。该调度器适合高性能的闪存设备如PCIe SSD查看当前的scheduler是什么,kernel支持哪几种#debian 9.x 支持none/kyler/mq-deadline默认的是none调度器,centos7一般支持deadline/cfg/noop 默认是cfq)[root@localhost /]# cat /sys/block/sda/quene/scheduler 12临时修改当前的的i/o scheduler为deadline[root@localhost /]#echo “deadline” > /sys/block/sda/queue/scheduler1其中在grub.cfg中追加 elevator=deadline 内核参数,调度模式将永久生效成deadlinekernel.sched_{min_granularity_ns,wakeup_granularity_ns,migration_cost_ns}kernel.sched_min_granularity_ns: 针对 CPU 计算密集型任务设置调度器的最小抢占粒度kernel.sched_wakeup_granularity_ns: 设置调度器的唤醒粒度,这将延迟抢占效应,并减少过度调度kernel.sched_migration_cost_ns: 调度器认为迁移的进程“cache hot”因而更少可能被重新迁移的总时间网络性能调优的几个方向net.pv4.{tcp_rmem,tcp_wmem,udp_mem}tcp_rmem:用于 autotuning 函数,设置 TCP 接收缓冲的最小、默认及最大字节数tcp_wmen:用于 autotuning 函数,设置 TCP 发送缓冲的最小、默认及最大字节数udp_mem:设置 UDP 队列的页数网络: net.core.busy_{read,poll}net.core.busy_read: 针对 socket 读取设置低延迟 busy poll 超时net.core.busy_poll: 针对 poll 和 select 设置低延迟 busy poll 超时net.ipv4.tcp_fastopen: TCP 快速打开(TFO)对于整体OS系统调优来说需要进行如下参数调整1.governor=performance (CPU的频率打到performance)2.energy_perf_bias=performance(功耗上打到performance)min_perf_pct=100(P-state上面)transparent_hugepages=always *(打开THP)readahead=>4096(缓存数据写到最大)scheduler=deadline *(I/O调度器调整为deadline)throughput-performance文件位置/proc/sys/kernelsched_min_granularity_ns = 10000000sched_wakeup_granularity_ns = 15000000文件位置/proc/sys/vmdirty_ratio = 40dirty_background_ratio = 10swappiness = 10latency-performancesched_min_granularity_ns = 10000000sched_migration_cost_ns = 5000000dirty_ratio = 10dirty_background_ratio = 3swappiness = 10network-throughputsched_min_granularity_ns = 10000000sched_wakeup_granularity_ns = 15000000dirty_ratio = 40dirty_background_ratio = 10swappiness = 10文件位置/proc/sys/net/ipv4/net.ipv4.tcp_rmem = 4096 87380 16777216 ##依据硬件配置的实际情况net.ipv4.tcp_wmem = 4096 16384 16777216net.ipv4.udp_mem = 3145728 4194304 16777216network-latencytransparent_hugepages=neverkernel.sched_min_granularity_ns = 10000000kernel.sched_migration_cost_ns = 5000000dirty_ratio = 10dirty_background_ratio = 3swappiness = 10net.core.busy_read = 50net.core.busy_poll = 50net.ipv4.tcp_fastopen = 3virtual-hostkernel.sched_min_granularity_ns = 10000000kernel.sched_wakeup_granularity_ns = 15000000kernel.sched_migration_cost_ns = 5000000vm.dirty_ratio = 40vm.dirty_background_ratio = 5vm.swappiness = 10virtual-guestkernel.sched_min_granularity_ns = 10000000kernel.sched_wakeup_granularity_ns = 15000000vm.dirty_ratio = 30vm.dirty_background_ratio = 10vm.swappiness = 30总结scheduler: 相比 cfq 的表现,deadline 无论在读还是在写上都更有优势。对于具有固态存储设备的场景而言,blk-mq 值得一试kernel.sched_min_granularity_ns: 比默认值调得更大一些,推荐设为 10000000(1 毫秒),从而稍微延迟抢占,具有更好的性能表现。该参数值适合上述所有场景kernel.sched_wakeup_granularity_ns: 比默认值调大,从而避免过度调度,推荐设为 15000000(1.5 毫秒)。仅在注重吞吐量的情况下设置该参数,低延迟的情况不要设置kernel.sched_migration_cost_ns: 比默认值调大,从而减少任务的重新迁移,推荐设为 5000000(0.5 毫秒)。仅在注重低延迟的情况下设置该参数,高吞吐量的情况不要设置vm.dirty_ratio: 高吞吐量的情况一般设置为 40,低延迟的情况通常设置为 10vm.dirty_background_ratio: 高吞吐量的情况可设为 10,低延迟的情况可设为 3vm.swappiness: 一般设为 10,从而避免过多 swap 交换。仅在作为虚拟客户机的情况下可设高一些(30)仅在注重网络吞吐量的情况下调节net.ipv4.tcp_rmemnet.ipv4.tcp_wmemnet.ipv4.udp_mem仅在注重网络低延迟的情况下调节net.core.busy_readnet.core.busy_pollnet.ipv4.tcp_fastopen

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_46660878/article/details/114145025

智能推荐

react之antd组件InputNumber控制小数点_antd inputnumber decimalseparator-程序员宅基地

文章浏览阅读3.9k次。InputNumber控制用户输入小数点的个数在项目过程中有个需求,需要控制用户输入小数点的个数问题。话不多说上代码://输入框绑定方法<InputNumber style={{ width: '100%' }} formatter={limitDecimals} parser={limitDecimals}/>方法:const limitDecimals = (value: string | number): string => { const reg_antd inputnumber decimalseparator

matlab 约束条件下三元函数的图像问题_三元函数图像-程序员宅基地

文章浏览阅读4.1k次,点赞5次,收藏15次。题目:绘制z=x+y,0<x<1,0<y<1,0.5<x+y<1(0.5<z)约束条件下的图像代码:clc;clear;x=0:0.01:1;y=0:0.01:1;[xx,yy]=meshgrid(x,y);[m,n]=size(xx); for i=1:m for j=1:n z(i,j)=x(i)+y..._三元函数图像

linux下恢复误删除oracle的数据文件_oracle 数据文件误删 linux-程序员宅基地

文章浏览阅读480次。场景描述:操作系统级别的删除数据文件(/oracle/oradata/ora10g/system1.dbf),而且数据库没有崩溃,仍然处于open状态。原理:在Linux操作系统中,如果文件从操作系统级别被删除掉,之前打开该文件的进程仍然持有相应的文件句柄,所指向的文件仍然可以读写,并且该文件的文件描述符可以从/proc目录中获得。如果关闭数据库,则句柄就会丢失。恢复步骤如..._oracle 数据文件误删 linux

VScode 自定义代码颜色、背景颜色、方法名、括号颜色-程序员宅基地

文章浏览阅读10w+次,点赞108次,收藏323次。自学前端刚开始的时候使用Hbuilder,Hbuilder界面设计的很小清新,我特别喜欢,代码提示啥方面做的也特别好,很好上手,作为小白我用了很长一段时间。后来浅浅学习微信小程序开发,得写wxml,Hbilder上没有wxml格式的代码提示,代码高亮等。于是我用了一段时间vscode,在网上按推荐安装了很多花里胡哨的插件呢。给我感觉是不好上手。于是后来又接触了sublime,sublime相比..._vscode 自定义代码颜色、背景颜色、方法名、括号颜色

深度学习框架Tensorflow学习与应用 图像数据处理之二_tensorflow深度学习框架实现了对图像亮度的调整-程序员宅基地

文章浏览阅读255次。四:图像色彩调整 和图像翻转类似,调整图像的亮度、对比度、饱和度和色相在很多图像识别应用中都不会影响识别结果。所以在训练神经网络模型时,可以随机的调整训练图像的这些属性,从而使训练得到的模型尽可能地受到无关因素的影响。话不多说,上代码了。注意:路径要用英文,不要有中文(一)调整亮度与调整对比度import matplotlib.pyplot as pltimport tensorf..._tensorflow深度学习框架实现了对图像亮度的调整

《ASP.NET5》无法路由到Web API Controller控制器_.net的web无法访问到控制器-程序员宅基地

文章浏览阅读5.6k次。这个标题不知道恰当不恰当,具体的问题就是我在一个现有的项目上创建了一个Web API Controller Class,但是按F5启动调试后,通过给定的路径如“http://localhost:3753/api/values/5”访问Get(int id)方法时,没有反应,设置了断点也进不去。但这个问题在网上又没有找到解决方法,于是又新建了一个ASP.NET Web Application类型的项_.net的web无法访问到控制器

随便推点

嵌入式Linux开发板_迅为iTOP-4412精英版入门篇(一)_4412开发入门-程序员宅基地

文章浏览阅读911次,点赞2次,收藏4次。迅为iTOP-4412开发板平台,ARM Cortex A9架构,主频1.4GHz-1.6GHz,1GB 双通道 DDR3(2GB 可选),4GB EMMC(16GB 可选),提供多种外接模块,如:RFID模块、继电器模块、CAN总线 RS485总线模块、串口转接板、矩阵键盘模块、AVIN模块、GPS模块、VGA模块、500万摄像头模块、WIFI/蓝牙模块等。拥有丰富的板载接口以及众多配套扩展模块,并提供丰富的学习教程与资源,是嵌入式Linux学习与开发最佳选择。_4412开发入门

扫荡倾斜摄影单体化难题_进行模型单体化容易遇到哪些问题-程序员宅基地

文章浏览阅读5.2k次,点赞6次,收藏27次。单体化问题的由来 我们先来说说什么是“单体化”。“单体化”其实指的就是每一个我们想要单独管理的对象,是一个个单独的、可以被选中的实体(Entity);即用鼠标点击时可以显示为不同颜色(称为“高亮”)显示,可以附加属性,可以被查询统计等等。只有具备了“单体化”的能力,数据才可以被管理,而不仅仅是被用来查看。 对于人工建模而言,单体化是一个不言而喻的事情。即在人工建模的过程中,自然会把需要单独管理的_进行模型单体化容易遇到哪些问题

snakeyaml自定义pojo写入yml文件时属性字段排序问题_snakeyaml 写入yaml-程序员宅基地

文章浏览阅读1.1k次。snakeyaml自定义pojo写入yml文件时属性排序问题解决。_snakeyaml 写入yaml

使用jbpm出现异常 java.lang.NoClassDefFoundError: de/odysseus/el/ExpressionFactoryImpl-程序员宅基地

文章浏览阅读2.9k次。java.lang.NoClassDefFoundError: de/odysseus/el/ExpressionFactoryImpl at org.jbpm.pvm.internal.script.JuelScriptEngine.(JuelScriptEngine.java:66) at org.jbpm.pvm.internal.script.JuelS_java.lang.noclassdeffounderror: de/odysseus/el/expressionfactoryimpl

浅谈安全运营中心-程序员宅基地

文章浏览阅读1.9k次,点赞2次,收藏6次。最近两年安全运营中心这个概念被提到的次数越来越多了,虽然没有一个建设的标准模式,但很多大厂都在提,也号称有了各种落地。那么,到底是怎样呢。_安全运营中心

mysql 序列化缓存到txt文件查找数据与直接查找数据 性能对比,13,601条数据文件缓存平均0.085秒后只需0.025秒 推荐 程序员导航网http://www.je666.com_je666com-程序员宅基地

文章浏览阅读2.8k次。推荐 程序员导航网http://www.je666.comCREATE TABLE IF NOT EXISTS `ylmf_site_search` ( `id` int(11) NOT NULL, `displayorder` int(11) NOT NULL, `pinyin` varchar(255) CHARACTER SET gbk NOT NULL,_je666com

推荐文章

热门文章

相关标签