理解Linux硬件资源
一、硬件资源种类
在调优系统的性能之前,理解系统的理论能力是很重要的。理解这一点的第一步是开发要调优的系统的硬件配置文件
1、CPU
中央处理器处理由软件提供的机器指令。核心集成到一个集成电路芯片中,称为芯片多处理器,或在一个芯片封装中集成多个芯片。每个服务器系统都有一个或多个cpu,每个cpu都位于主板插座上。尽管拥有更多的cpu可以提供更多的处理能力,但是软件必须被编写为多线程的,以便能够同时使用多个cpu来有效地利用额外的处理能力。
2、内存
易失性计算机存储器在使用时临时存储程序或程序数据。拥有更多可用内存可以降低系统从存储设备读取数据的频率,因为物理内存可以在未使用内存可用时用作存储设备缓存。在内存压力下,内核必须在减少缓存或移动对象来交换区域之间做出选择。虚拟内存由物理内存和交换设备上的可用空间组成,交换设备通常是磁盘设备。
3、存储
非易失性存储设备将程序和数据保存在物理记录介质上。硬盘驱动器(HDD)使用旋转磁碟和多个读写磁头,将数据移动到旋转磁碟上。更新的固态硬盘(SSD)将数据保存在集成电路组件上,类似于内存,但可以持久保存。SSD的性能属性通常与架构相匹配,架构描述了每个单元存储的比特数。单级单元(SLC)只有1位,通常是最可靠和最快的,但也是最昂贵的。多电平(MLC)和三电平(TLC)电池分别为2位或3位,可靠性略有降低,成本也较低。消费者市场的最新驱动器是四电平(QLC), 持有4位。与hdd相比,SSD的可靠性和速度要高得多,但SSD的每千兆字节成本仍然较高,因此,电池质量仍然重要
4、网络
计算机系统通过电缆介质的连接共享资源。以太网和接口卡通常使用网络交换机连接。常见的连接容量是1Gbps和10gbps,通常有40gbps和100gbps段在企业数据中心。400gbps以太网于2017年首次演示,并已准备好用于数据中心部署。Infiniband(无限带宽技术)是另一种常见的连接技术,具有很高的吞吐量和低延迟,用于高性能计算集群互连。单个InfiniBand链路可以提供高达250 Gbps的每个方向并发。InfiniBand链路可以聚合到当前发布的最大16条,总吞吐量为4Tbps。
5、连接线
外部组件通过本地计算机总线与系统相连。有许多不同的总线类型可用,具有诸如功能使用的优化和带宽需求等特性。外围组件互连快速总线(PCle)是计算机内部连接设备最常用的标准接口。

二、查看内核消息
最简单和最直接的硬件信息来源是Linux内核,它充当所有硬件访问的中介。内核通过/proc文件系统、/sys文件系统以及内核消息和事件公开信息结构。内核消息被写入一个被称为dmesg缓冲区的预先分配的环形缓冲区。环缓冲区是一种循环缓冲区,其中数据溢出只是在缓冲区顶部再次开始。随着时间的推移,最近的消息将填充缓冲区并覆盖原始消息,但缓冲区的大小永远不会增长检查dmesg缓冲区有三个常见的动机:检查在引导时检测到什么硬件当硬件被附加或检测时,观察由驱动程序打印的消息观察发生的警告或错误消息条件。使用dmesg命令或带-k选项的journalctl命令显示环形缓冲区消息。日志服务可以配置为持久存储,并且比/var/1og/dmesg.的使用更受欢迎通过imjournal rsyslog插件,可以在systemdjournal和/var/log/messages中捕获内核环缓冲区。随着在RHEL 7中引入系统日志,/var/log/dmesg文件被认为是可选的,在RHEL8中不再自动创建。可以通过重新创建并启用/etc/systemd/system/dmesg.来恢复该文件服务服务。dmesg命令的前2行显示内核版本和引导加载程序传递给内核的命令行启动选项。在需要诊断系统行为时,了解系统初始化期间使用了哪些命令行选项是很有用的。[student@workstation ~]$ dmesg |head-2[ 0.000000] Linux version 4.18.0-80.1.2.el8_0.x86_64(mockbuild@x86-vm-09.build.eng.bos.redhat.com)(gcc version 8.2.1 20180905 (Red Hat 8.2.1-3)(GCC))#1 SMP Sun Apr 28 09:21:22 UTC 2019[ 0.000000] Command line: BOOT_IMAGE=(hd0,msdos1)/boot/vmlinuz-4.18.0-80.1.2.el8_0.x86_64 root=UUID=884f47c9-a69d-4c5b-915d-6b7c9c74c923 roconsole=tty0 console=ttyS0,115200n8 no_timer_check crashkernel=auto
三、查看CPU信息
[root@centos79-68-105 ~]# lscpu Architecture:x86_64 CPU op-mode(s):32-bit, 64-bit Byte Order:Little Endian CPU(s):8 On-line CPU(s)list:0-7 Thread(s)per core:1 Core(s)per socket:1 Socket(s):8 NUMA node(s):1 Vendor ID:AuthenticAMD CPU family:25 Model:17 Model name:AMD EPYC 9654 96-Core Processor Stepping:1 CPU MHz:2394.468 BogoMIPS:4788.93 Hypervisor vendor:VMware Virtualization type:full L1d cache:32K L1i cache:32K L2 cache:1024K L3 cache:32768K NUMA node0 CPU(s):0-7 Flags:fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc art rep_good nopl tsc_reliable nonstop_tsc extd_apicid eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext invpcid_single retpoline_amd ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 clzero arat avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq overflow_recov succor flush_l1d
四、使用dmidecode命令查看信息
[root@centos79-68-105 ~]# dmidecode |less

五、lspci和lsusb查看外接硬件信息
lspci

六、搜集系统组件信息
[root@centos79-68-105 ~]# yum -y install hwloc [root@centos79-68-105 ~]# lstopo-no-graphics

[root@centos79-68-105 ~]# lshw
