zoukankan      html  css  js  c++  java
  • CPU使用率呈现正弦曲线

    void CPUSin()
    {
    	const int SAMPLE_COUNT = 100;
    	const double PI = 3.1415926536;
    	const int SAMPLE_TIME = 400;
    	double radian = 0.0;
    	double radian_delta = 2 * PI / double(SAMPLE_COUNT);
    	DWORD Sample_Value[SAMPLE_COUNT];
    	for(int i = 0; i < SAMPLE_COUNT; ++i){
    		Sample_Value[i] = sin(radian) * SAMPLE_TIME / 2 + SAMPLE_TIME/2;
    		radian += radian_delta;
    	}
    	int j = 0;
    	while(true)
    	{
    		DWORD startTime = GetTickCount();
    		while((GetTickCount() - startTime) <= Sample_Value[j])
    			;
    		Sleep(SAMPLE_TIME - Sample_Value[j]);
    		j = (++j)%SAMPLE_COUNT;	
    	}	
    }
    

    让cpu呈现正弦曲线就需要理解离散信号。在一个周期内每隔一个小间隔就采样一个值就构成一个离散序列

    本题就是让cpu使用率采样成正弦分布。

    cpu的使用率在一个采样间隔里面是可以控制的。具体控制的方法就是用while循环控制cpu执行的时间片,用sleep控制cpu空闲的时间片,让比例呈现正弦分布即可。

    为了达到这个目的,我们首先将CPU的执行时间片先算出来,它是成正弦分布的

    同时需要注意的是:sin是有正负的,我们其实要的是所有值在零上的正弦曲线,也就是y = A(sinx + 1)的这种曲线,所以在计算sample_Value的时候一定要注意

  • 相关阅读:
    linux运维学习
    2017年阿里巴巴三面经验
    Spring Boot:在Spring Boot中使用Mysql和JPA
    meshroom和alicevision在Ubuntu16上的安装过程
    ubuntu rm -rf ntfs 硬盘恢复
    python 脚本内部修改 LD_LIBRARY_PATH
    python uml 图
    tlmgr 相关
    ubuntu 安装 clangd 10.0.0
    zsh 快捷键
  • 原文地址:https://www.cnblogs.com/lovelyxia/p/1952563.html
Copyright © 2011-2022 走看看