CPU相关知识总结
整理中。。。
CPU的亲和性
CPU的亲和性(affinity)是指在Linux系统中能够将一个或多个进程绑定到一个或多个处理器上运行。这意味着进程通常不会在处理器之间频繁迁移。一个进程的CPU亲合力掩码决定了该进程将在哪个或哪几个CPU上运行。在一个多处理器系统中,设置CPU亲合力的掩码可能会获得更好的性能。
CPU的亲和性利用了这样一个事实,就是进程上一次运行后的残余信息会保留在处理器的状态中(也就是指处理器的缓存)。如果下一次仍然将该进程调度到同一个处理器上,就能避免一些不好的情况(比如缓存未命中),使得进程的运行更加高效。
软亲和性
意味着进程并不会在处理器之间频繁迁移。硬亲和性
意味着进程需要在您指定的处理器上运行。- 内核 API
- sched_set_affinity() (用来修改位掩码)
- sched_get_affinity() (用来查看当前的位掩码)
- 内核 API
处理器亲和性能够有效地解决一些高速缓存的问题,但却不能缓解负载均衡的问题。而且,在异构系统中,处理器亲和性问题会变得更加复杂。
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 | # renice --help |
查看cpu状态
mpstat -P ALL 3 5
mpstat -P cpu编号 间隔时间(秒) 输出次数
1 | # mpstat -P ALL 3 5 |
上下文交换
- 中断(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等架构(不同版本支持有所不同)(详细情况见官方文档)。