Linux CPUInfo 获取与优化技巧
cat /proc/cpuinfo/proc/cpuinfo 是Linux系统提供的虚拟文件,包含CPU的详细信息(如型号、架构、频率、缓存、核心数等)。使用cat /proc/cpuinfo可查看所有核心的完整信息;结合grep可过滤关键内容,例如:
grep 'model name' /proc/cpuinfo:提取CPU型号;grep 'cpu MHz' /proc/cpuinfo:查看当前CPU频率;grep 'cache size' /proc/cpuinfo:获取缓存大小。lscpulscpu命令将/proc/cpuinfo的内容解析为更易读的结构化输出,关键信息包括:
Core(s) per socket);Thread(s) per core);NUMA node(s));dmidecodedmidecode命令从BIOS的DMI(桌面管理接口)中获取硬件信息,需root权限。使用sudo dmidecode -t processor可查看CPU的供应商、版本、最大/当前频率、核心数、L1/L2/L3缓存配置等详细信息。
top/htoptop:实时显示系统中CPU使用率最高的进程(按1键可查看每个核心的使用率);htop(需安装):比top更直观,支持颜色高亮、鼠标操作,可动态监控CPU、内存、进程等信息。top命令:实时查看CPU使用率(%Cpu(s)行),重点关注us(用户态)、sy(内核态)、wa(I/O等待)的比例。若us过高,说明用户进程占用过多CPU;若wa过高,可能是磁盘I/O瓶颈。perf工具:深入分析CPU性能瓶颈。常用命令:
perf top:实时显示占用CPU最多的函数或模块;perf record -g ./program:记录程序运行时的性能数据;perf report:生成性能分析报告,定位热点函数。nice命令启动进程时设置优先级(范围:-20~19,数值越低优先级越高)。例如,nice -n -5 ./my_process以高优先级启动进程;使用renice命令调整已运行进程的优先级,例如renice -n 10 -p 1234将PID为1234的进程优先级降低。chrt命令修改进程调度策略。例如,chrt -r -p 99 <PID>将进程设置为实时调度(-r表示实时,-p指定PID,99为最高优先级),适用于关键任务(如数据库、高频交易系统)。taskset命令将进程绑定到指定的CPU核心,减少跨核心的上下文切换和缓存失效。例如,taskset -c 0,1 ./my_process将进程绑定到CPU 0和1;taskset -cp <PID>查看进程的当前亲和力。numactl命令将进程与NUMA节点绑定,减少跨节点的内存访问延迟。例如,numactl -C 0-3 -m 0 ./my_process将进程绑定到NUMA节点0的CPU 0-3。cpupower frequency-info查看CPU的当前频率调节器(如performance、powersave)及可用策略。cpupower frequency-set调整策略。例如,cpupower frequency-set -g performance设置为高性能模式(CPU始终运行在最高频率,适用于计算密集型任务);cpupower frequency-set -g powersave设置为节能模式(CPU根据负载动态调整频率,适用于轻负载场景)。swappiness:swappiness参数控制系统使用swap分区的倾向(范围:0~100,默认60)。值越小,系统越倾向于使用物理内存。例如,sysctl vm.swappiness=10将swappiness设置为10(减少swap使用,提升性能);编辑/etc/sysctl.conf添加vm.swappiness=10可永久生效。vm.dirty_ratio(默认20%)和vm.dirty_background_ratio(默认10%)控制脏页(未写入磁盘的内存数据)的刷新策略。例如,sysctl -w vm.dirty_ratio=15(当脏页达到15%时强制刷新到磁盘)、sysctl -w vm.dirty_background_ratio=5(当脏页达到5%时后台异步刷新),减少I/O等待时间。