[内容] Linux 处理器详细信息的显示 (显示 /proc/cpuinfo 文件里的信息)

内容一:显示处理器详细信息

1.1 显示处理器详细信息

# cat /proc/cpuinfo

或者:

# lscpu

1.2 /proc/cpuinfo 文件里或者 lscpu 命令里重要参数

1) processor,进程 (虚拟核心) ID
2) core ID,物理核心 ID
3) physical id,物理封装处理器 ID (CPU socket ID)
4) cpu cores, 每 1 个物理封装处理器 ID (CPU socket ID) 里的物理核心数量
5) siblings, 每 1 个物理封装处理器 ID (CPU socket ID) 里的进程 (虚拟核心) 数量

内容二:显示 Linux 处理器详细信息的案例

2.1 案例一:显示处理器所有信息

# cat /proc/cpuinfo
processor	: 0
vendor_id	: AuthenticAMD
cpu family	: 23
model		: 1
model name	: AMD Ryzen 7 1700 Eight-Core Processor
stepping	: 1
microcode	: 0x8001138
cpu MHz		: 1371.214
cache size	: 512 KB
physical id	: 0
siblings	: 16
core id		: 0
cpu cores	: 8
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb hw_pstate sme ssbd sev ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf xsaveerptr arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif overflow_recov succor smca
bugs		: sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass
bogomips	: 5987.93
TLB size	: 2560 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 43 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate eff_freq_ro [13] [14]

......

2.2 案例二:显示处理器进程 (虚拟核心) 数

# cat /proc/cpuinfo | egrep "core id|physical id|processor" | tr -d "\n" | sed s/processor/\\nprocessor/g | sed 's/physical/     physical/' | sed 's/core/     core/' | grep -v ^$ | wc -l

2.3 案例三:显示处理器物理核心数

# cat /proc/cpuinfo | egrep "core id|physical id" | tr -d "\n" | sed s/physical/\\nphysical/g | grep -v ^$ | sort | uniq | wc -l

2.4 案例四:显示物理封装处理器 (处理器 socket) 数

# cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l

2.5 案例五:显示处理器所有进程 (虚拟核心) ID

# cat /proc/cpuinfo | grep processor
processor	: 0
processor	: 1
processor	: 2
processor	: 3
processor	: 4
processor	: 5
processor	: 6
processor	: 7
processor	: 8
processor	: 9
processor	: 10
processor	: 11
processor	: 12
processor	: 13
processor	: 14
processor	: 15

2.6 案例六:显示处理器所有物理核心 ID

# cat /proc/cpuinfo | grep 'core id'
core id		: 0
core id		: 1
core id		: 2
core id		: 3
core id		: 4
core id		: 5
core id		: 6
core id		: 7
core id		: 0
core id		: 1
core id		: 2
core id		: 3
core id		: 4
core id		: 5
core id		: 6
core id		: 7

2.7 案例七:显示处理器所有物理封装处理器 ID (处理器 socket ID)

# cat /proc/cpuinfo | grep 'physical id'
physical id	: 0
physical id	: 0
physical id	: 0
physical id	: 0
physical id	: 0
physical id	: 0
physical id	: 0
physical id	: 0
physical id	: 0
physical id	: 0
physical id	: 0
physical id	: 0
physical id	: 0
physical id	: 0
physical id	: 0
physical id	: 0

2.8 案例八:显示处理器所有物理封装处理器 ID (处理器 socket ID) 和物理核心 ID 以及对应关系

# cat /proc/cpuinfo | egrep "core id|physical id" | tr -d "\n" | sed s/physical/\\nphysical/g | sed 's/core/ core/'g |  grep -v ^$ | sort | uniq
physical id	: 0 core id		: 0
physical id	: 0 core id		: 1
physical id	: 0 core id		: 2
physical id	: 0 core id		: 3
physical id	: 0 core id		: 4
physical id	: 0 core id		: 5
physical id	: 0 core id		: 6
physical id	: 0 core id		: 7

2.9 案例九:显示处理器所有进程 (虚拟核心) ID、物理封装处理器 ID (处理器 socket ID) 、物理核心 ID 以及对应关系

# cat /proc/cpuinfo | egrep "core id|physical id|processor" | tr -d "\n" | sed s/processor/\\nprocessor/g | sed 's/physical/     physical/' | sed 's/core/     core/' | grep -v ^$
processor	: 0     physical id	: 0     core id		: 0
processor	: 1     physical id	: 0     core id		: 1
processor	: 2     physical id	: 0     core id		: 2
processor	: 3     physical id	: 0     core id		: 3
processor	: 4     physical id	: 0     core id		: 4
processor	: 5     physical id	: 0     core id		: 5
processor	: 6     physical id	: 0     core id		: 6
processor	: 7     physical id	: 0     core id		: 7
processor	: 8     physical id	: 0     core id		: 0
processor	: 9     physical id	: 0     core id		: 1
processor	: 10     physical id	: 0     core id		: 2
processor	: 11     physical id	: 0     core id		: 3
processor	: 12     physical id	: 0     core id		: 4
processor	: 13     physical id	: 0     core id		: 5
processor	: 14     physical id	: 0     core id		: 6
processor	: 15     physical id	: 0     core id		: 7

2.10 案例十:显示每 1 个物理封装处理器 (处理器 socket) 里物理核心数

# cat /proc/cpuinfo | grep 'cpu cores'
cpu cores	: 8
cpu cores	: 8
cpu cores	: 8
cpu cores	: 8
cpu cores	: 8
cpu cores	: 8
cpu cores	: 8
cpu cores	: 8
cpu cores	: 8
cpu cores	: 8
cpu cores	: 8
cpu cores	: 8
cpu cores	: 8
cpu cores	: 8
cpu cores	: 8
cpu cores	: 8

2.11 案例十一:显示每 1 个物理封装处理器 (处理器 socket) 里进程 (虚拟核心) 核心数

# cat /proc/cpuinfo | grep 'siblings'
siblings	: 16
siblings	: 16
siblings	: 16
siblings	: 16
siblings	: 16
siblings	: 16
siblings	: 16
siblings	: 16
siblings	: 16
siblings	: 16
siblings	: 16
siblings	: 16
siblings	: 16
siblings	: 16
siblings	: 16
siblings	: 16

内容二:理解显示的处理器详细信息

1) processor 的数字从 0 到 15,代表有 16 个进程 (虚拟核心)
2) core id 的数字从 0 到 7,代表有 8 个物理核心
3) physical id 的数字都是 0,代表只有 1 个物理封装处理器 (处理器 socket)
4) cpu cores 的数字都是 8,代表每 1 个物理封装处理器 (处理器 socket) 里有 8 个物理核心
5) siblings 的数字都是 16,代表每 1 个物理封装处理器 (处理器 socket) 里有 16 个进程 (虚拟核心)
6) 总结:1 个处理器,8 个物理核心,16 个进程 (虚拟核心)

[步骤] Linux 软件指定版本的升级 (openSUSE & SLES 版)

步骤一:解锁软件

# zypper removelocks docker

(补充:这里以解锁 docker 软件包为例)

步骤二:显示所有可用的软件版本

# zypper se -s docker

(补充:这里以显示 docker 软件包的所有可用的版本为例)

步骤三:升级指定版本的软件

# zypper install --oldpackage docker-<version>.<architecture>

(补充:这里以升级 docker 软件包的指定版本为例)

步骤四:重新锁定软件

# zypper addlock docker

(补充:这里以重新锁定 docker 软件包为例)

步骤五:重启系统

# reboot

[排错] 解决 openSUSE & SLES 升级系统时报错 “Can’t get available migrations from server: SUSE::Connect::ApiError: Multiple base products found:……”

报错代码

Can't get available migrations from server: SUSE::Connect::ApiError: Multiple base products found: ......

分析

当上一次升级失败或者升级回滚了以后可能会报此类错误

解决方法

方法一:通过 SUSEConnect 命令回滚

1.1 通过 SUSEConnect 命令回滚

# SUSEConnect –rollback

1.2 重新升级

(步骤略)

步骤二:取消注册再重新注册

2.1 取消注册再重新注册

(步骤略)

2.2 重新升级

(步骤略)

参考文献:

https://www.suse.com/support/kb/doc/?id=000019523

[内容] Linux 生命周期

Red Hat:

RHEL

English:

https://access.redhat.com/support/policy/updates/errata/#Extended_Life_Cycle_Phase

Or:

https://access.redhat.com/product-life-cycles?product=Red%20Hat%20Enterprise%20Linux

Chinese:

https://access.redhat.com/zh_CN/support/policy/updates/errata#Extended_Life_Cycle_Phase

Red Hat all products

https://access.redhat.com/product-life-cycles/update_policies

Red Hat software packages

https://access.redhat.com/support/policy/updates/rhel-app-streams-life-cycle?extIdCarryOver=true&sc_cid=701f2000001OH6fAAG

SUSE:

openSUSE

English:

https://en.opensuse.org/Lifetime

Chinese:

https://zh.opensuse.org/%E4%BD%BF%E7%94%A8%E6%9C%9F%E9%99%90

SLES

https://www.suse.com/lifecycle

[排错] 解决 Linux 运行时报错 “watchdog: Bug: soft lockup – CPU……” (CPU 软锁)

报错代码

watchdog: Bug: soft lockup - CPU......

分析

当 CPU 的负载过高时,一个 CPU 在运行某一个进程时,在内核模式下超过 20 秒没有回应,则看门狗程序会将系统所有 CPU 软锁住,然后会让这些 CPU 显示各自正在运行的进程堆栈跟踪

缓解方法

方法一:通过 /proc/sys/kernel/watchdog_thresh 文件延长看门狗软锁 CPU 的时间

# echo 20 > /proc/sys/kernel/watchdog_thresh

(补充:这里以将看门狗的值延长到 20 为例,也可以根据自己的需求延长更多,默认值为 10)

方法二:通过新建文件延长看门狗软所 CPU 的时间

2.1 通过新建文件延长看门狗软所 CPU 的时间

# echo "kernel.watchdog_thresh = 20" >> /etc/sysctl.conf

(补充:这里以将看门狗的值延长到 20 为例,也可以根据自己的需求延长更多,默认值为 10)

2.2 让新建文件立刻生效

# sysctl -p /etc/sysctl.conf

深究方法

开启 Kdump,等此报错再次发生时分析 Kdump 在内核崩溃时搜集信息 vmcore