精华内容
下载资源
问答
  • Linux获取cpu数量

    千次阅读 2017-12-13 17:11:30
    1. 通过shell获取cpu相关1.1 查看CPU详细信息cat /proc/cpuinfo这个命令可以看到cpu每个核的信息 1.2 查看CPU信息lscpu1.3 查看进程在哪个CPU上运行ps -eo pid,args,psr | grep xxx # pid - 进程ID # args - 该进程...

    1. 通过shell获取cpu相关

    1.1 查看CPU详细信息

    cat /proc/cpuinfo

    这个命令可以看到cpu每个核的信息
    这里写图片描述

    1.2 查看CPU信息

    lscpu

    这里写图片描述

    1.3 查看进程在哪个CPU上运行

    ps -eo pid,args,psr | grep xxx
    # pid - 进程ID
    # args - 该进程执行时传入的命令行参数
    # psr - 分配给进程的CPU

    2. 通过C程序编程获取

    两个API

    #include <sys/sysinfo.h>
    int get_nprocs(void);
    int get_nprocs_conf(void);

    get_nprocs_conf返回CPU总核数,包括系统中禁用的核的数目,因此该值并不代表当前系统中可用的核数。
    get_nprocs返回系统当前可用的核数

    示例:

    #include <stdio.h>
    #include <sys/sysinfo.h>
    
    int main(int argc, char* argv[])
    {
        printf("cpu total: %d\n", get_nprocs_conf());
        printf("cpu num: %d\n", get_nprocs());
        return 0;
    }
    展开全文
  • linux获取cpu核心数c语言接口

    千次阅读 2019-07-02 10:13:24
    接口原型: ...接口描述:该接口用于获取一些系统配置,如_SC_NPROCESSORS_ONLN表示The number of processors currently online (available).等等 #include <stdio.h> #include <un...

    接口原型:

    #include <unistd.h>

    long sysconf(int name);

    接口描述:该接口用于获取一些系统配置,如_SC_NPROCESSORS_ONLN表示The number of processors currently online (available).等等

    #include <stdio.h>
    #include <unistd.h>
    
    int main(int argc, char *argv[])
    {
        unsigned int ngx_ncpu = 0;
        
        ngx_ncpu = sysconf(_SC_NPROCESSORS_ONLN);
        printf("ncpu = %d\n", ngx_ncpu);
        
        return 0;
    }

     

    展开全文
  • linux C 获取cpu数目

    千次阅读 2015-02-19 13:17:38
    就举一个很简单的例子,一个进程开启的线程数量与CPU个数相关,而不同的机器CPU的数目不同,当我们代码从一个机器移到另外一个机器的时候,我们就不要手工修改先关参数,直接写代码自动获取CPU数目从而自动生成合适...

          我们现在写的代码一定要考虑可移植性,就举一个很简单的例子,一个进程开启的线程数量与CPU个数相关,而不同的机器CPU的数目不同,当我们代码从一个机器移到另外一个机器的时候,我们就不要手工修改先关参数,直接写代码自动获取CPU数目从而自动生成合适的线程数目。

    #include <stdio.h>
    #include <unistd.h>
    #include <stdlib.h>
    
    
    int getcpunum() {
            char buf[16] = {0};
            int num;
            FILE* fp = popen("cat /proc/cpuinfo |grep processor|wc -l", "r");
            if(fp) {                                                                                                                                                                             
               fread(buf, 1, sizeof(buf) - 1, fp);
               pclose(fp);
            }   
            num = atoi(buf);
            if(num <= 0){ 
                num = 1;
            }   
            return num;
    }
    
    int main(int argc, char *argv[])
    {
        printf("cpu num = %d\n", getcpunum());
        return 0;
    }
    


    上述代码运行结果


     

      linux下一切皆文件,很多内核的参数我们直接可以/proc目录下读到, 这个目录磁盘大小为0,因为/proc目录只有linux启动之后,才会生成,而且全部加载在内存中的。一般常用cpu、网络、fd、什么buf大小、什么限制之类相关参数。


    如果有什么问题,欢迎讨论!!!



    展开全文
  • Qt linux获取cpu使用率、内存、网络收发速度、磁盘读写速度、磁盘剩余空间等,实际上大部分都和qt无关的,用其他语言也可以获取。 code: .h #ifndef RESOURCE_MINITOR_H #define RESOURCE_MINITOR_H #include #...

    Qt linux获取cpu使用率、内存、网络收发速度、磁盘读写速度、磁盘剩余空间等,实际上大部分都和qt无关的,用其他语言也可以获取。
    code:
    .h

    #ifndef RESOURCE_MINITOR_H
    #define RESOURCE_MINITOR_H
    #include <QObject>
    #include <QTimer>
    #include <QProcess>
    #include <QDebug>
    class resource_minitor : public QObject
    {
        Q_OBJECT
    public:
        explicit resource_minitor(QObject *parent = nullptr);
    private slots:
        void get_resource__();
    private:
        bool get_mem_usage__();
        bool get_net_usage__();
        bool get_disk_speed__();
        bool get_cpu_usage__();
        bool get_disk_space__();
        bool get_path_space(const QString & path);
    private:
        const int m_timer_interval__ = 1000;
        QTimer monitor_timer__;
        double m_send_bytes__ = 0;
        double m_recv_bytes__ = 0;
        double m_disk_read__ = 0;
        double m_disk_write__ = 0;
        double m_cpu_total__ = 0;
        double m_cpu_use__ = 0;
    };
    #endif // RESOURCE_MINITOR_H

    .cpp

    #include "resource_minitor.h"
    #include "sys/statfs.h"
    resource_minitor::resource_minitor(QObject *parent) : QObject(parent)
    {
        connect(&monitor_timer__, &QTimer::timeout, this, &resource_minitor::get_resource__);
        monitor_timer__.start(m_timer_interval__);
    }
    void resource_minitor::get_resource__()
    {
        get_cpu_usage__ ();
        get_disk_speed__();
        get_mem_usage__ ();
        get_net_usage__ ();
        get_disk_space__();
        get_path_space("/");
        qDebug()<<"\n";
    }
    bool resource_minitor::get_mem_usage__()
    {
        QProcess process;
        process.start("free -m"); //使用free完成获取
        process.waitForFinished();
        process.readLine();
        QString str = process.readLine();
        str.replace("\n","");
        str.replace(QRegExp("( ){1,}")," ");//将连续空格替换为单个空格 用于分割
        auto lst = str.split(" ");
        if(lst.size() > 6)
        {
            qDebug("mem total:%.0lfMB free:%.0lfMB",lst[1].toDouble(),lst[6].toDouble());
            return true;
        }
        return false;
    }
    bool resource_minitor::get_net_usage__()
    {
        QProcess process;
        process.start("cat /proc/net/dev"); //读取文件/proc/net/dev获取网络收发包数量,再除取样时间得到网络速度
        process.waitForFinished();
        process.readLine();
        process.readLine();
        while(!process.atEnd())
        {
            QString str = process.readLine();
            str.replace("\n","");
            str.replace(QRegExp("( ){1,}")," ");
            auto lst = str.split(" ");
            if(lst.size() > 9 && lst[0] == "enp2s0:")
            {
                double recv = 0;
                double send = 0;
                if(lst.size() > 1)
                    recv = lst[1].toDouble();
                if(lst.size() > 9)
                    send = lst[9].toDouble();
                qDebug("%s 接收速度:%.0lfbyte/s 发送速度:%.0lfbyte/s",lst[0].toStdString().c_str(),(recv - m_recv_bytes__) / (m_timer_interval__ / 1000.0),(send - m_send_bytes__) / (m_timer_interval__ / 1000.0));
                m_recv_bytes__ = recv;
                m_send_bytes__ = send;
            }
        }
        return true;
    }
    bool resource_minitor::get_cpu_usage__()
    {
        QProcess process;
        process.start("cat /proc/stat");
        process.waitForFinished();
        QString str = process.readLine();
        str.replace("\n","");
        str.replace(QRegExp("( ){1,}")," ");
        auto lst = str.split(" ");
        if(lst.size() > 3)
        {
            double use = lst[1].toDouble() + lst[2].toDouble() + lst[3].toDouble();
            double total = 0;
            for(int i = 1;i < lst.size();++i)
                total += lst[i].toDouble();
            if(total - m_cpu_total__ > 0)
            {
                qDebug("cpu rate:%.2lf%%",(use - m_cpu_use__) / (total - m_cpu_total__) * 100.0);
                m_cpu_total__ = total;
                m_cpu_use__ = use;
                return true;
            }
        }
        return false;
    }
    bool resource_minitor::get_disk_speed__()
    {
        QProcess process;
        process.start("iostat -k -d");
        process.waitForFinished();
        process.readLine();
        process.readLine();
        process.readLine();
        QString str = process.readLine();
        str.replace("\n","");
        str.replace(QRegExp("( ){1,}")," ");
        auto lst = str.split(" ");
        if(lst.size() > 5)
        {
            qDebug("disk read:%.0lfkb/s disk write:%.0lfkb/s",(lst[4].toDouble() - m_disk_read__ ) / (m_timer_interval__ / 1000.0),(lst[5].toDouble() - m_disk_write__) / (m_timer_interval__ / 1000.0));
            m_disk_read__ = lst[4].toDouble();
            m_disk_write__ = lst[5].toDouble();
            return true;
        }
        return false;
    }
    bool resource_minitor::get_disk_space__()
    {
        QProcess process;
        process.start("df -k");
        process.waitForFinished();
        process.readLine();
        while(!process.atEnd())
        {
            QString str = process.readLine();
            if(str.startsWith("/dev/sda"))
            {
                str.replace("\n","");
                str.replace(QRegExp("( ){1,}")," ");
                auto lst = str.split(" ");
                if(lst.size() > 5)
                    qDebug("挂载点:%s 已用:%.0lfMB 可用:%.0lfMB",lst[5].toStdString().c_str(),lst[2].toDouble()/1024.0,lst[3].toDouble()/1024.0);
            }
        }
        return true;
    }
    bool resource_minitor::get_path_space(const QString & path)
    {
        struct statfs diskInfo;
        statfs(path.toUtf8().data(), &diskInfo);
        qDebug("%s 总大小:%.0lfMB 可用大小:%.0lfMB",path.toStdString().c_str(),(diskInfo.f_blocks * diskInfo.f_bsize)/1024.0/1024.0,(diskInfo.f_bavail * diskInfo.f_bsize)/1024.0/1024.0);
        return true;
    }

    效果:
    这里写图片描述

    示例代码(Qt5.9工程):http://download.csdn.net/download/yangyang031213/10204938
    https://github.com/yangyang0312/cpp/tree/master/Qt/resource_minitor

    展开全文
  • 获取CPU数量

    2018-06-27 11:25:49
    支持 windows平台 Linux平台和 Apple平台 #if defined WIN32 || defined _WIN32 #include &...//获取CPU数量 static int XGetCpuNum() { #if defined WIN32 || defined _WIN32 SYSTEM_INFO sysinfo; ...
  • python获取当前计算机cpu数量

    千次阅读 2019-09-22 10:27:57
    python获取当前计算机cpu数量 如果当前python版本大于2.6,可以简单的通过下面模块来获取当前cpu数量, cpu_count的返回值就是cpu数量: import multiprocessing multiprocessing.cpu_count() 如果是比较老的python...
  • Linux命令查看以及编程获取CPU核数

    万次阅读 2016-10-12 09:15:34
    ㈠ 概念   ① 物理CPU     实际Server中插槽上的CPU个数  物理cpu数量,可以数不重复的 physical id 有几个    ② 逻辑CPU     Linux用户对 /p
  • linux如何查看cpu数量

    2020-04-17 16:19:35
    查看cpu数量方法 1./proc/cpuinfo 2.lscpu cpu个数,cpu核数和cpu线程数概念 cpu个数:即cpu芯片数量 cpu核数:指物理上或者说是硬件上存在CPU的数量,双核即1个cpu芯片上有2个核心,4核即一个cpu芯片上有4个核心。...
  • 新建一个cpu_num.cpp文件 touch cpu_num.cpp 写入如下代码 #include&lt;iostream&gt; #include&lt;unistd.h&gt; using namespace std; int main() { int cpu_num; cpu_num = ...
  • LINUX CPU core processor 数量

    千次阅读 2019-03-28 02:17:20
    # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 # 查看物理CPU个数 cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l # 查看每个物理CPU中...
  • 编程获取linuxCPU使用率内存占用率

    万次阅读 2014-10-09 09:01:45
    Linux下提供top、ps命令查看当前cpu、mem使用情况,简要介绍如下: 一、使用ps查看进程的资源占用 ps -aux 查看进程信息时,第三列就是CPU占用。 [root@localhost utx86]# ps -aux | grep my_process Warning: ...
  • 学会查看linux各种状态,包括:网络IO、磁盘、CPU、内存等;
  • Linux查看CPU信息详解

    千次阅读 2015-09-09 23:30:15
    Linux查看CPU信息详解
  • #查看CPU详细信息 #以上两条命令得在root用户下执行才有输出 dmidecode |grep -iA16 “memory device”|grep -i size|grep -vi no #查看当前内存的数量及大小 dmidecode |grep -iA16 “memory dev...
  • Linux 操作系统下获得cpu的core的数量
  • linux 查看CPU使用率

    千次阅读 2019-02-18 11:14:06
    1:top top -bn 1 -i -c top命令可以看到总体的系统运行状态和cpu使用效率 %us: 表示用户空间程序的cpu使用效率 %sy:表示系统空间程序的cpu使用效率 ...%ni: 表示用户空间通过nice调...%si: cpu处理软中断的数量...
  • 请问怎么使用c语言获取电脑cpu利用率(Windows和Linux) and cpu利用率是按照字面意思计算的么? 本人真的是菜鸟,求指点,恳求
  • Linux系统查看CPU使用率、内存使用率、磁盘使用率

    万次阅读 多人点赞 2019-04-16 15:17:00
    一、查看CPU使用率 1. top 命令 top命令可以看到总体的系统运行状态和cpu的使用率 。 %us:表示用户空间程序的cpu使用率(没有通过nice调度) ...%hi:cpu处理硬中断的数量 %si:cpu处理软中断...
  • OS如何获取CPU核数

    2018-01-05 23:15:26
    本文不是讨论你在Windows或在Linux下如何查看CPU核数(Linux下查看/proc/cpuinfo或/sys/drivers/system/cpu/)。 重点是操作系统怎么知道CPU有几个核呢?有人说是CPUID,不过并不是所有的CPU都能通过CPUID来识别,...
  • linux里一切皆为文件,在linux/unix的根目录下,有个/proc目录,这个/proc 是一种内核和内核模块用来向进程(process)发送信息的机制(所以叫做“/proc”),这个伪文件系统允许与内核内部数据结构交互,获取有关...
  • 浅谈LinuxCPU利用率和CPU负载

    万次阅读 2016-06-29 11:15:36
    Linux/Unix下,CPU利用率(CPU utilization)分为用户态,系统态和空闲态,分别表示CPU处于用户态执行的时间,系统内核执行的时间,和空闲系统进程执行的时间。平时所说的CPU利用率是指:CPU执行非系统空闲进程的...
  • linux 查看cpu和gpu的使用情况

    千次阅读 2017-10-31 21:52:08
    1.查看cpu命令行输入:top则会输出: 上图第三行就是cpu的使用情况. 参数解释: us:用户空间程序的cpu使用率 ...hi:cpu处理硬中断的数量 si:cpu处理软中断的数量 st:被虚拟机占用的cpu2.查看g
  • Linux查看CPU使用情况

    千次阅读 2019-07-12 13:21:44
    linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。而监控CPU的性能一般包括以下3点:运行队列、CPU使用率和上下文切换。 对于每一个CPU来说运行队列最好不要超过3,例如,如果是双核CPU就...
  • linux percpu机制解析

    千次阅读 2016-11-12 10:06:11
    一个cpu不应该访问与其它cpu对应的数组元素,另外,它可以随意读或修改它自己的元素而不用担心出现竞争条件,因为它是唯一有资格这么做的cpu。这也意味着每cpu变量基本上只能在特殊情况下使用,也就是当它确定在系统...
  • Linux系统中,提供了proc文件系统显示系统的软硬件信息。如果想了解系统中CPU的提供商和相关配置信息,则可以通过/proc/cpuinfo文件得到。我们来看看X86和ARM平台下CPU信息的差异。 基于不同指令集(ISA)的CPU...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 81,062
精华内容 32,424
关键字:

linux获取cpu数量

linux 订阅