Study/Linux

[Linux]시스템 구성 정보 확인

seomj 2024. 4. 3. 20:16

시스템 문제를 파악하기 위해서는 시스템 구성 정보 확인이 우선이다. 시스템의 정보를 알아야 시스템을 분석할 수 있다.


커널 정보 확인하기

uname -a

user1@worker1:~/Desktop$ uname -a
Linux worker1 5.15.0-88-generic #98~20.04.1-Ubuntu SMP Mon Oct 9 16:43:45 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

커널 버전: 5.15.0-88-generic

 

dmesg

: 커널 디버그 메시지를 출력한다.

user1@worker1:~/Desktop$ dmesg | grep -i kernel | more
[    0.000000] KERNEL supported cpus:
[    0.020813] Booting paravirtualized kernel on VMware hypervisor
[    0.105081] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-5.15.0-88-generic root=UUID=ed7d22c
d-423e-49bc-9150-c80dc25b1f3e ro find_preseed=/preseed.cfg auto noprompt priority=critical local
e=en_US quiet
[    0.105179] Unknown kernel command line parameters "auto noprompt BOOT_IMAGE=/boot/vmlinuz-5.
15.0-88-generic find_preseed=/preseed.cfg priority=critical locale=en_US", will be passed to use
r space.
[    0.129935] Memory: 1892860K/2096628K available (16393K kernel code, 4388K rwdata, 10848K rod
ata, 3356K init, 18724K bss, 203508K reserved, 0K cma-reserved)
[    0.131695] Kernel/User page tables isolation: enabled
...

Kernel command line: 커널 부팅 시 사용한 파라미터를 의미한다.

/proc 파일 시스템에서도 확인할 수 있다.

user1@worker1:~/Desktop$ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-5.15.0-88-generic root=UUID=ed7d22cd-423e-49bc-9150-c80dc25b1f3e ro find_preseed=/preseed.cfg auto noprompt priority=critical locale=en_US quiet

BOOT_IMAGE, root, find_pressed, priority, locale까지 총 5개의 파라미터가 적용

 

책에서는 intel_idle.max_cstate, crashkernel, biosdevname, console까지 총 4개의 파라미터가 적용

더보기

intel_idle.max_castate

  • 이는 특별한 작업이 없는 Idle 상태가 되면 일부 CPU 코어를 잠자기 모드로 전환한다.하드웨어 BIOS 설정에서 이를 꺼도 소프트웨어 모듈인 intel_idle에 의해 켜지는 경우가 있다.
  • 이 옵션은 부팅 시 하드웨어 BIOS 설정에서 설정한다.
  • CPU에는 C-state라는 옵션이 있다.

 

Memory: 부팅 시에 커널이 인식하는 메모리 정보이다.

물리적인 메모리 크기와 실제 사용 가능한 메모리의 크기를 확인할 수 있다.

가용 메모리 크기는 부팅 전과 후에 차이가 있는데, 이는 부팅 과정에서 사용된 일부 메모리가 반환되기 때문이다.

 

현재 사용 중인 커널의 컴파일 옵션은 아래와 같이 확인할 수 있다.

user1@worker1:~/Desktop$ cat /boot/config-5.15.0-88-generic | more
#
# Automatically generated file; DO NOT EDIT.
# Linux/x86 5.15.0-88-generic Kernel Configuration
#
CONFIG_CC_VERSION_TEXT="gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
CONFIG_CC_IS_GCC=y
CONFIG_GCC_VERSION=90400
CONFIG_CLANG_VERSION=0
CONFIG_AS_IS_GNU=y
CONFIG_AS_VERSION=23400
CONFIG_LD_IS_BFD=y
CONFIG_LD_VERSION=23400
CONFIG_LLD_VERSION=0
...

 

CPU 정보 확인하기

dmidecode를 통해 하드웨어 정보 확인

bios

root@worker1:~# dmidecode -t bios
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.7 present.

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
	Vendor: Phoenix Technologies LTD
	Version: 6.00
	Release Date: 11/12/2020
	Address: 0xEA480
	Runtime Size: 88960 bytes
	ROM Size: 64 kB
	Characteristics:
		ISA is supported
		PCI is supported
		...
		Targeted content distribution is supported
	BIOS Revision: 4.6
	Firmware Revision: 0.0

BIOS 버전에 문제가 있다는 보고가 있고, 내가 사용하는 버전이 이 버전에 해당하는지를 확인할 때 주로 사용한다.

 

system

root@worker1:~# dmidecode -t system
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.7 present.

Handle 0x0001, DMI type 1, 27 bytes
System Information
	Manufacturer: VMware, Inc.
	Product Name: VMware Virtual Platform
	Version: None
	Serial Number: VMware-56 4d 4f 07 a6 a7 d6 94-1c 96 76 de 43 64 15 9a
	UUID: 074f4d56-a7a6-94d6-1c96-76de4364159a
	Wake-up Type: Power Switch
	SKU Number: Not Specified
	Family: Not Specified

Handle 0x01A1, DMI type 15, 29 bytes
System Event Log
	Area Length: 16 bytes
	Header Start Offset: 0x0000
	Header Length: 16 bytes
	Data Start Offset: 0x0010
	Access Method: General-purpose non-volatile data functions
	Access Address: 0x0000
	Status: Invalid, Full
	Change Token: 0x00000036
	Header Format: Type 1
	Supported Log Type Descriptors: 3
	Descriptor 1: POST error
	Data Format 1: POST results bitmap
	Descriptor 2: Single-bit ECC memory error
	Data Format 2: Multiple-event
	Descriptor 3: Multi-bit ECC memory error
	Data Format 3: Multiple-event

Handle 0x0265, DMI type 23, 13 bytes
System Reset
	Status: Enabled
	Watchdog Timer: Present
	Boot Option: Do Not Reboot
	Boot Option On Limit: Do Not Reboot
	Reset Count: Unknown
	Reset Limit: Unknown
	Timer Interval: Unknown
	Timeout: Unknown

Handle 0x0268, DMI type 32, 20 bytes
System Boot Information
	Status: No errors detected

장비는 VMware, Inc.에서 만든 VMware Virtual Platform 모델이다.

(아무래도 VM ware에서 test를 해서 그런거 같다..)

 

processor

: 장비의 CPU 정보를 확인할 수 있다.

root@worker1:~# dmidecode -t processor
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.7 present.

Handle 0x0004, DMI type 4, 42 bytes
Processor Information
	Socket Designation: CPU #000
	Type: Central Processor
	Family: Unknown
	Manufacturer: GenuineIntel
	ID: C1 06 08 00 FF FB 8B 1F
	Version: 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz
	Voltage: 3.3 V
	External Clock: Unknown
	Max Speed: 30000 MHz
	Current Speed: 2800 MHz
	Status: Populated, Enabled
	Upgrade: ZIF Socket
	L1 Cache Handle: 0x0094
	L2 Cache Handle: 0x0114
	L3 Cache Handle: Not Provided
	Serial Number: Not Specified
	Asset Tag: Not Specified
	Part Number: Not Specified
	Core Count: 2
	Core Enabled: 2
	Characteristics:
		64-bit capable
		Multi-Core
		Execute Protection

Handle 0x0004, DMI type 4, 42 bytes
Processor Information
	Socket Designation: CPU #001
	Type: Central Processor
	Family: Unknown
	Manufacturer: GenuineIntel
	ID: C1 06 00 00 FF FB 8B 1F
	Version: 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz
	Voltage: 3.3 V
	External Clock: Unknown
	Max Speed: 30000 MHz
	Current Speed: 2800 MHz
	Status: Populated, Enabled
	Upgrade: ZIF Socket
	L1 Cache Handle: 0x0094
	L2 Cache Handle: 0x0114
	L3 Cache Handle: Not Provided
	Serial Number: Not Specified
	Asset Tag: Not Specified
	Part Number: Not Specified
	Core Count: 2
	Core Enabled: 2
	Characteristics:
		64-bit capable
		Multi-Core
		Execute Protection
...

소켓: 물리적인 cpu 개수

코어: cpu 안에 몇 개의 컴퓨팅 코어가 있는지

 

아래와 같은 방법으로도 CPU 정보를 확인할 수 있다.

/proc/cpuinfo

root@worker1:~# cat /proc/cpuinfo
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 140
model name	: 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz
stepping	: 1
microcode	: 0xffffffff
cpu MHz		: 2803.212
cache size	: 12288 KB
physical id	: 0
siblings	: 2
core id		: 0
cpu cores	: 2
apicid		: 0
initial apicid	: 0
...

lscpu

root@worker1:~# lscpu
Architecture:                       x86_64
CPU op-mode(s):                     32-bit, 64-bit
Byte Order:                         Little Endian
Address sizes:                      45 bits physical, 48 bits virtual
CPU(s):                             2
On-line CPU(s) list:                0,1
Thread(s) per core:                 1
Core(s) per socket:                 2
Socket(s):                          1
NUMA node(s):                       1
Vendor ID:                          GenuineIntel
CPU family:                         6
Model:                              140
Model name:                         11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz
Stepping:                           1
CPU MHz:                            2803.212
BogoMIPS:                           5606.42
Hypervisor vendor:                  VMware
Virtualization type:                full
L1d cache:                          96 KiB
L1i cache:                          64 KiB
L2 cache:                           2.5 MiB
L3 cache:                           12 MiB
NUMA node0 CPU(s):                  0,1
...

 

메모리 정보 확인하기

dmidecode 에서 memroy 키워드 사용

root@worker1:~# dmidecode -t memory
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.7 present.
...
Handle 0x01A2, DMI type 16, 23 bytes
Physical Memory Array
	Location: System Board Or Motherboard
	Use: System Memory
	Error Correction Type: None
	Maximum Capacity: 3 GB
	Error Information Handle: Not Provided
	Number Of Devices: 64

Handle 0x01A3, DMI type 17, 34 bytes
Memory Device
	Array Handle: 0x01A2
	Error Information Handle: No Error
	Total Width: 32 bits
	Data Width: 32 bits
	Size: 2048 MB
	Form Factor: DIMM
	Set: None
	Locator: RAM slot #0
	Bank Locator: RAM slot #0
	Type: DRAM
	Type Detail: EDO
	Speed: Unknown
	Manufacturer: Not Specified
	Serial Number: Not Specified
	Asset Tag: Not Specified
	Part Number: Not Specified
	Rank: Unknown
	Configured Memory Speed: Unknown

Handle 0x01A4, DMI type 17, 34 bytes
Memory Device
	Array Handle: 0x01A2
	Error Information Handle: No Error
	Total Width: Unknown
	Data Width: Unknown
	Size: No Module Installed
	Form Factor: DIMM
	Set: None
	Locator: RAM slot #1
	Bank Locator: RAM slot #1
	Type: DRAM
	Type Detail: Unknown
	Speed: Unknown
	Manufacturer: Not Specified
	Serial Number: Not Specified
	Asset Tag: Not Specified
	Part Number: Not Specified
	Rank: Unknown
	Configured Memory Speed: Unknown
...

physical memory array와 memory device가 존재한다.

physical memory array: memeory device의 그룹, 하나의 CPU 소켓에 함께 할당된 물리 메모리의 그룹을 의미한다.

memory device: 실제로 시스템에 꽂혀 있는 메모리를 의미한다.

 

책과는 반대로 첫 번째 memory device에는 2048MB 메모리가 꽂혀 있으며, 두 번째 memory device에는 메모리가 꽂혀 있지 않다(No module Installed).

 

free와 비교

root@worker1:~# dmidecode -t memory | grep -i size:
	...
	Size: 2048 MB
	Size: No Module Installed
	...
	
root@worker1:~# free -m
              total        used        free      shared  buff/cache   available
Mem:           1928         990          86           1         851         774
Swap:             0           0           0

free 명령을 통해 확인한 전체 메모리 크기와 다르다면 시스템의 메모리 인식에 문제가 있다는 것이다.

 

디스크 정보 확인하기

파티션과 디스크 타입 정보 확인

더보기
파티션
컴퓨팅에서 파티션은 물리적 디스크의 논리적 분할입니다. 이는 본질적으로 하드 드라이브나 기타 저장 장치의 저장 공간을 구성하고 관리하는 방법입니다. 파티션은 다양한 운영체제 분리, 데이터 정리, 성능 향상 등 다양한 목적으로 사용됩니다.
C: 와 D: 로 나누는 것도 파티션을 나누는 것이다.

df -h

root@worker1:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
...
/dev/sda5        20G   12G  6.9G  63% /
...
/dev/sda1       511M  4.0K  511M   1% /boot/efi
...

총 2개의 파티션이 있으며 각각의 파티션은 /, /boot/efi에 마운트되어 있다. 디스크는 /dev/sda라는 이름으로 시스템에 네이밍되어 있다.

 

컨트롤러: 시스템과 디스크 통신 중개자 역할

IDE 타입과 SCSI 타입이 대표적이다.

 

sda: SCSI 방식의 디스크, SATA, SAS와 같은 일반적인 하드 디스크

hda: IDE 방식의 디스크

vda: 가상 서버에서 흔히 볼 수 있는 디스크 타입으로, XEN, KVM와 같이 하이퍼바이저 위에서 동작 중인 서버들에서 주로 볼 수 있다.

 

디스크의 물리적 정보 확인

smartctl을 사용

root@worker1:~# smartctl -a /dev/sda
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.15.0-88-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Vendor:               VMware,
Product:              VMware Virtual S
Revision:             1.0
User Capacity:        21,474,836,480 bytes [21.4 GB]
Logical block size:   512 bytes
Rotation Rate:        Solid State Device
Device type:          disk
Local Time is:        Mon Apr  1 06:55:46 2024 PDT
SMART support is:     Unavailable - device lacks SMART capability.

=== START OF READ SMART DATA SECTION ===
Current Drive Temperature:     0 C
Drive Trip Temperature:        0 C

Error Counter logging not supported

Device does not support Self Test logging

내가 테스트한 환경에서는 꽤나 자세한 정보를 확인할 수 있다.

 

책에서 설명해준 경우에는 RAID 컨트롤러를 통해 만들어진 Logical Volume이라 실제 물리적인 디스크의 정보까지 확인할 수 없었다.

하지만 smartctl -a /dev/sda -d cciss,0 을 통해 상세한 정보를 확인할 수 있다. smartctl은 RAID 컨트롤러의 드라이버에 따라 -d 옵션 뒤에 추가 옵션을 통해 디스크의 정보를 볼 수 있다. lsmod 명령을 통해 드라이버를 확인할 수 있다. cciss는 HP에서 제공하는 RAID 컨트롤러에서 사용하는 드라이버이다. 뒤의 숫자는 디스크 베이를 의미한다.

더보기

디스크베이

드라이브 베이라고도 하는 디스크 베이는 하드 디스크 드라이브(HDD) 또는 솔리드 스테이트 드라이브(SSD)와 같은 저장 장치를 고정하고 연결하도록 설계된 컴퓨터 또는 서버 섀시의 물리적 슬롯 또는 인클로저입니다

 

네트워크 정보 확인하기

네트워크 카드 정보 확인

root@worker1:~# lspci | grep -i ether
02:00.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)

이 정보가 필요한 이유

  • 특정 모델에서 버그나 이슈 등이 보고될 때
  • 커널 드라이버 업데이트할 때

연결 상태 확인

root@worker1:~# ethtool ens32
Settings for ens32:
	Supported ports: [ TP ]
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Full 
	Supported pause frame use: No
	Supports auto-negotiation: Yes
	Supported FEC modes: Not reported
	Advertised link modes:  10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Full 
	Advertised pause frame use: No
	Advertised auto-negotiation: Yes
	Advertised FEC modes: Not reported
	Speed: 1000Mb/s
	Duplex: Full
	Port: Twisted Pair
	PHYAD: 0
	Transceiver: internal
	Auto-negotiation: on
	MDI-X: off (auto)
	Supports Wake-on: d
	Wake-on: d
	Current message level: 0x00000007 (7)
			       drv probe link
	Link detected: yes

해당 네트워크 카드가 어느 정도의 속도까지 지원 가능한지, 현재 연결되어 있는 속도는 얼마인지, 네트워크 연결은 정상인지를 확인할 수 있다.

Speed: 1000Mb/s 가 현재 속도를 의미하며, 서버가 속도가 나오지 않는다면 이를 살펴보아야 한다.

 

Ring Buffer 크기 확인

root@worker1:~# ethtool -g ens32
Ring parameters for ens32:
Pre-set maximums:
RX:		4096
RX Mini:	0
RX Jumbo:	0
TX:		4096
Current hardware settings:
RX:		256
RX Mini:	0
RX Jumbo:	0
TX:		256

Ring Buffer: 네트워크 카드의 버퍼 공간

케이블을 통해서 패킷 정보가 들어오면 Ring Buffer에 복사된다. 그 후 커널에 패킷의 도착을 알리고 패킷의 정보를 다시 커널로 복사한다. 그렇기 때문에 Ring Buffer의 크기가 작다면 네트워크 성능 저하를 일으킬 수 있다.

 

-G 옵션을 통해 값을 설정할 수 있다.

root@worker1:~# ethtool -G ens32 rx 200
root@worker1:~# ethtool -g ens32
Ring parameters for ens32:
Pre-set maximums:
RX:		4096
RX Mini:	0
RX Jumbo:	0
TX:		4096
Current hardware settings:
RX:		200
RX Mini:	0
RX Jumbo:	0
TX:		256

 

성능 최적화 옵션

root@worker1:~# ethtool -k ens32
Features for ens32:
rx-checksumming: off
tx-checksumming: on
	tx-checksum-ipv4: off [fixed]
	tx-checksum-ip-generic: on
	tx-checksum-ipv6: off [fixed]
	tx-checksum-fcoe-crc: off [fixed]
	tx-checksum-sctp: off [fixed]
scatter-gather: on
	tx-scatter-gather: on
	tx-scatter-gather-fraglist: off [fixed]
tcp-segmentation-offload: on
	tx-tcp-segmentation: on
	tx-tcp-ecn-segmentation: off [fixed]
	tx-tcp-mangleid-segmentation: off
	tx-tcp6-segmentation: off [fixed]
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off [fixed]
...

generic-segmentation-offload: on

tcp-offload 기능: MTU 이상의 크기를 가지는 패킷의 분할 작업을 CPU가 아닌 네트워크 카드가 직접 함으로써 CPU의 부담을 줄이고 패킷 처리 성능을 높이는 기능

 

커널 모듈 정보 표시

root@worker1:~# ethtool -i ens32
driver: e1000
version: 5.15.0-88-generic
firmware-version: 
expansion-rom-version: 
bus-info: 0000:02:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no

특정 커널 드라이버의 버전에서 문제가 생겼을 때 내가 사용하는 버전과 비교할 때 필요하다.

 

 

 

<참고>

DevOps와 SE를 위한 리눅스 커널 이야기