消耗CPU的程序

昨天领导交代客户需要一个可以测试CPU性能的脚本,问题简化下就是说要做一个可以手动设置对CPU产生消耗的程序。心想哪有这种脚本,或许性能测试工具还差不多。琢磨了下,或许用死循环可以达到差不多的效果,但是单进程(单线程)造成的影响有限,因为服务器都是多个物理核心。那就是用多线程吧,手动写了个多线程demo,生成后发现线程都集中在一个CPU内工作,虽然把单个CPU搞成100%了,但是整体消耗不大(大约10%左右)。后来百度了下说得CPU绑定线程才有用,但是这方面不是一下就能熟悉的,所以还是多进程的实现较为简单。

代码很简单:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <wait.h>
/**
*@Usage: ./$0 [SUBPROCESS NUMBER]
*/
int main(int argc, char *argv[]){
        pid_t pid;
        int i, pn=4;
        if(argc==2){
            pn=atoi(argv[1]);
        }
        for(i=0;i<pn;i++){
                pid=fork();
                if(pid<=0)break;
        }
        if(pid<0){
                printf("fork() error\n");
                return -1;
        }else if(pid==0){
                //sub process works
                for(;;)i=(i%4)*1.0;
        }else{
                //wait for the sub process‘s termination
                wait(NULL);
        }
        return 0;
}
gcc -Wall test.c -o test.o
chmod +x test.o
#启动五个子进程试试效果
./test.o 5

贴张图:

消耗CPU的程序

时间: 2024-09-28 03:27:19

消耗CPU的程序的相关文章

逻辑读为何消耗CPU?

在数据库系统中,经常会看到这个说法:"逻辑读很消耗CPU",然后开始把这句话当作一个定理来使用.但是为什么"同样是读,为什么逻辑读会使用那么多CPU?" 查了一些资料,配合自己的理解,有下面几点体会:1. 逻辑读是从内存中的读,逻辑读不消耗IO资源,而消耗CPU资源.性能差的SQL需要扫描很多内存中的数据块,会引起很多的逻辑读,进而导致CPU使用率上升.至于多少逻辑读会消耗多少CPU时间这个定量的问题,应该属于更深层次的问题,尚不太明白,有机会继续深入. 2. 降低

脚本应用之十五: 消耗cpu资源

作用:控制消耗cpu的百分比,配合某些测试项目使用 实现:设计包含死循环的函数,放入后台运行,通过控制个数实现控制消耗CPU资源的百分比 演示: 直接输入进程个数, 通过top指令查看cpu消耗百分比,不输入数字直接回车则表示清除所有后台函数 代码专区: #/bin/bash   #  LY #  ------------------ #  Copyright 2016.04.17 LingYi ([email protected]) QQ:1519952564 cpu_(){  while :

使用top工具,找出消耗CPU 较多的进程

1.使用top工具,找出消耗CPU 较多的进程 [[email protected] ~]$ top top - 10:48:27 up 23:15,  4 users,  load average: 1.09, 0.43, 0.15 Tasks: 161 total,   3 running, 158 sleeping,   0 stopped,   0 zombie Cpu(s): 74.3%us, 23.7%sy,  0.0%ni,  0.0%id,  2.0%wa,  0.0%hi, 

如何快速定位JVM中消耗CPU最多的线程?

第一步.先找出Java的进程PID ps -ef | grep 进程名关键字 这里假设找到的PID是:12345 第二步.找出该进程内最消耗CPU的线程 top -Hp 12345 17183 log4x 20 0 4292820 529812 23040 R 94.7 0.8 1:11.79 java -server -Xms268435456 -Xmx268435456 17162 log4x 20 0 4292820 529812 23040 R 87.1 0.8 1:17.90 java

java 程序消耗 cpu 100% 查找方法

问题原因:由于HashMap是非线程安全的,在多线程访问时,造成死循环. 查找问题方法: 1. Java代码   top 找出最耗费cpu的进程号 如:27377 2. Java代码   top -p 27377 -H 找出此进程下的所有线程,然后找出最耗cpu线程号 如:27433 3. Java代码   python  hex(27433) 将十进制数转为16进制 如:0x6b29 4. Java代码   jstack 27377 >cpu.log 将此进程号的Java堆栈信息打印到文件中

连接postgres特别消耗cpu资源而引发的PostgreSQL性能优化考虑

由于是开发阶段,所以并没有配置postgres的参数,都是使用安装时的默认配置,以前运行也不见得有什么不正常,可是前几天我的cpu资源占用突然升高.查看进程,发现有一个postgres的进程占用CPU都是80%以上,而且居高不下: 刚开始以为是配置上需要修改,但事实上,默认配置基本上是很优化的,而且是开发阶段,数据量也并不大.后来通过分析,得出结论,解决问题应该从以下几个方面来逐一考虑: 1,SQL查询方面检查数据检索的索引是否建立,凡是需要查找的字段尽量建立索引,甚至是联合索引:创建索引,包括

让cpu运行程序(三)

cpu的汇编程序设计 反映CPU功能的是它的指令系统,而指令系统设计得好不好,一般是反映在用这些指令编写的程序上.如果较多问题都能够用一个CPU的指令集编写的程序来处理,说明这个CPU的功能强大,反之就说明CPU的功能欠缺. 要检测我们设计的CPU是否达到了预期的目标,需要我们编写一定数量的汇编程序来对其进行测试.测试的时候,还必须将汇编程序转化成机器指令程序,不然CPU就无法识别.由此看来,学习计算机CPU设计制作,必须要学会汇编程序设计,还要能够将汇编程序翻译成机器指令程序.翻译汇编程序为机

让cpu运行程序(四)

如何编译汇编程序 这个汇编程序的编译对我们设计的CPU来说非常简单.按照我们设想的CPU中,程序存储器.数据存储器是分开的.因此,不用考虑程序和数据的混淆问题.此外,由于我们设想的指令系统是一条指令就占一个存储单元,所以标号的地址非常容易计算出来.如果我们确定了第一条指令存放的地址,那么从这条指令向后数数,就可以将标号确定下来. 对于变量在什么地方的问题,常常是一般作汇编程序设计的人较为迷惑的问题.产生迷惑的原因主要是我们自己不作变量地址分配.做为一个CPU 的设计者,不仅要对程序如何放入内存进

让cpu运行程序(一)

我们应当明确,按照自己的想法设计的CPU只是一个硬件,真正让CPU能够动作起来完成任务,那还要靠软件.所谓的软件就是用指令系统编写的程序,当然也要包括程序操作的数据对象.我们知道,电子计算机所能够表达信息的基本方式是二进制数,所以无论是数据还是指令,在CPU 内部都是以二进制数的形式存在的.我们直接通过二进制数与CPU这种机器交流,大多数人吃不消,即使是计算机专家,使用起来也相当费力.怎么办?用人们容易记忆的文字符号来表达CPU的指令,使用的数仍然用我们熟悉的十进制表示.这样就可以将CPU使用的