固定CPU负载

        测试需要,需要测试CPU利用率在80%时的工作情况,懒得写C代码,直接shell实现了一个。
        使用以下代码设定单个CPU的使用率为80%,传入参数为CPU计数值(如,0,1,2等),表示第几个CPU。

#!/bin/sh
tag=$1

t_user_old=0
t_nice_old=0
t_sys_old=0
t_idle_old=0
t_iowait_old=0
t_irq_old=0
t_sirq_old=0
cpu_load_old=0
cpu_idle_old=0

t_user=0
t_nice=0
t_sys=0
t_idle=0
t_iowait=0
t_irq=0
t_sirq=0
cpu_load=0
cpu_idle=0


function cal_cpuload()
{
    cpu_stat=`cat /proc/stat|grep "cpu$tag"`
    
    t_user=`echo $cpu_stat|cut -d " " -f2`
    t_nice=`echo $cpu_stat|cut -d " " -f3`
    t_sys=`echo $cpu_stat|cut -d " " -f4`
    t_idle=`echo $cpu_stat|cut -d " " -f5`
    t_iowait=`echo $cpu_stat|cut -d " " -f6`
    t_irq=`echo $cpu_stat|cut -d " " -f7`
    t_sirq=`echo $cpu_stat|cut -d " " -f8`

    t_total=$((t_user+t_nice+t_sys+t_idle+t_iowait+t_irq+t_sirq-t_user_old-t_nice_old-t_sys_old-t_idle_old-t_iowait_old-t_irq_old-t_sirq_old))
    t_use=$((t_user+t_nice+t_sys+t_iowait+t_irq+t_sirq-t_user_old-t_nice_old-t_sys_old-t_iowait_old-t_irq_old-t_sirq_old))
    
    t_user_old=$t_user
    t_nice_old=$t_nice
    t_sys_old=$t_sys
    t_idle_old=$t_idle
    t_iowait_old=$t_iowait
    t_irq_old=$t_irq
    t_sirq_old=$t_sirq
    if [ $t_total -ne 0 ]
    then 
        cpu_load=$((t_use*100/t_total))
        cpu_load_old=$cpu_load
    fi

}


a=0
b=1

while true
do
    cal_cpuload
    if [ "$cpu_load" -lt 80 ]
    then 
        let a+=1
    else
        sleep 0.004
    fi
done

        运行多个进程,并设置CPU亲和性,设置每一个CPU的负载为80%

#!/bin/sh
core_num=`cat /proc/cpuinfo |grep -c "model name"`
i=0
chmod +x ./set_cpuload.sh
while [ "$i" -lt "$core_num" ]
do 
    taskset -c $i ./set_cpuload.sh $i&
    let i+=1
done
       

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值