推荐不错的学习地址 https://jingyan.baidu.com/article/f96699bb168d75894f3c1b5d.html
12.
11. 查看网卡硬件信息
lspci|grep Ethernet
10. kdump 捕获崩溃
Kdump详解 参考博客https://blog.csdn.net/weixin_43897044/article/details/88567910
Kdump是在系统崩溃、死锁或死机时用来转储内存运行参数的一个工具和服务,是一种新的crash dump捕获机制,用来捕获kernel crash(内核崩溃)的时候产生的crash dump。kdump需要配置两个不同目的的kernel,其中一个我们在这里称作standard(标准的)(production)kernel;另一个称之为Crash(崩溃的)(capture)kernel。打个比方,如果系统一旦崩溃,那么正常的内核就没有办法工作了,在这个时候将由kdump产生一个用于(capture)捕获当前运行信息的内核,该内核会将此时的内存中的所有运行状态和数据信息收集到一个dump core文件中以便于Ret Hat工程师分析崩溃的原因,一旦内存信息收集完成,系统将会自动重启这和以前的diskdump、netdump同理,只不过kdump是RHEL6特有的
standard(production)kernel,指的是我正在使用的kernel,当standard kernel在使用时出现crash时,kdump会切换到crash kernel,简单来说,standard kernel会正运行时发生crash,而crash(capture)kernel会被用来捕获production kernel在crash时产生的crash dump
捕获crash dump是在新的crash(capture)kernel的上下文中来捕获的,而不是在standard kernel上下文进行
具体是当standard kernel方式crash的时候,kdump通过kexec自动启动进入到crash kernel当中。如果启动了kdump服务,standard kernel会预留一部分内存,这部分内存用来启动crash kernel。
kdump机制主要包括两个组件:kdump和kexec
什么是kexec
kexec是一个快速启动kernel的机制,它运行在某一正在运行的kernel中,启动一个新的kernel(crash kernel),而且不用重新经过BIOS就可以完成启动。因为一般BIOS都会花费很长的时间,尤其是在大型并且同时连接许多外部设备的server上的环境下,BIOS会花费更多的时间
查看Linux系统是否开启打开kdump:
[root@localhost ~]# ulimit -c #如果输出为0,就是关闭,为unlimited则是打开,我的是关闭的
0
1
临时打开/关闭kdump:
[root@localhost ~]# ulimit -c unlimited #临时打开 比如之前测试推荐业务,后端是C++代码写的,尤其跑自动化/压测时会开启crash捕获,测试完在/tmp/dump查看是否有core
[root@localhost ~]# ulimit -c
unlimited #验证为开启了
[root@localhost ~]# ulimit -c 0 #临时关闭
[root@localhost ~]# ulimit -c
0 #验证为关闭了
9. 查看系统磁盘
linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息
df -h 查看磁盘使用情况 实际创建虚拟机时的虚拟空间是40G对应磁盘显示38G多
-h 方便阅读方式显示
fdisk -l |grep Disk 查看磁盘分区情况
lsblk 查看硬盘和分区分布
fdisk -l 查看硬盘和分区的详细信息
Disk /dev/vda: 42.9 GB, 429496772960 bytes, 83886000 sectors // 扇区个数
Units = sectors of 1 * 512 = 512 bytes // 柱面单元大小 (一个扇区作为一个柱面)
Sector size (logical/physical): 512 bytes / 512 bytes // 扇区大小
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000b97c2
Device Boot Start End Blocks Id System
/dev/vda1 * 2048 2099199 1048576 83 Linux
/dev/vda2 2099200 83886079 40893448 8e Linux LVM
8. 创建虚拟机,使用vnc或者remote viewer连接虚拟机,安装系统如centos7
mac无remote viewer 。需要下载vnc
Windows下载地址 https://www.aiweibk.com/262976.html 或者安装virt-viewer-x86-8.0.msi
把系统生成的vv文件(协议 虚拟机ip port passwd等信息)拖到rv软件然后安装虚拟机
按步骤安装 设置用户名 密码 重启虚拟机 登录虚拟机 修改虚拟网络
修改虚拟网络
vi /etc/sysconfig/network-scripts/ifcfg-eth0
修改最后一行为yes
添加DNS=8.8.8.8
配置如下
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eno1
UUID=d1969ca3-fae4-477d-xx-xx
DEVICE=eno1
ONBOOT=yes
IPADDR=xx.xx.xx.xx
PREFIX=23
GATEWAY=xx.xx.xx.xx
DNS1=xx.xx.xx.xx
保存后记得重启网络 systemctl restart network
再查看ip a |grep inet
inet地址变了,分配了ip
inet为ipv4 inet6为ipv6
如果想在虚拟机(192.168开头)上传东西(虚拟机不支持scp rz 等命令),比如测试CPU平均利用率的shell脚本,则需要给虚拟机绑定浮动ip(创建浮动ip地址,绑定虚拟机。解释:浮动ip地址相当于外网ip 10.121开头,可以从edge-node(172.16开头) scp到浮动ip的机器)
7. 内存利用率
计算方法
used+buff(cache) / total
目前来看集群的内存利用率是在19~22%
[root@edge-node2 ~]# free -lh
total used free shared buff/cache available
Mem: 755G 106G 561G 4.1G 87G 640G
Low: 755G 194G 561G
High: 0B 0B 0B
Swap: 4.0G 0B 4.0G
6. CPU利用率
在Linux下,CPU利用率分为用户态,系统态和空闲态,分别表示CPU处于用户态执行的时间,系统内核执行的时间,和空闲系统进程执行的时间,三者之和就是CPU的总时间,当没有用户进程、系统进程等需要执行的时候,CPU就执行系统缺省的空闲进程。从平常的思维方式理解的话,CPU的利用率就是非空闲进程占用时间的比例,即CPU执行非空闲进程的时间/ CPU总的执行时间
CPU的使用率是使用CPU的处理能力基准计算实时CPU占用率
CPU时间=user+system+nice+idle+iowait+irq+softirq
除idle外,cpu均被有效利用,取两个采样点,于是有:
cpuusage=[(user_2+sys_2+nice_2+iowait_2+irq_2+softirq_2)-(user_1+sys_1+nice_1+iowait_1+irq_1+softirq_2)]/(total_2-total_1)*100%
或者:
cpu usage=(idle2-idle1)/(total_2-total_1)*100%
%Cpu(s): 0.3 us, 0.2 sy, 0.0 ni, 98.0 id, 1.5 wa, 0.0 hi, 0.0 si, 0.0 st
第三行:cpu状态
6.7% us — 用户空间占用CPU的百分比
0.4% sy — 内核空间占用CPU的百分比
0.0% ni — 改变过优先级的进程占用CPU的百分比
92.9% id — 空闲CPU百分比
0.0% wa — IO等待占用CPU的百分比
0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
0.0% si — 软中断(Software Interrupts)占用CPU的百分比
第一行的数值表示的是CPU总的使用情况,所以我们只要用第一行的数字计算就可以了。下表解析第一行各数值的含义:
参数 |
解析(单位:jiffies) |
user (2032004) |
从系统启动开始累计到当前时刻,用户态的CPU时间,不包含 nice值为负进程。 |
nice (102648) |
从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间 |
system (238344) |
从系统启动开始累计到当前时刻,核心时间 |
idle (167130733) |
从系统启动开始累计到当前时刻,除IO等待时间以外其它等待时间 |
iowait (758440) |
从系统启动开始累计到当前时刻,IO等待时间 |
irq (15159) |
从系统启动开始累计到当前时刻,硬中断时间 |
softirq (17878) |
从系统启动开始累计到当前时刻,软中断时间 |
计算cpu利用率的shell脚本
[root@edge-node1 tmp]# cat /proc/stat 查看CPU
cpu 125094388 160 19646788 3863197092 1316929 22008021 20012906 0 105025966 0
cpu0 2300773 0 316963 59961223 28218 350919 322074 0 1989117 0
cpu1 1885273 2 1076616 59629637 19424 345949 333747 0 261688 0
cpu2 1777766 2 382328 60422289 24439 351985 339369 0 1086476 0
cpu3 1591870 11 367656 60620419 20955 352620 342047 0 1049030 0
cpu4 1573398 0 352758 60652301 21908 352368 340665 0 1072780 0
各个参数的具体解释:
第一排是cpu总计,下面是2个4核cpu的参数,故有8行数据。
user (494881706) 从系统启动开始累计到当前时刻,用户态的CPU时间(单位:jiffies) ,不包含 nice值为负进程。1jiffies=0.01秒
nice (19) 从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间(单位:jiffies)
system (67370877) 从系统启动开始累计到当前时刻,核心时间(单位:jiffies)
idle (876689477) 从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其它等待时间(单位:jiffies)
iowait (17202366) 从系统启动开始累计到当前时刻,硬盘IO等待时间(单位:jiffies) ,
irq (200116) 从系统启动开始累计到当前时刻,硬中断时间(单位:jiffies)
softirq (0) 从系统启动开始累计到当前时刻,软中断时间(单位:jiffies)
CPU利用率技术脚本:本脚本持续显示cpu的利用率
知道了/proc文件的内容之后就可以计算cpu的利用率了,具体方法是:先在t1时刻读取文件内容,获得此时cpu的运行情况,然后等待一段时间在t2时刻再次读取文件内容,获取cpu的运行情况,然后根据两个时刻的数据通过以下方式计算cpu的利用率:100 – (idle2 – idle1)*100/(total2 – total1) 其中total = user + system + nice + idle + iowait + irq + softirq
#!/bin/bash
while(true)
do
# $1 $2 $3 $4 $5 $6 $7
CPU_1=$(cat /proc/stat | grep 'cpu ' | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}') #打印第一行cpu每列,user nice system4 idle iowait irq softirq
SYS_IDLE_1=$(echo $CPU_1 | awk '{print $4}') #打印第4列idle,从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其它等待时间
Total_1=$(echo $CPU_1 | awk '{printf "%.f",$1+$2+$3+$4+$5+$6+$7}') #打印cpu全部列之和
sleep 2 #等待2秒
CPU_2=$(cat /proc/stat | grep 'cpu ' | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}') #再次取最新的列
SYS_IDLE_2=$(echo $CPU_2 | awk '{print $4}') #再次打印第4列idle,从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其它等待时间
Total_2=$(echo $CPU_2 | awk '{printf "%.f",$1+$2+$3+$4+$5+$6+$7}') #第二次打印cpu全部列之和
SYS_IDLE=`expr $SYS_IDLE_2 - $SYS_IDLE_1` #expr命令是一个手工命令行计数器,用于求表达式变量的值,一般用于整数值,也可用于字符串 > expr length “this is a test” 为14(算上空格了)
Total=`expr $Total_2 - $Total_1` #2次cpu总和的差值
TT=`expr $SYS_IDLE \* 100` # (idle2 – idle1)*100
SYS_USAGE=`expr $TT / $Total` # (idle2 – idle1)*100/(total2 – total1)
SYS_Rate=`expr 100 - $SYS_USAGE` #cpu利用率为100 – (idle2 – idle1)*100/(total2 – total1)
echo "The CPU Rate : $SYS_Rate%"
echo "------------------"
done
5. inux下dmidecode命令获取硬件信息
dmidecode在 Linux 系统下获取有关硬件方面的信息。dmidecode 遵循 SMBIOS/DMI 标准,以一种可读的方式dump出机器的DMI(Desktop Management Interface)信息, 其输出的信息包括 BIOS、系统、主板、处理器、内存、缓存等等, 既可以得到当前的配置,也可以得到系统支持的最大配置,比如说支持的最大内存数等。
aptitude install dmidecode # Debian/Ubuntu
yum install dmidecode # Fedora
pacman -S dmidecode # Arch Linux
emerge -av dmidecode # Gentoo
1、查看内存槽数、那个槽位插了内存,大小是多少
dmidecode|grep -P -A5 "Memory\s+Device"|grep Size|grep -v Range
2、查看最大支持内存数
dmidecode|grep -P 'Maximum\s+Capacity'
3、查看槽位上内存的速率,没插就是unknown。
dmidecode|grep -A16 "Memory Device"|grep 'Speed'
dmidecode的输出格式一般如下:
Handle 0×0002
DMI type 2, 8 bytes
Base Board Information
Manufacturer:Intel
Product Name: C440GX+
Version: 727281-0001
Serial Number: INCY92700942
其中的前三行都称为记录头(recoce Header), 其中包括了:
1、recode id(handle): DMI表中的记录标识符,这是唯一的,比如上例中的Handle 0×0002。
2、dmi type id: 记录的类型,譬如说:BIOS,Memory,上例是type 2,即”Base Board Information”
3、recode size: DMI表中对应记录的大小,上例为8 bytes.(不包括文本信息,所有实际输出的内容比这个size要更大。)
记录头之后就是记录的值:
4、decoded values: 记录值可以是多行的,比如上例显示了主板的制造商(manufacturer)、model、version以及serial Number。
dmidecode的使用方法
1. 最简单的的显示全部dmi信息:dmidecode
这样将输出所有的dmi信息,你可能会被一大堆的信息吓坏,通常可以使用下面的方法。
2.更精简的信息显示: dmidecode -q
-q(–quite) 只显示必要的信息,这个很管用哦。
3.显示指定类型的信息:
通常我只想查看某类型,比如CPU,内存或者磁盘的信息而不是全部的。这可以使用-t(–type TYPE)来指定信息类型:
4. 服务器操作系统信息
hostnamectl
[root@edge-xx ~]# hostnamectl
Static hostname: edge-node2
Pretty hostname: [edge-node2]
Icon name: computer-server
Chassis: server
Machine ID: 499aa536dxxe5e
Boot ID: fe03xxxxe1
Operating System: MEC Node 4.2.0
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 4.19.104
Architecture: x86-64
uname -a
[root@edge-xx ~]# uname -a
Linux edge-xx 4.19.104 #1 SMP Mon Feb 24 19:19:24 CST 2020 x86_64 x86_64 x86_64 GNU/Linux
3. 查看服务器内存使用情况
free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等
- -b 以Byte为单位显示内存使用情况。
- -k 以KB为单位显示内存使用情况。
- -m 以MB为单位显示内存使用情况。
-
-h 以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值
B = bytes
K = kilos
M = megas
G = gigas
T = teras
物理内存
free
free -lh 按照适合显示的单位去显示 最完美的命令
free 单位:kb
free -m 单位:M
free -g 单位:G
发现在创建虚拟机的时候 分配的内存是4048M 也就是3.953个G 但是实际free显示的total内存是3.7G
free命令显示的内容,第一行的数据是以系统视角看的,第二行的数据是以应用程序的视角看的。
第一行的used一项,其数据不单包含程序使用的内存,还包含buffers跟cached的内存,因此看上去可用的内存很少。
第二行的数据,分别是used-buffers-cached,跟free+buffers+cached,算了一下程序总的内存使用率是(total - free - buffers - cached) / total = 0.038 左右,因此top显示一列0.0也没什么问题。
2. 云计算测试项
hugepage是在linux2.6内核被引入的,主要提供4k的page和比较大的page的选择
cat /proc/meminfo 查看Hugepagesize大小 数量
测试点(centos7)
1 逻辑CPU内核:64
2 Huge Pages(size:amount):[HugePage:{sizeKB='1048576', amount='18'}]
3 设备透传:true
4 物理内存:755.64GB
5 Kdump状态:disabled
6 生产商:xx
产品系列:ThinkSystem
版本:07
产品名称:ThinkSystem SR650 -[7X06CTO1WW]-
UUID:66DEA72E-xx-11EA-xx-xx
序列号: J301N7C4
CPU类型:Intel Westmere Family
CPU型号:Intel(R) Xeon(R) Gold 5218 CPU @ 2.30GHz
7 存储利用率:1.48%
测试命令行
1 less /proc/cpuinfo |grep 'processor'|wc -l
2 less /proc/meminfo|grep Hugepagesize
3 less /proc/meminfo|grep HugePages_Free
4 free -lh
5 [root@edge-node2 ~]# ulimit -c #如果输出为0,就是关闭,为unlimited则是打开,我的是关闭的
0
[root@edge-node2 ~]# ulimit -c unlimited #临时打开
[root@edge-node2 ~]# ulimit -c
unlimited
[root@edge-node2 ~]# ulimit -c 0 #临时关闭
[root@edge-node2 ~]# ulimit -c
0
6 dmidecode |grep -A16 "System Information$" 查看主板信息
7 ceph df 查看集群容量状态
在Linux中,内存都是以页的形式划分的,默认情况下每页是4K,这就意味着如果物理内存很大,则映射表的条目将会非常多,会影响CPU的检索效率。因为内存大小是固定的,为了减少映射表的条目,可采取的办法只有增加页的尺寸
vim /etc/security/limits.conf
1. 物理内存 逻辑内存
服务器 8C16G为8核16G
查看CPU核数 more /proc/cpuinfo |grep "physical id"|grep "0"|wc -l
或者查看核数 more /proc/stat 第一排是cpu总计,下面是2个32核cpu的参数,故有64行数据
查看磁盘 free -g
参考博客https://blog.csdn.net/weixin_39628256/article/details/111551427
# cat /proc/cpuinfo 查看物理cpu
有多少physical id 就有多少个cpu,我们的服务器是8个
有多少个core id就有多少核 --8个物理内核
总核数(指的是总的CPU物理内核数) = 物理CPU个数 X 每个物理CPU的核数 = 4 * 16 = 64
总逻辑CPU数(processor) = 物理CPU个数(physical) X 每个物理CPU的核数(cpu cores的值) X 超线程数( 2-如果支持并开启ht)
= 4 *16 * 2=132
=cat /proc/cpuinfo |grep "processor"|wc -l
= cat /proc/cpuinfo |grep "physical id"|uniq|wc -l * cat /proc/cpuinfo | grep "cores" | uniq * 2
是否开启intel的超线程技术(HT)
如果有两个逻辑CPU具有相同的"core id",那么超线程是打开的。可以根据以下原则,来判断是否支持HT技术
如果"siblings"和"cpu cores"一致,则说明不支持超线程,或者超线程未打开
如果"siblings"是"cpu cores"的两倍,则说明支持超线程,并且超线程已打开
cat /proc/cpuinfo |grep "sibling"|uniq
执行结果:siblings : 32
cat /proc/cpuinfo | grep "cpu cores"|uniq
执行结果:cpu cores : 16
cat /proc/cpuinfo |grep "physical id"|grep "0"|wc -l 查看物理CPU个数
32
cat /proc/cpuinfo| grep "cpu cores"| uniq 查看每个物理CPU中core的个数(即核数)
cpu cores : 16
grep "physical id" /proc/cpuinfo|sort -u|wc -l
2
cat /proc/cpuinfo| grep "processor"| wc -l 查看逻辑CPU个数 逻辑CPU内核
64
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 查看CPU型号
64 Intel(R) Xeon(R) Gold 5218 CPU @ 2.30GHz
cat /proc/cpuinfo| grep "cpu cores"| uniq 查看每个物理CPU中core的个数(即核数)
cpu cores : 16
cat /proc/cpuinfo |grep MHz|uniq 查看CPU的主频
cpu MHz : 999.995
cpu MHz : 2276.509
cpu MHz : 1000.007
cpu MHz : 1000.004
查看Linux上存在的处理器数量的最简单和最短的方法,因为它是coreutils 的一部分而被广泛扩展
lscpu | grep 'CPU(s)'
查看cpu参数的命令
lscpu
[root@edge-node1 ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 64 逻辑CPU个数
On-line CPU(s) list: 0-63
Thread(s) per core: 2 每核超线程数
Core(s) per socket: 16 每核CPU数
Socket(s): 2 物理CPU个数
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 85
Model name: Intel(R) Xeon(R) Gold 5218 CPU @ 2.30GHz
Stepping: 7
CPU MHz: 1000.003
BogoMIPS: 4600.00
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 1024K
L3 cache: 22528K
NUMA node0 CPU(s): 0-15,32-47
NUMA node1 CPU(s): 16-31,48-63
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi
待续。。。