CPU-内存-IO-网络调优
一、关于CPU 中央处理器调优
1、 CPU处理方式:
- 批处理,顺序处理请求。(切换次数少,吞吐量大)
- 分时处理。(如同"独占",吞吐量小)(时间片,把请求分为一个一个的时间片,一片一片的分给CPU处理)我们现在使用x86就是这种架构
- 实时处理
例如:
- 批处理——以前的大型机(Mainframe)上所采用的系统,需要把一批程序事先写好(打孔纸带),然后计算得出结果
- 分时——现在流行的PC机和服务器都是采用这种运行模式,即把CPU的运行分成若干时间片分别处理不同的运算请求
- 实时——一般用于单片机上,比如电梯的上下控制,对于按键等动作要求进行实时处理
2、 查看CPU一分钟有多个切换多少次
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #查看内核一秒钟中断CPU次数 [root@xuegod70 ~] # grep HZ /boot/config-3.10.0-693.el7.x86_64 CONFIG_NO_HZ_COMMON=y # CONFIG_HZ_PERIODIC is not set # CONFIG_NO_HZ_IDLE is not set CONFIG_NO_HZ_FULL=y # CONFIG_NO_HZ_FULL_ALL is not set CONFIG_NO_HZ=y # CONFIG_RCU_FAST_NO_HZ is not set # CONFIG_HZ_100 is not set # CONFIG_HZ_250 is not set # CONFIG_HZ_300 is not set CONFIG_HZ_1000=y CONFIG_HZ=1000 #1秒钟有1000次中断 CONFIG_MACHZ_WDT=m 注: 此文件 /boot/config-3 .10.0-693.el7.x86_64 是编译内核的参数文件 |
3、调整进程优先级使用更多CPU
调整进程nice值,让进程使用更多的CPU
优先级控制:
nice值 #范围, -20 ~ 19 越小优先级越高 普通用户0-19
nice
作用:以什么优先级运行进程 。默认优先级是0
语法: nice -n 优先级数字 命令
例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | [root@xuegod63 ~] # nice -n -5 vim a.txt # vim进程以-5级别运行 查看: [root@xuegod63 ~] # ps -axu | grep a.txt [root@xuegod63 ~] # ps -axu | grep a.txt Warning: bad syntax, perhaps a bogus '-' ? See /usr/share/doc/procps-3 .2.8 /FAQ root 24318 0.0 0.2 143624 3280 pts /4 S+ 17:00 0:00 vim b.txt [root@xuegod63 ~] # top -p 24318 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 24219 root 15 -5 140m 3336 2200 S 0.0 0.3 0:00.08 vim 检测一下范围: -20 - 19 renice #修改正在运行的进程的优先级 #renice -n 5 PID #修改进程优先级 [root@xuegod63 ~] # renice -n -21 24219 24219: old priority -20, new priority -20 |
4 、CPU亲和力
taskset 作用:在多核的情况下,可以认为指定一个进程在哪颗CPU上执行程序,减少进程在不同CPU之前切换的开销。
1 2 3 | 安装: [root@xuegod63 ~] # rpm -qf `which taskset ` util-linux-2.23.2-43.el7.x86_64 |
语法: taskset -c N 命令
例1:本机是4核CPU ,指定vim命令在第一个CPU上运行
1 2 3 4 5 6 | [root@xuegod63 ~] # taskset -c 0 vim a.txt #1号CPU ID是0 [root@xuegod63 ~] # ps -axu | grep vim Warning: bad syntax, perhaps a bogus '-' ? See /usr/share/doc/procps-3 .2.8 /FAQ root 2614 1.3 0.2 143696 3332 pts /0 S+ 18:39 0:00 vim a.txt [root@xuegod63 ~] # taskset -p 2614 # -p 要查看的进程ID pid 2614's current affinity mask: 1 #CPU亲和力掩码,1代表第一个CPU核心 |
例2:查sshd进程运行在哪几个CPU上
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | [root@xuegod63 ~] # ps -axu | grep sshd Warning: bad syntax, perhaps a bogus '-' ? See /usr/share/doc/procps-3 .2.8 /FAQ root 2030 0.0 0.0 64068 1140 ? Ss 18:26 0:00 /usr/sbin/sshd [root@xuegod63 ~] # taskset -p 2030 pid 2030's current affinity mask: f #说明sshd在4颗CPU上随机进行切换。 说明: Cpu ID 号码,对应的16进制数为: CPU ID: 7 6 5 4 3 2 1 0 对应的10数为: 128 64 32 16 8 4 2 1 当前, 我的系统中cpu ID 的为(0,1,2,3) pid 2030's current affinity mask: f 的值为cpu ID 16进制的值的和(1+2+4+8=f),转换成二进制为:1111 这个说明了(pid=2030)的这个sshd进程工作在cpu ID 分别为0,1,2,3这个四个cpu上面的切换。 注: 我们的CPU是4核心,所以taskset -c后可以跟: 0,1,2,3 例:指定vim c.txt 程序运行在第2和第4个CPU上 [root@xuegod63 ~] # taskset -c 1,3 vim b.txt [root@xuegod63 ~] # ps -axu | grep vim Warning: bad syntax, perhaps a bogus '-' ? See /usr/share/doc/procps-3 .2.8 /FAQ root 6314 1.5 0.2 143612 3280 pts /1 S+ 14:41 0:00 vim b.txt root 6317 0.0 0.0 103300 848 pts /2 S+ 14:41 0:00 grep vim [root@xuegod63 ~] # taskset -p 6314 pid 6314's current affinity mask: a # a为十进制的10=2+8 注:在哪个CPU上运行,那一位就赋为1 。 |
5、CPU 性能监控
理解运行队列,利用率,上下文切换对怎样CPU 性能最优化之间的关系,早期提及到性能是相对于基准线数据的,在一些系统中,通常预期所达到的性能包括:
Run Queues 每个处理器应该运行队列不超过13 个线程.
例如: 一个双核处理器应该运行队列不要超过6 个
注:有两个特殊的进程永远在运行队列中待着:当前进程和空进程idle。
==================================================================================
=
黑发不知勤学早,白首方悔读书迟。 --颜真卿《劝学》
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!