CPU相关知识总结

整理中。。。

CPU的亲和性

CPU的亲和性(affinity)是指在Linux系统中能够将一个或多个进程绑定到一个或多个处理器上运行。这意味着进程通常不会在处理器之间频繁迁移。一个进程的CPU亲合力掩码决定了该进程将在哪个或哪几个CPU上运行。在一个多处理器系统中,设置CPU亲合力的掩码可能会获得更好的性能。

CPU的亲和性利用了这样一个事实,就是进程上一次运行后的残余信息会保留在处理器的状态中(也就是指处理器的缓存)。如果下一次仍然将该进程调度到同一个处理器上,就能避免一些不好的情况(比如缓存未命中),使得进程的运行更加高效。

  • 软亲和性
    意味着进程并不会在处理器之间频繁迁移。

  • 硬亲和性
    意味着进程需要在您指定的处理器上运行。

    • 内核 API
      • sched_set_affinity() (用来修改位掩码)
      • sched_get_affinity() (用来查看当前的位掩码)

处理器亲和性能够有效地解决一些高速缓存的问题,但却不能缓解负载均衡的问题。而且,在异构系统中,处理器亲和性问题会变得更加复杂。

taskset查看、设定 CPU 核使用情况

``

taskset -h

-p, –pid operate on existing given pid
-c, –cpu-list display and specify cpus in list format
-h, –help display this help
-V, –version output version information

taskset -cp 2-3 nginx

``

nice/renice设定进程调度优先级

1
2
3
4
5
6
7
8
9
# renice --help

Usage:
renice [-n] priority [-p|--pid] pid [... pid]
renice [-n] priority -g|--pgrp pgrp [... pgrp]
renice [-n] priority -u|--user user [... user]
renice -h | --help
renice -v | --version

查看cpu状态

mpstat -P ALL 3 5

mpstat -P cpu编号 间隔时间(秒) 输出次数

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
28
29
30
31
32
# mpstat -P ALL 3 5
Linux 2.6.32-431.el6.x86_64 (test-204) 08/22/2017 _x86_64_ (2 CPU)

08:34:03 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
08:34:06 PM all 1.01 0.00 2.86 0.00 0.00 0.00 0.00 0.00 96.13
08:34:06 PM 0 0.67 0.00 3.37 0.00 0.00 0.00 0.00 0.00 95.96
08:34:06 PM 1 1.34 0.00 2.68 0.00 0.00 0.00 0.00 0.00 95.97

08:34:06 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
08:34:09 PM all 1.34 0.00 2.85 0.17 0.00 0.00 0.00 0.00 95.64
08:34:09 PM 0 1.00 0.00 2.68 0.00 0.00 0.00 0.00 0.00 96.32
08:34:09 PM 1 2.01 0.00 2.68 0.33 0.00 0.00 0.00 0.00 94.98

08:34:09 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
08:34:12 PM all 0.67 0.00 1.51 0.00 0.00 0.17 0.00 0.00 97.65
08:34:12 PM 0 0.34 0.00 1.68 0.00 0.00 0.00 0.00 0.00 97.98
08:34:12 PM 1 1.00 0.00 1.34 0.00 0.00 0.00 0.00 0.00 97.66

08:34:12 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
08:34:15 PM all 0.34 0.00 1.01 0.00 0.00 0.00 0.00 0.00 98.66
08:34:15 PM 0 0.00 0.00 1.34 0.33 0.00 0.00 0.00 0.00 98.33
08:34:15 PM 1 0.34 0.00 0.67 0.00 0.00 0.00 0.00 0.00 98.99

08:34:15 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
08:34:18 PM all 0.50 0.00 1.34 0.00 0.00 0.00 0.00 0.00 98.16
08:34:18 PM 0 0.33 0.00 1.67 0.00 0.00 0.00 0.00 0.00 98.00
08:34:18 PM 1 0.67 0.00 1.01 0.00 0.00 0.00 0.00 0.00 98.32

Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
Average: all 0.77 0.00 1.91 0.03 0.00 0.03 0.00 0.00 97.25
Average: 0 0.47 0.00 2.14 0.07 0.00 0.00 0.00 0.00 97.32
Average: 1 1.07 0.00 1.68 0.07 0.00 0.00 0.00 0.00 97.18

上下文交换

  • 中断(Interrupt)
    是指处理器接收到来自硬件或软件的信号,提示发生了某个事件,应该被注意,这种情况就称为中断。

cpu核数计算

  • 查询物理CPU个数:
    1
    cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
  • 查询单个物理cpu的核数:
    1
    cat /proc/cpuinfo| grep "cpu cores"| uniq
  • 查询逻辑CPU总数:
    1
    cat /proc/cpuinfo| grep "processor"| wc -l
    • 逻辑CPU总数=物理CPU个数*单个CPU核数(*2 超线程)

超频检测

1
turbostat -i 1

CPU架构类型

x86这一术语并不是指的某一个(具体CPU使用的)具体的指令集,而是在8086(的指令集)基础上发展而来 的所有指令集的泛称。

  • i386

    Intel 80386,通常用来作为对Intel(英特尔)32位微处理器的统称。

  • arm64

    又称“x86-64”或“x64”,是一种64位元的电脑处理器架构。由AMD公司开发.

  • amd64

    ARM架构,过去称作高级精简指令集机器,是一个32位精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。但在其他领域上也有很多作为,由于节能的特点,ARM处理器非常适用于移动通信领域,匹配其主要设计目标为低成本、高性能、低耗电的特性。另一方面,超级计算机消耗大量电能,ARM同样被视作更高效的选择。

Darwin是由苹果电脑于2000年所释出的一个开放原始码操作系统。Darwin 是MacOSX 操作环境的操作系统成份。

  • FreeBSD

    是一种类UNIX操作系统,是由经过BSD、386BSD和4.4BSD发展而来的Unix的一个重要分支。FreeBSD 为不同架构的计算机系统提供了不同程度的支持。
    FreeBSD支持amd64(x86_64)、X86(i386)、ARM、IA-64、PowerPC、PC-98、SPARC等架构(不同版本支持有所不同)(详细情况见官方文档)。

相关资料