Check System Configuration

사용하고 있는 장치의 하드웨어 정보를 확인하는 것은 시스템에 장애가 생겼을 때 해볼 수 있는 기초적인 방법 중 하나이다.

Kernel

AWS Ubuntu 16.04 AMI (nano)에서 다음의 방법을 통해 커널 정보를 확인한다.

  • uname
  • dmesg

uname

시스템 정보를 출력하는 리눅스 명령어이다. OS, 커널, 호스트 정보 등을 조회해 볼 수 있다.

>> uname -a # 모든 정보를 한번에 조회한다.
Linux ip-172-31-17-125 4.4.0-1075-aws #85-Ubuntu SMP Thu Jan 17 17:15:12 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

dmesg

display message의 준말이다. 리눅스의 부팅 메세지와 로그를 보여준다. 그러므로 운영체제에 오류가 발생했을 때 로그를 조회해 문제를 살펴볼 수 있다.

>> 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.000000] Booting paravirtualized kernel on Xen HVM
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-1075-aws root=LABEL=cloudimg-rootfs ro console=tty1 console=ttyS0 nvme.io_timeou
t=4294967295 nvme_core.io_timeout=4294967295
[    0.000000] Memory: 482464K/523892K available (8425K kernel code, 1299K rwdata, 3888K rodata, 1468K init, 1264K bss, 41428K reserved, 0K cma-res
erved)
[    0.000000] Kernel/User page tables isolation: enabled
[    1.573957] Loaded X.509 cert 'Build time autogenerated kernel key: e5f25feb48d4eaa220921f041d7fb2b6fdd7bb19'
[    1.655740] Freeing unused kernel memory: 1468K
[    1.672064] Write protecting the kernel read-only data: 14336k
[    1.678773] Freeing unused kernel memory: 1804K
[    1.684149] Freeing unused kernel memory: 208K
[    4.408933] systemd[1]: Listening on udev Kernel Socket.
[    4.443478] systemd[1]: Starting Create list of required static device nodes for the current kernel...
[    4.478137] systemd[1]: Starting Load Kernel Modules...
[    4.520615] systemd[1]: Starting Remount Root and Kernel File Systems...
  • Kernel command line: ...를 통해 커널이 부팅 시에 사용한 커널 파라미터를 확인할 수 있다.
  • Memory: ...를 통해 부팅 시에 커널이 인식하는 메모리 정보를 확인할 수 있다.

이 외에 사용 중인 커널의 컴파일 옵션은 다음과 같이 확인한다.

>> cat /boot/config-`uname -r` | more
#
# Common config options automatically generated by splitconfig.pl
#
CONFIG_60XX_WDT=m
CONFIG_64BIT=y
CONFIG_6LOWPAN=m
CONFIG_6LOWPAN_NHC=m
CONFIG_6LOWPAN_NHC_DEST=m
CONFIG_6LOWPAN_NHC_FRAGMENT=m
CONFIG_6LOWPAN_NHC_HOP=m
CONFIG_6LOWPAN_NHC_IPV6=m
CONFIG_6LOWPAN_NHC_MOBILITY=m
CONFIG_6LOWPAN_NHC_ROUTING=m
CONFIG_6LOWPAN_NHC_UDP=m
CONFIG_6PACK=m
CONFIG_8139CP=m
CONFIG_8139TOO=m
CONFIG_8139TOO_8129=y
CONFIG_8139TOO_PIO=y
# CONFIG_8139TOO_TUNE_TWISTER is not set
# CONFIG_8139_OLD_RX_RESET is not set
CONFIG_842_COMPRESS=m
--More--

CPU

시스템의 하드웨어 정보, 물리적인 메모리의 구성 등을 확인해본다.

dmidecode

리눅스에서 하드웨어 정보를 확인할 수 있는 명령어이다.

>> sudo dmidecode -t processor
# dmidecode 3.0
Getting SMBIOS data from sysfs.
SMBIOS 2.7 present.

Handle 0x0401, DMI type 4, 26 bytes
Processor Information
	Socket Designation: CPU 1
	Type: Central Processor
	Family: Other
	Manufacturer: Intel
	ID: F2 06 03 00 FF FB 89 17
	Version: Not Specified
	Voltage: Unknown
	External Clock: Unknown
	Max Speed: 2400 MHz
	Current Speed: 2400 MHz
	Status: Populated, Enabled
	Upgrade: Other

type processor 명령어를 통해서 하드웨어에 탑재된 CPU의 정보를 조회했다.

nano 인스턴스를 사용했기 때문에 총 1개의 CPU 소켓이 있다는 것 외로는 확인이 안된다. 하지만 보통의 컴퓨터에서는 소켓에 할당된 코어와 쓰레드 수까지 볼 수 있다.

위 내용은 /proc의 정보를 확인하거나 lscpu 명령어를 통해서도 확인해볼 수 있다.

>> 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	: 0x41
cpu MHz		: 2400.058
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 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 invpcid_single kaiser fsgsbase bmi1 avx2 smep bmi2 erms invpcid xsaveopt
bugs		: cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf
bogomips	: 4800.11
clflush size	: 64
cache_alignment	: 64
address sizes	: 46 bits physical, 48 bits virtual
power management:
>>
>> lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                1
On-line CPU(s) list:   0
Thread(s) per core:    1
Core(s) per socket:    1
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 63
Model name:            Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz
Stepping:              2
CPU MHz:               2400.058
BogoMIPS:              4800.11
Hypervisor vendor:     Xen
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              30720K
NUMA node0 CPU(s):     0
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 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 invpcid_single kaiser fsgsbase bmi1 avx2 smep bmi2 erms invpcid xsaveopt

Memory

위에서 사용했던 dmidecode 명령어를 다시 사용해 메모리의 정보를 살펴본다.

>> sudo dmidecode -t memory
# dmidecode 3.0
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: 512 MB
	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: 512 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 Clock Speed: Unknown

Physical Memmory Array

  • 하나의 CPU 소켓에 함께 할당된 물리 메모리의 그룹을 의미한다.
  • 1개의 메모리를 꽂을 수 있다.
  • 최대로 꽂을 수 있는 양은 512MB이다.

Memory Device

  • 실제로 시스템에 꽂혀 있는 메모리를 의미한다.
  • 512MB의 메모리가 꽂혀 있다.

freecat /proc/meminfo 명령어를 통해 이 정보가 맞는지 확인해본다.

>> free -m
              total        used        free      shared  buff/cache   available
Mem:            486          47          43           1         394         403
Swap:             0           0           0
>>
>> cat /proc/meminfo
MemTotal:         498356 kB
MemFree:           44744 kB
MemAvailable:     412796 kB
Buffers:           29596 kB
Cached:           336604 kB
SwapCached:            0 kB
Active:           148060 kB
Inactive:         242348 kB
Active(anon):      27256 kB
Inactive(anon):     1392 kB
Active(file):     120804 kB
Inactive(file):   240956 kB
Unevictable:        3652 kB
Mlocked:            3652 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:         27884 kB
Mapped:            46456 kB
Shmem:              2020 kB
Slab:              38280 kB
SReclaimable:      19188 kB
SUnreclaim:        19092 kB
KernelStack:        2304 kB
PageTables:         2564 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      249176 kB
Committed_AS:     278560 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       43008 kB
DirectMap2M:      481280 kB

Disk

df

>> df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            236M     0  236M   0% /dev
tmpfs            49M  2.0M   47M   5% /run
/dev/xvda1      7.7G  972M  6.8G  13% /
tmpfs           244M     0  244M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           244M     0  244M   0% /sys/fs/cgroup
/dev/loop0       91M   91M     0 100% /snap/core/6350
/dev/loop1       18M   18M     0 100% /snap/amazon-ssm-agent/930
tmpfs            49M     0   49M   0% /run/user/1000
  • 하나의 파티션이 있으며 /에 마운트되어 있다.
  • 디스크는 /dev/xvda라는 이름으로 네이밍되어 있다. vda는 가상 서버에서 흔히 볼 수 있는 디스크 타입인데, 이 때 사용하는 디스크가 XEN 장치이므로 xvda라고 네이밍되었다. vda 외에도 개인용 컴퓨터에서 많이 쓰이는 hda, 서버용 컴퓨터로 많이 쓰이는 sda라는 이름이 더 있다.

Network

lspci

lspci 명령어를 통해 장치의 네트워크가 어떤 하드웨어들로 구성되어있는지 확인할 수 있다.

>> lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 01)
00:02.0 VGA compatible controller: Cirrus Logic GD 5446
00:03.0 Unassigned class [ff80]: XenSource, Inc. Xen Platform Device (rev 01)

ethtool

네트워크 카드의 속도, 연결 속도, 연결 확인 등을 볼 수 있는 명령어이다. 또한 네트워크 카드의 성능 최적화 옵션 또한 조회할 수 있다. 지금 테스트가 이루어지는 장치는 aws 위의 가상 서버이므로 이 명령어를 사용해보는 것이 큰 의미가 없다. 이 때는 aws의 사이트를 통해 해당하는 인스턴스 타입의 네트워크 지원 속도를 확인하자!

comments powered by Disqus