linux查看cpu核数,cpu个数,逻辑核数

  1. 查看物理cup数:主板上实际插入的cpu数量,可以数不重复的 physical id 有几个
    cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

  2. 查看cup核数:单块CPU上面能处理数据的芯片组的数量,如双核,四核等
    cat /proc/cpuinfo| grep "cpu cores"| uniq

  3. 逻辑cpu数:简单来说,它可使处理器中的1颗内核,如2颗内核那样在操作系统中发挥作用
    cat /proc/cpuinfo| grep "processor"| wc -l

  4. 查看cpu型号
    cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

  5. 查看系统的内存
    free -lh

  6. 查看硬盘的使用情况:
    df -h

  7. 查看系统的运行状态
    top 

  8. 查看是否支持64位,cpu架构arm或者x86,x86_64等,0表示支持64位
    cat /proc/cpuinfo | grep flags | grep lm | wc -l

  9. 64位会有x86_64标识
    uname -a

C++使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <sys/sysinfo.h>

# 逻辑核数
get_nprocs_conf();

# 当前用户可用户核数
get_nprocs();

# 线程父线程号
getpid();


# 当前线程号
syscall(SYS_gettid);
## 或
gettid();

# 当前线程所在的cpu核数
sched_getcpu();

# 设置函数所在线程运行在指定核上。将以下代码放到线程运行的函数中。其中设置运行的核数是3
cpu_set_t mask;
CPU_ZERO(&mask);
CPU_SET(3, &mask);
if (-1 == pthread_setaffinity_np(pthread_self(), sizeof(mask), &mask)) {
SPDLOG_INFO("bind error");
}