Skip to content

Latest commit

 

History

History
279 lines (230 loc) · 11.6 KB

system_information.md

File metadata and controls

279 lines (230 loc) · 11.6 KB

시스템 구성정보 확인하기

시스템의 문제점을 분석하고 확인하기 위해서는 먼저 현재 시스템 구성정보를 확인할 수 있어야 한다.

여기서 말하는 정보는 현재 사용중인 커널 버전과 부팅 시 사용한 커널, 그리고 하드웨어인 CPU 와 메모리는 어떤 것들을 사용하는지에 대한 정보들이다.

이 정보들을 바탕으로 특정 커널 버그특정 하드웨어 문제를 해결할 수 있다.

커널 정보 확인하기

uname -a 옵션을 통해서 커널 정보를 확인할 수 있다.

ubuntu@ip-172-31-12-59:~$ uname -a
Linux ip-172-31-12-59 5.11.0-1022-aws #23~20.04.1-Ubuntu SMP Mon Nov 15 14:03:19 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
  • 위 서버의 커널 버전은 Linux 5.11.0-1022-aws 버전이다. 그리고 x86 계열의 64 비트 운영 체제를 사용하고 있다.

dmesg | grep -i kernel | more  를 통해 커널이 부팅할 때 나오는 디버그 메시지로 운영 중에 발생하는 메시지를 볼 수 있다.****

그리고 커널이 하드웨어를 인식하고 드라이버를 올리는 과정과 부팅시 적용된 커널 파라미터를 확인하는게 가능하다.

ubuntu@ip-172-31-12-59:~$ sudo dmesg | grep -i kernel | more
[    0.000000] KERNEL supported cpus:
[    0.000000] Netfront and the Xen platform PCI driver have been compiled for this kernel: unplug emulated NICs.
[    0.000000] Blkfront and the Xen platform PCI driver have been compiled for this kernel: unplug emulated disks.
               in your root= kernel command line option
[    0.038067] Booting paravirtualized kernel on Xen HVM
[    0.038915] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-5.11.0-1022-aws root=PARTUUID=24ca9e81-01 ro console=tty1 console=ttyS0 nvme_core.io_timeout=4294967295 p
anic=-1 // (1) 
[    0.041653] Memory: 978736K/1048180K available (16393K kernel code, 3488K rwdata, 10372K rodata, 2688K init, 5968K bss, 69184K reserved, 0K cma-reserved) // (2)
[    0.041824] Kernel/User page tables isolation: enabled
[    0.882078] DMA: preallocated 128 KiB GFP_KERNEL pool for atomic allocations
[    0.885991] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[    0.889978] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    2.205409] Loaded X.509 cert 'Build time autogenerated kernel key: ecb0788dc66cd3f3e8014485463fe429aa2b1eba'
[    2.220262] Loaded X.509 cert 'Canonical Ltd. Kernel Module Signing: 88f752e560a1e0737e31163a466ad7b70a850c19'
[    2.373456] Freeing unused kernel image (initmem) memory: 2688K
[    2.381969] Write protecting the kernel read-only data: 30720k
[    2.386692] Freeing unused kernel image (text/rodata gap) memory: 2036K
[    2.391819] Freeing unused kernel image (rodata/data gap) memory: 1916K
[    3.307520] systemd[1]: Listening on udev Kernel Socket.
[    3.346216] systemd[1]: Mounting Kernel Debug File System...
[    3.545140] systemd[1]: Mounting Kernel Trace File System...
[    3.611301] systemd[1]: Starting Create list of static device nodes for the current kernel...
[    3.701278] systemd[1]: Starting Load Kernel Module drm...
[    3.793261] systemd[1]: Starting Load Kernel Modules...
[22531.000664] audit: type=1400 audit(1646338108.352:40): apparmor="STATUS" operation="profile_replace" info="same as current profile, skipping" profile="unconfined"
name="snap.lxd.check-kernel" pid=23760 comm="apparmor_parser"
[22554.722873] audit: type=1400 audit(1646338132.073:72): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="snap.lxd.check-kernel" pid=24330 co
mm="apparmor_parser"
  • (1) 에서 부팅 시에 사용한 커널 파라미터를 볼 수 있다.
  • (2) 에서는 부팅 할 때 커널이 인식하는 메모리 정보를 볼 수 있고 물리 메모리와 사용 가능한 메모리 등을 볼 수 있다.

CPU 정보 확인하기

리눅스에서는 dmidecode 를 통해서 하드웨어 정보를 확인할 수 있다. dmidecode 만을 이용하면 너무 많은 정보가 출력되므로 키워드와 함께 사용할 것이 권장된다.

먼저 BIOS 를 살펴보는 명령어다.

dmidecode -t bios 명령어를 통해서 bios 정보를 볼 수 있다. 주로 특정 BIOS 버전에 문제가 있다는 보고를 보고서 확인할 때 사용한다.

ubuntu@ip-172-31-12-59:~$ sudo 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: Xen
	Version: 4.11.amazon
	Release Date: 08/24/2006
	Address: 0xE8000
	Runtime Size: 96 kB
	ROM Size: 64 kB
	Characteristics:
		PCI is supported
		EDD is supported
		Targeted content distribution is supported
	BIOS Revision: 4.11
  • 이 BIOS 는 xen 에서 만들었고 버전은 4.11.amazon 이다.

다음은 system 키워드다.

dmidecode -t system 명령을 통해 주로 모델명을 확인하는 용도로 사용한다. 모델명을 통해서 해당 장비가 어느 정도의 성능을 내는지 확인할 수 있다.

ubuntu@ip-172-31-12-59:~$ sudo dmidecode -t system
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.7 present.

Handle 0x0100, DMI type 1, 27 bytes
System Information
	Manufacturer: Xen
	Product Name: HVM domU
	Version: 4.11.amazon
	Serial Number: ec28691a-0746-fbe7-e8c5-f8a4125a824e
	UUID: ec28691a-0746-fbe7-e8c5-f8a4125a824e
	Wake-up Type: Power Switch
	SKU Number: Not Specified
	Family: Not Specified

Handle 0x2000, DMI type 32, 11 bytes
System Boot Information
	Status: No errors detected
  • 이 제품의 모델은 Xen 에서 만든 HVM domU 이다.

다음은 processor 키워드다.

dmidecode -t processor 명령을 통해서 장비의 CPU 정보를 확인하는게 가능하다.

ubuntu@ip-172-31-12-59:~$ sudo dmidecode -t processor
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.7 present.

Handle 0x0401, DMI type 4, 35 bytes
Processor Information
	Socket Designation: CPU 1
	Type: Central Processor
	Family: Other
	Manufacturer: Intel
	ID: F2 06 03 00 FF FB 8B 17
	Version: Not Specified
	Voltage: Unknown
	External Clock: Unknown
	Max Speed: 2400 MHz
	Current Speed: 2400 MHz
	Status: Populated, Enabled
	Upgrade: Other
	L1 Cache Handle: Not Provided
	L2 Cache Handle: Not Provided
	L3 Cache Handle: Not Provided
	Serial Number: Not Specified
	Asset Tag: Not Specified
	Part Number: Not Specified
  • 여기선 하나의 소켓이 있고 코어는 하나다.

다음 명령어를 통해서도 확인이 가능하다. /proc/cpuinfo

ubuntu@ip-172-31-12-59:~$ cat /proc/cpuinfo
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 63
model name	: Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz
stepping	: 2
microcode	: 0x46
cpu MHz		: 2399.971
cache size	: 30720 KB
physical id	: 0
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
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 cpuid tsc_known_freq 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 cpuid_fault invpcid_single pti fsgsbase bmi1 avx2 smep bmi2 erms invpcid xsaveopt
bugs		: cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
bogomips	: 4800.04
clflush size	: 64
cache_alignment	: 64
address sizes	: 46 bits physical, 48 bits virtual
power management:

그리고 lscpu 명령을 통해서도 조회가 가능한데 이 경우에는 NUMA 아키텍처와 관련된 내용까지도 알 수 있다.

메모리 정보 확인하기

dmidecode 에서 memory 키워드로 메모리 정보를 확인할 수 있다.

ubuntu@ip-172-31-12-59:~$ sudo dmidecode -t memory
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.7 present.

Handle 0x1000, DMI type 16, 19 bytes
Physical Memory Array
	Location: Other
	Use: System Memory
	Error Correction Type: Multi-bit ECC
	Maximum Capacity: 1 GB
	Error Information Handle: Not Provided
	Number Of Devices: 1

Handle 0x1100, DMI type 17, 34 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
	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 는 NUMA 아키텍처에 따라서 하나의 CPU 소켓에 할당된 로컬 메모리를 말한다. 그리고 Memory Device 는 시스템에 꽂혀있는 메모리들을 말하고. 여기서는 하나의 소켓과 하나의 메모리가 꽂혀져 있어서 Physical Memory Array 와 Memory Device 가 여러개 나오진 않는다.

디스크 정보 확인하기

df -h 명령을 통해서 디스크 정보를 확인하는게 가능하다.

ubuntu@ip-172-31-12-59:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        30G  3.7G   26G  13% /
devtmpfs        479M     0  479M   0% /dev
tmpfs           485M     0  485M   0% /dev/shm
tmpfs            97M  932K   96M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           485M     0  485M   0% /sys/fs/cgroup
/dev/loop0       25M   25M     0 100% /snap/amazon-ssm-agent/4046
/dev/loop1       56M   56M     0 100% /snap/core18/2253
/dev/loop3       68M   68M     0 100% /snap/lxd/21835
/dev/loop2       62M   62M     0 100% /snap/core20/1242
tmpfs            97M     0   97M   0% /run/user/1000
/dev/loop5       56M   56M     0 100% /snap/core18/2284
/dev/loop6       62M   62M     0 100% /snap/core20/1361
/dev/loop7       44M   44M     0 100% /snap/snapd/14978
/dev/loop8       27M   27M     0 100% /snap/amazon-ssm-agent/5163
/dev/loop9       68M   68M     0 100% /snap/lxd/22526
  • 여기서는 여러개의 파티션들이 마운트 되어 있는 것들을 볼 수 있다. 가장 대표적으로 /dev/root 파일 시스템으로 디스크가 네이밍 되어 있고 총 30G 를 저장할 수 있다고 한다. 그 중 3.7G 를 사용했고 26G 를 더 사용할 수 있다.
  • 여기서는 나오지 않지만 디스크의 Filesystem 영역이 각각 다를 수 있는데 /dev/sda ,/dev/hda/dev/vda 등 다양할 수 있다.

네트워크 정보 확인하기

ethtool eth0 명령을 통해서 연결 상태를 확인하는게 가능하다.

ubuntu@ip-172-31-12-59:~$ ethtool eth0
Settings for eth0:
Cannot get wake-on-lan settings: Operation not permitted
	Link detected: yes
  • 네트워크 연결이 정상적으로 되어 있다는 걸 확인할 수 있다.
  • 원래는 speed 프로퍼티를 통해서 현재 연결되어있는 네트워크 속도를 알 수 있고 네트워크가 보낼 수 있는 속도는 Supoorted link modes  와 Advertised link modes  를 통해서 볼 수 있다.

그리고 ethtool -g eth0 명령을 통해 Ring Buffer 의 크기를 확인할 수 있고 최적화를 할 수 있다.

Ring Buffer 는 케이블을 통해서 들어온 패킷이 가장 먼저 복사되는 곳으로 네트워크 카드에 있는 버퍼 공간이다.

이 영역이 작다면 네트워크 성능 저하를 일으킬 수 있다. ethtool -G eth0 {영역} {값} (ethtool -G eth0 rx 255) 이런 식으로 G 옵션을 통해서 값을 설정할 수 있다. ethtool -i eth0 옵션을 통해 네트워크 카드가 어떤 커널 드라이버를 사용하는지, 버전이 몇인지를 알 수 있다.