cpu知识

逻辑CPU的数量就是Socket*Core*Thread

Linux下top按1后 查看的CPU也是逻辑CPU个数

核心(core)

一开始,每个物理 cpu 上只有一个核心(a single core),对操作系统而言,也就是同一时刻只能运行一个进程/线程。 为了提高性能,cpu 厂商开始在单个物理 cpu 上增加核心(实实在在的硬件存在),也就出现了双核心 cpu(dual-core cpu)以及多核心 cpu(multiple cores),这样一个双核心 cpu 就是同一时刻能够运行两个进程/线程的。

  • 物理CPU

    • 实际服务器中插槽上的CPU个数 是指物理上,也就是硬件上存在着几颗物理cpu,指的是真实存在是cpu处理器的个数,1个代表一颗,2个代表2颗cpu处理器。 物理cpu数量,可以数不重复的 physical id 有几个,一个不重复的physical代表是一个物理cpu

    • 拥有相同 physical id 的所有逻辑处理器共享同一个物理插座,每个 physical id 代表一个唯一的物理封装。

  • 逻辑CPU

    • Linux下top按1后 查看的CPU也是逻辑CPU个数

      cpuinfo文件里的信息内容分别列出了processor 0 – n 的规格,这表示的也是逻辑cpu的个数

lscpu 
#  Socket(s):主板上面的物理 CPU 插槽。物理cpu个数
#  Thread(s) per core:每个核对应的超线程数
#  Core(s) per socket:Core就是平时说的核,双核、四核等,就是每个CPU上的核数
​
​
# 逻辑CPU的数量就是Socket*Core*Thread
​
[root@test01 ~]# cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l  # 查看物理cpu个数
​
[root@test01 ~]# cat /proc/cpuinfo |grep "processor"|wc -l  # 查看逻辑cpu个数
​
​
# 如18.127的逻辑核数是28c,但实际只有7个cpu物理核数,每个cpu是4核;所以查到的就是28C
root@localhost:~# lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
# CPU(s):                28
On-line CPU(s) list:   0-27
Thread(s) per core:    1
# Core(s) per socket:    4
Socket(s):             7
​
​
​
​
[root@test01 ~]# cat /proc/cpuinfo |grep "cores"|uniq  # 查看cpu核数
​

cpu切换调度

# cpu切换的时候(切换以后也要保存上次执行的状态),分两种情况
# 1、当一个程序遇到I/O操作的时候,操作系统会剥夺该程序cpu的执行权限
# 2、当一个程序长时间占用cpu的时候,操作系统也会剥夺该程序cpu的执行全权限(如调度分配的时间片用完了)
#    如一个程序需要cpu调度不停调度30分钟,这时候如果有其它程序在就绪态排队的话,此时就会阻塞掉,先调度其它需要调度时间片比较小的程序


# 进程的三状态:就绪、运行、阻塞,处于运行状态的进程用完一个时间片后,它的状态会变为就绪状态等待下一次处理器调度。

import time # 就绪态

a = 1 
        # 运行态
b = a + 1  

c = input('>>')  # 阻塞态
                 # 就绪态
c = int(c)       # 运行态

time.slepp(5)    # 阻塞态
                 # 就绪态
d = b +c         # 运行态
                 # 终止

cpu上下文切换

# 上面说的cpu切换运行任务调度时,将上一任务的上下文保存下来,并将即将运行的任务的上下文加载到CPU寄存器上的这一动作,被称为CPU上下文切换。

# cpu上下文属于进程上下文的一部分,进程上下文是由以下两部分组成
# 1、用户级上下文:包含进程的运行时堆栈、数据块、代码块等信息。
# 2、系统级上下文:包含进程标识信息、进程现场信息(CPU上下文)、进程控制信息等信息。

cpu缓存

cpu是与内存直接交互的,内存是与磁盘进行交互的

/*
CPU缓存是CPU重要的参数,缓存是介于内存与CPU之间的存储器,容量虽小,但是速度比内存更快,用于缓解CPU的运算速度与内存条读写速度不匹配的矛盾,因此缓存越高越好。缓存的原理是,
​
如果CPU需要读取一个数据,首先会从缓存中查找,如果找到会立即读取并发送给CPU进行处理,大大减少了CPU访问内存的时间。 
​
如果CPU没有在缓存中找到这个数据,就需要从较慢速度的内存中读取并发送给CPU,同时也会将这个数据调入高速缓存中,以便CPU再次读取这个数据,可以直接从缓存中读取,无需从内存调用。
​
CPU缓存细分为一级缓存,二级缓存,三级缓存,CPU在实际数据读取中重要的却是一级缓存,因为一级缓存速度最快,二级缓存其次,三级缓存属于最慢的,但是三级缓存的容量最大,CPU读取缓存时会先从一级缓存开始,然是二级缓存,而读取二级缓存有时会出现数据未命中的情况,这时候就需要从三级缓存读取。
*/
posted @ 2023-05-23 20:15  无敌大牛牛  阅读(120)  评论(0编辑  收藏  举报