[内容] Linux CPU 详细信息的显示

内容一:显示 Linux CPU 详细信息
1.1 显示 Linux CPU 详细信息

# cat /proc/cpuinfo

或者:

# lscpu

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

1) processor,逻辑核心 ID
2) physical id,物理封装 CPU ID 也就是 CPU socket ID
3) core ID,物理核心 ID
4) cpu cores 物理封装 CPU 也就是 CPU socket 里的物理核心数量
5) siblings 物理封装 CPU 也就是 CPU socket 里的逻辑核心数量

内容二:显示 Linux CPU 详细信息的案例
2.1 显示 Linux CPU 详细信息

# 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]

......
# 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
# 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
# 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
# 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
# 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

2.2 理解显示的 CPU 详细信息

1) processor 的数字从 0 到 15,代表有 16 个逻辑核心
2) physical id 的数字都是 0,代表只有 1 个物理封装 CPU ID 也就是 CPU socket ID
3) core id 的数字从 0 到 7,代表有 8 个物理核心
4) cpu cores 的数字都是 8,代表每 1 个物理封装 CPU 也就是 CPU socket 里有 8 个物理核心
5) siblings 的数字都是 8,代表每 1 个物理封装 CPU 也就是 CPU socket 里有 16 个逻辑核心
6) 简单的理解:1 个 CPU,8 个物理核心,16 个逻辑核心

[步骤] openSUSE & SUSE 软件包指定版本的升级

步骤一:解锁软件

# zypper removelocks docker

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

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

# zypper se -s docker

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

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

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

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

步骤四:重新锁定软件

# zypper addlock docker

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

步骤五:重启系统

# reboot

[排错] 解决 openSUSE & SLE 升级系统时报错 “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 生命周期

RHEL:

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

openSUSE:

English:

https://en.opensuse.org/Lifetime

Chinese:

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

SLE:

https://www.suse.com/lifecycle

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

报错代码:

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

分析:

当 CPU 的负载过高时,一个 CPU 在运行某一个进程时,在内核模式下超过 20 秒没有回应,则看门狗程序会将系统所有 CPU 软锁住,然后会让这些 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.d/99-watchdog_thresh.conf

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

2.2 让新建文件立刻生效

# sysctl -p  /etc/sysctl.d/99-watchdog_thresh.conf

深究方法:

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