linux下测试写满cpu
来源:互联网 发布:优惠券由来 知乎 编辑:程序博客网 时间:2024/06/07 11:26
一、Linux下cpu的利用率
在Linux/Unix下,CPU利用率分为用户态,系统态和空闲态,分别表示CPU处于用户态执行的时间,系统内核执行的时间,和空闲系统进程执行的时间。平时所说的CPU利用率是指:CPU执行非系统空闲进程的时间 / CPU总的执行时间。
二、测试
在编写测试程序时,采用多线程,为了使线程不因为时间片耗尽而被切换,将线程的调度策略设置为SCHED_FIFO,优先级设置为最大,每个线程处理的逻辑为一个死循环,使线程一直处于RUNNING态,一直占用cpu。测试代码如下:
#include<stdio.h>#include<unistd.h>#include<pthread.h>#include<stdlib.h>#include<string.h>#include<sched.h>void *pthrd_fun(void *arg){ while(1);}int main(){ pthread_t tid; int i = 0; struct sched_param param; param.sched_priority = 99; pthread_attr_t attr; pthread_attr_init(&attr); //修改线程的调度策略与优先级 pthread_attr_setschedpolicy(&attr,SCHED_FIFO); pthread_attr_setschedparam(&attr,¶m); for(i = 0;i<=100;i++) { pthread_create(&tid,&attr,pthrd_fun,NULL); } while(1); return 0;}
三、运行结果
第一次执行代码之后,cpu占有率已经接近100%,此时,系统已经变得十分迟缓,shell响应变得十分慢。
当增加创建的线程数之后,cpu达到了100%,只是无法看到,因为什么也运行不了,连shell也无响应。
备注:
1、linux内核的三种调度策略
①、SCHED_OTHER分时调度策略;
②、SCHED_FIFO实时调度策略,先到先服务;
③、SCHED_RR实时调度策略,时间片轮转。
注意:
①实时进程将得到优先调用,实时进程根据优先级决定调度权值,分时进程则
通过nice和counter值决定权值,nice越小,counter越大,被调度的概率越大,
②两种实时调度策略对比:
SCHED_RR实时调度策略,时间片轮转。当进程的时间片用完,系统将重新分配时
间片,并置于就绪队列尾。放在队列尾保证了所有具有相同优先级的RR任务的调度公平;
SCHED_FIFO实现了一种简单的,先入先出的调度算法:它不使用时间片,一旦一个SCHED_FIFO级进程处于可执行状态,就会一直执行,直到它自己受阻塞或显式的释放cpu为止。只有更高优先级的SCHED_FIFO或SCHED_RR才能抢占其任务。简而言之,一旦占用cpu则一直运行,直到有更高优先级任务到达或自己放弃。
SCHED_FIFO和SCHED_RR支持优先级的使用,优先级为(1~99),数值越大优先级越高。
2、更改线程调度策略及优先级
系统创建线程时,默认是SCHED_OTHER。所以如果我们要改变线程的调度策略的话,可以通过下面的这个函数实现。
int pthread_attr_setschedpolicy(pthread_attr_t *attr, int policy);
其中policy的取值为SCHED_FIFO/ SCHED_RR/ SCHED_OTHER.
改变线程的优先级:
int pthread_attr_setschedparam(pthread_attr_t *attr, const struct sched_param *param);
上面的param结构体为:
struct sched_param {
int sched_priority; //所要设定的线程优先级
};
- linux下测试写满cpu
- linux下cpu压力负载测试
- linux下进行简单的CPU和内存负载测试
- linux下简单的测试cpu性能的方法
- linux cpu性能测试
- linux下CPU使用率
- Linux下CPU负载
- Linux 测试cpu性能详解
- linux CPU压力测试stress
- solaris Cpu /Linux下如何查看cpu
- Linux 下CPU和内存负载测试 定位服务器死机原因
- linux系统下网络吞吐量/CPU占用率/流量控制的测试
- linux下的CPU、内存、IO、网络的压力测试工具与方法介绍
- linux下的CPU、内存、IO、网络的压力测试工具与方法
- linux下查询:物理CPU、cpu核、逻辑cpu
- linux下获得CPU使用率
- Linux下查看CPU信息
- Linux 下多核CPU知识
- SQLServer中的日期函数
- 文章标题
- Densely Connected Convolutional Networks翻译
- 使用Jenkins进行持续集成
- 134. Gas Station
- linux下测试写满cpu
- opencv for python (7) 计算中值滤波函数程序的运行时间,及简要解释中值滤波函数
- 想下代码,却没有C币.....
- 十三、c++模板基础
- 最详细的Vuex教程
- 简单的nginx服务器vhost配置
- 深入理解PHP原理之函数(Introspecting PHP Function)
- linux ttyS设备的close
- java读取Excel中的数据