zoukankan      html  css  js  c++  java
  • 多核情况下cpu占用率曲线-笔记

    继续上一篇笔记,晚上处理下关于多核CPU占用率问题。

    现代电脑大都是多核电脑。我上一篇写的程序都只能适合单核单线程的情况。如果我的电脑是多核多线程的情况,那么让一个线程进入死循环的情况下,电脑是肯定不会满载。

    (关于线程的知识点,如果有好的博客请推荐下)

    我的电脑是AMD二核,正常来讲ADM的一个核心就是一个线程,Intel是一个核心两个线程。

    一、CPU使用率达到50%

    我将上一篇笔记根据时间比重使cpu到达50%的代码写成一个线程类

    public class MyThread extends Thread {
        public static final int BUSYTIME=10;
        public static final int IDLETIME=BUSYTIME;
    
        public void run() {
            while(true){
                long startTime=System.currentTimeMillis();//获取开始时间
                while(System.currentTimeMillis()-startTime<=BUSYTIME){
                };    
                try {
                    Thread.sleep(IDLETIME);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }    
            }
        }
    }

    根据电脑情况多开线程,达到了CPU50%的效果(这里不考虑其他进程,所以用资源监视器查看)

    public static void main(String[] args) throws InterruptedException {
            int cpuCount=Runtime.getRuntime().availableProcessors();//获取当前电脑CPU数量
            for (int i = 0; i <cpuCount; i++) {
                new MyThread().start();
            }
        }

    黄线为选中资源

    考虑如果让一个线程的程序死循环,cpu是如何变化的?  结果应该是,CPU的使用率与其可以同时运行的线程数有关。

    我重新写一个死循环的线程类,让其运行,也可以到达cpu50%的效果。运行两个个的话,达到满载的效果即100%。(本机AMD二核二线程)

    public class MyFullThread extends Thread {
        public void run() {
            int i = 0;
            while (true) {
                i++;
            }
        }
    }

    即总的有两个线程的话,

    运行一个,50%。

    运行两个,100%。

    以下是正弦情况,代码就不贴了,过程一样,将上一次的代码写成一个线程类,来创建实例。

    最后,

    对于每一个CPU核心,各自的使用情况还有待继续。

    关于线程的有好、有意思的博客、资料可以推荐下。

  • 相关阅读:
    类型化dataset分页
    cp自动创建层级结构的例子
    You have tried to change the API from what has been previously approved.
    Mysql学习笔记
    cygwin设置NDK环境变量ANDROID_NDK_ROOT
    PowerDesigner学习笔记
    Spring Cloud Commons教程(三)忽略网络接口
    Spring Cloud Commons教程(二)Spring RestTemplate作为负载平衡器客户端
    Spring Cloud Commons教程(一)普通抽象
    Spring Cloud教程(十二)加密和解密
  • 原文地址:https://www.cnblogs.com/xumz/p/7465172.html
Copyright © 2011-2022 走看看