사용하고 있는 장치의 하드웨어 정보를 확인하는 것은 시스템에 장애가 생겼을 때 해볼 수 있는 기초적인 방법 중 하나이다.
AWS Ubuntu 16.04 AMI (nano)에서 다음의 방법을 통해 커널 정보를 확인한다.
시스템 정보를 출력하는 리눅스 명령어이다. 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
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--
시스템의 하드웨어 정보, 물리적인 메모리의 구성 등을 확인해본다.
리눅스에서 하드웨어 정보를 확인할 수 있는 명령어이다.
>> 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
위에서 사용했던 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
Memory Device
free
와 cat /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
>> 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
라는 이름이 더 있다.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)
네트워크 카드의 속도, 연결 속도, 연결 확인 등을 볼 수 있는 명령어이다. 또한 네트워크 카드의 성능 최적화 옵션 또한 조회할 수 있다. 지금 테스트가 이루어지는 장치는 aws 위의 가상 서버이므로 이 명령어를 사용해보는 것이 큰 의미가 없다. 이 때는 aws의 사이트를 통해 해당하는 인스턴스 타입의 네트워크 지원 속도를 확인하자!