Linux CPU与内存常见问题处理技巧
一、CPU
场景一:判断虚机是否支持某某指令集
可以通过Linux执行lscpu命令,输出信息Flags部分即是支持的指令集列表。
[root@blogs-v2 ~]# lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 2 Core(s) per socket: 2 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 61 Model name: Intel Core Processor (Broadwell, no TSX) Stepping: 2 CPU MHz: 2197.454 BogoMIPS: 4394.90 Hypervisor vendor: KVM Virtualization type: full L1d cache: 32K L1i cache: 32K L2 cache: 4096K L3 cache: 16384K NUMA node0 CPU(s): 0-3 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 rdtscp lm constant_tsc rep_good nopl xtopology eagerfpu pni pclmulqdq ssse3 fma cx16 pcid \ sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch \ invpcid_single fsgsbase bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap xsaveopt arat 注:Flags部分即是当前主机支持的指令集列表
场景二:虚机热升级CPU后发现核数不对
这种情况一般是部分CPU核数没有拉起导致,通过lscpu可以查看离线CPU核数。
注:上图中off-line CPU(s)即是离线CPU的列表,即第4、第6、第7核CPU目前处于离线状态
# 手动拉起离线CPU方法 echo 1 > /sys/devices/system/cpu/cpu4/online echo 1 > /sys/devices/system/cpu/cpu6/online echo 1 > /sys/devices/system/cpu/cpu7/online
二、内存
场景一:购买虚机内存与实际命令统计显示不符
例如:通过free -h或者通过宝塔面板统计的内存大小一般都是偏小的。
(1)内存统计方法一
注:计算累加:384M+128M+640M+128M+384M+128M+256M=2048M=2G
(2)内存统计方法二
[root@ansible ~]# yum install -y dmidecode [root@ansible ~]# dmidecode -t memory
注:free统计显示的内存去掉了系统和内核使用内存。
[root@ansible ~]# cat /proc/cmdline BOOT_IMAGE=/boot/vmlinuz-4.4.246-1.el7.elrepo.x86_64 root=/dev/vda1 ro vconsole.keymap=us \ crashkernel=512M-2G:64M,2G-4G:128M,4G-:192M vconsole.font=latarcyrheb-sun16 rhgb quiet.UTF-8 \ console=tty1 console=ttyS0,115200n8 video=800x600
注:crashkernel=512M-:192M 内核预留192M内存。可以手动去掉,但建议保留这个参数, 内核出现宕机的时候可以保留现场。
场景二:热升级内存大小不对
例如:热升级过程中,产生时间跳变,导致部分内存处于离线状态。
假设2,3,4内存块离线,离线内存拉起方法:
echo 1 > /sys/devices/system/memory/memory2/online echo 1 > /sys/devices/system/memory/memory3/online echo 1 > /sys/devices/system/memory/memory4/online
场景三:云主机内存占用高常见场景
(1)系统启动时会初始化相关设备,该过程会占用内存,内核启动时,也会占用一部分的内存。其中,kdump占用的内存是可以自行设置的,如无特殊要求,请勿自行修改kdump占用的内存大小。
(2)free -mh命令查询的是弹性云服务器的可用内存,dmidecode -t memory命令查询的是实际硬件内存大小(包含内核占用)。因此使用free -mh命令查询到的内存大小比实际的要小一些,属于正常情况,非问题。
(3)centos8是占的内存比较多,可以重装到centos7.6,cetnos7.6的可用内存大概在900M。
(4)快杰云主机kernelcrash占用的内存比普通实例占用更大,修改grub参数,将kernel删掉,重启机器可解决。
场景四:云主机查看内存详细占用
[root@blogs-v2 ~]# cat /proc/meminfo MemTotal: 7958324 kB MemFree: 241772 kB MemAvailable: 3124080 kB Buffers: 0 kB Cached: 3432152 kB SwapCached: 1208 kB Active: 4315112 kB Inactive: 3053348 kB Active(anon): 2932156 kB Inactive(anon): 1401512 kB Active(file): 1382956 kB Inactive(file): 1651836 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 524284 kB SwapFree: 513664 kB Dirty: 408 kB Writeback: 0 kB AnonPages: 3838708 kB Mapped: 170832 kB Shmem: 397360 kB KReclaimable: 136640 kB Slab: 227164 kB SReclaimable: 136640 kB SUnreclaim: 90524 kB KernelStack: 11152 kB PageTables: 26036 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 4503444 kB Committed_AS: 7658012 kB VmallocTotal: 34359738367 kB VmallocUsed: 20264 kB VmallocChunk: 0 kB Percpu: 2416 kB HardwareCorrupted: 0 kB AnonHugePages: 3008512 kB ShmemHugePages: 0 kB ShmemPmdMapped: 0 kB FileHugePages: 0 kB FilePmdMapped: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB Hugetlb: 0 kB DirectMap4k: 286576 kB DirectMap2M: 8101888 kB DirectMap1G: 2097152 kB
作者:UStarGao
链接:https://www.starcto.com/systemtool/277.html
来源:STARCTO
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
UCloud云平台推荐
随便看看
- 2022-04-02Docker可视化管理工具-Portainer
- 2022-01-14Docker镜像加速配置
- 2021-01-31Linux安装包管理-Yum仓库配置
- 2021-05-22MongoDB 集合与文档的相关操作
- 2021-06-23Linux性能异常经典案例分析之D进程