2021-02-26

本文是转载别人的。
引言
在进行服务器硬件性能测试的过程,不知道大家有没有发现一个问题,就是我明明在同一台机器上进行网卡、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

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、5资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
2021-03-26 20:54:33,596 - Model - INFO - Epoch 1 (1/200): 2021-03-26 20:57:40,380 - Model - INFO - Train Instance Accuracy: 0.571037 2021-03-26 20:58:16,623 - Model - INFO - Test Instance Accuracy: 0.718528, Class Accuracy: 0.627357 2021-03-26 20:58:16,623 - Model - INFO - Best Instance Accuracy: 0.718528, Class Accuracy: 0.627357 2021-03-26 20:58:16,623 - Model - INFO - Save model... 2021-03-26 20:58:16,623 - Model - INFO - Saving at log/classification/pointnet2_msg_normals/checkpoints/best_model.pth 2021-03-26 20:58:16,698 - Model - INFO - Epoch 2 (2/200): 2021-03-26 21:01:26,685 - Model - INFO - Train Instance Accuracy: 0.727947 2021-03-26 21:02:03,642 - Model - INFO - Test Instance Accuracy: 0.790858, Class Accuracy: 0.702316 2021-03-26 21:02:03,642 - Model - INFO - Best Instance Accuracy: 0.790858, Class Accuracy: 0.702316 2021-03-26 21:02:03,642 - Model - INFO - Save model... 2021-03-26 21:02:03,643 - Model - INFO - Saving at log/classification/pointnet2_msg_normals/checkpoints/best_model.pth 2021-03-26 21:02:03,746 - Model - INFO - Epoch 3 (3/200): 2021-03-26 21:05:15,349 - Model - INFO - Train Instance Accuracy: 0.781606 2021-03-26 21:05:51,538 - Model - INFO - Test Instance Accuracy: 0.803641, Class Accuracy: 0.738575 2021-03-26 21:05:51,538 - Model - INFO - Best Instance Accuracy: 0.803641, Class Accuracy: 0.738575 2021-03-26 21:05:51,539 - Model - INFO - Save model... 2021-03-26 21:05:51,539 - Model - INFO - Saving at log/classification/pointnet2_msg_normals/checkpoints/best_model.pth 我有类似于这样的一段txt文件,请你帮我写一段代码来可视化这些训练结果
02-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值