본문 바로가기
IT/Linux

[리눅스 커널 이야기] 시스템 구성 정보 확인(uname, dmesg, dmidecode, df, free, lscpu, lspci, ethtool)

by 호도과자 2022. 7. 26.

1. 커널 정보 확인

1.1 uname

uname -a

-> 커널 버전 정보 확인 가능

 

1.2 dmesg

  • dmesg는 커널의 디버그 메세지로 커널이 부팅할 때 나오는 메시지와 운영 중에 발생하는 메시지를 볼 수 있게 하는 명령어
  • 커널이 메모리를 인식하는 과정, 하드웨어를 인식하고 드라이버를 올리는 과정, 부팅 시 적용된 커널 파라미터 등 확인 가능
dmesg | grep -i | kernel

  •  Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.10.0-1127.19.1.el7.x86_64 root=UUID=6cd50e51-cfc6-40b9-9ec5-f32fa2e4ff02 ro crashkernel=auto net.ifnames=0 console=tty0 console=ttyS0,115200
    • 커널이 부팅시에 사용한 커널 파라미터
    • crashkernel, net.ifnames, console
    • cat /proc/cmdline 명령어 통해 /proc 파일 시스템에서도 확인 가능
  • Memory: 966740k/1048552k available (7784k kernel code, 392k absent, 81420k reserved, 5958k data, 1980k init)
    • 부팅 시 커널이 인식하는 메모리 정보
    • 해당 로그에서 나오는 가용 메모리와 부팅 완료 후 free 명령어 에서 보이는 메모리 양이 다를 수 있음. 이는 부팅 과정에서 사용된 일부 메모리들이 부팅 완료후에 반환되기 때문

 

2. CPU 정보 확인

CPU 정보는 dmidecode 명령어를 통해 하드웨어 정보 확인 가능

  • bios, system, processor, memory 옵션 자주 사용
  • bios : bios 정보 확인
[centos@ping ~]$ sudo dmidecode -t bios
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.4 present.

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
	Vendor: Seabios /*BIOS 벤더사*/
	Version: 0.5.1
	Release Date: 01/01/2011
	Address: 0xE8000
	Runtime Size: 96 kB
	ROM Size: 64 kB
	Characteristics:
		BIOS characteristics not supported
		Targeted content distribution is supported
	BIOS Revision: 1.0

 

  • system: 장비사, 장비 모델명, 제조사 등 확인
[centos@ping-test1 ~]$ sudo dmidecode -t system
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.4 present.

Handle 0x0100, DMI type 1, 27 bytes
System Information
	Manufacturer: Fedora Project
	Product Name: OpenStack Nova
	Version: 17.23.0-1.el7
	Serial Number: 7b43caca-2bda-410b-93fa-82ad4ead733c
	UUID: 6c89a211-1608-4e2a-8ff2-85b461de245d
	Wake-up Type: Power Switch
	SKU Number: Not Specified
	Family: Virtual Machine

Handle 0x2000, DMI type 32, 11 bytes
System Boot Information
	Status: No errors detected
  • processor: cpu 장비 확인
[centos@ping-test1 ~]$ sudo dmidecode -t processor
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.4 present.

Handle 0x0401, DMI type 4, 32 bytes
Processor Information
	Socket Designation: CPU 1
	Type: Central Processor
	Family: Other
	Manufacturer: Bochs
	ID: E3 06 05 00 FF FB 8B 0F
	Version: Not Specified
	Voltage: Unknown
	External Clock: Unknown
	Max Speed: 2000 MHz
	Current Speed: 2000 MHz
	Status: Populated, Enabled
	Upgrade: Other
	L1 Cache Handle: Not Provided
	L2 Cache Handle: Not Provided
	L3 Cache Handle: Not Provided
  • cpu 정보는 하기 명령어로도 확인이 가능
# cat /cpu/info
# lscpu

 

 

3. 메모리 정보 확인

[centos@ping-test1 ~]$ sudo dmidecode -t memory
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.4 present.

Handle 0x1000, DMI type 16, 15 bytes
Physical Memory Array   /* 하나의 CPU 소켓에 함게 할당된 무릴 메모리의 그룹 */
	Location: Other
	Use: System Memory
	Error Correction Type: Multi-bit ECC
	Maximum Capacity: 1 GB
	Error Information Handle: Not Provided
	Number Of Devices: 1 /* 총 1개 꽂을 수 있음 */

Handle 0x1100, DMI type 17, 21 bytes
Memory Device  /* 실제 시스템에 꽂혀있는 메모리 */
	Array Handle: 0x1000
	Error Information Handle: 0x0000
	Total Width: 64 bits
	Data Width: 64 bits
	Size: 1024 MB
	Form Factor: DIMM
	Set: None
	Locator: DIMM 0
	Bank Locator: Not Specified
	Type: RAM
	Type Detail: None
  • Physical Memory Array: 하나의 CPU 소켓에 함께 할당된 물리 메모리 그룹
    • 최근 프로세스는 NUMA 를 이용해서 각각의 CPU가 사용할 수 있는 로컬 메모리 제공
  • Memory Device: 실제로 시스템에 꽂혀잇는 메모리
  • free 명령어 통해서도 메모리 정보 확인 가능

 

4. 디스크 정보 확인

[centos@ping-test1 ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        473M     0  473M   0% /dev
tmpfs           496M     0  496M   0% /dev/shm
tmpfs           496M  6.7M  489M   2% /run
tmpfs           496M     0  496M   0% /sys/fs/cgroup
/dev/vda1        20G  1.5G   19G   8% /
tmpfs           100M     0  100M   0% /run/user/1000
  • 1개의 파티션 존재
  • / 에 마운트 되어 있음
  • /dev/vda : 가상 서버에서 사용하는 디스크 타입, XEN, KVM과 같이 하이퍼바이저 위에서 동작중인 서버

시스템이 디스크와 통신하기 위해 컨트롤러 라는 부품이 존재하는데 이 대 대표적으로 IDE 타입과 SCSI 타입이 있음

  • hda : IDE 타입 (개인용 컴퓨터를 위한 방식)
  • sda : SCSI 타입 (서버용 컴퓨터를 위한 타입, 더 많은 장치를 연결할 수 있어 확장성 및 접근 속도 good), SATA, SAS 와 같은 일반적인 하드디스크
  • 대부분의 서버에는 raid 컨트롤러가 잇어, 물리적 디스크의 정보까지 확인이 어려움. (/dev/vda도 논리적 볼륨이기 때문)
  • smarctl 명령어를 사용하면 물리적 디스크 정보까지 확인할 수 있으나, centos 기본 패키지에서는 존재하지 않나봄. 다음에 패키지 찾아서 테스트 해볼 예정

 

5. 네트워크 정보 확인

하기 명령어를 통해 네트워크 정보 확인 가능

lscpi
ethtool <이더넷 명>
[centos@ping-test1 ~]$ lspci | grep -i ether
00:03.0 Ethernet controller: Red Hat, Inc. Virtio network device
00:04.0 Ethernet controller: Red Hat, Inc. Virtio network device

보통 네트워크 카드의 제조사명과 모델명이 뜬다. 나는 클라우드 환경에서 테스트해서 위와 같이 나옴

 

[centos@ping-test1 ~]$ ethtool -g eth0
Ring parameters for eth0:
Pre-set maximums:
RX:		256
RX Mini:	0
RX Jumbo:	0
TX:		256
Current hardware settings:
RX:		256
RX Mini:	0
RX Jumbo:	0
TX:		256
  • Ring Buffer: 네트워크 카드의 버퍼 공간을 의미
  • ethtool에서 g 옵션을 사용하면 Ring Buffer의 크기 확인 가능
  • 네트워크 패킷 이동 과정
    • 1. 케이블을 통해 패킷 정보가 들어옴
    • 2. 네트워크 카드의 Ring Buffer 공간에 패킷 정보 복사
    • 3. 커널에 패킷 도착을 알림
    • 4. 패킷 정보를 다시 커널로 복사
  • 따라서 Ring Buffer의 크기 중요.  maximums == current 값 같도록 셋팅해야 함.
  • ethtool에서 -G 옵션을 통해 값 세팅 가능
  • ethtool 옵션
    • g : Ring Buffer 크기 확인
    • G : Ring Buffer 값 세팅
    • k : 네트워크 카드의 성능 최적화 옵션 확인 가능
    • K : 네트워크 카드의 성능 최적화 옵션 설정
    • i : 네트워크 카드의 커널 모듈 정보 표시
  • 네트워크 카드는 단순 패킷 전달 외에도 성능 관련 기능도 제공
  • tcp-offlad: MTU 이상의 크기를 가지는 패킷 분할 작업을 CPU가 아닌 네트워크 카드가 직접 수행 -> CPU 부하 줄임 -> 패킷 처리 성능 높임, 다만 패킷 유실 발생 가능성이 있어 off 권장

 

 


참조

강진우, DevOps와 SE를 위한 리눅스 커널 이야기, 인사이트, 2017, Chapter01