시스템의 문제점을 분석하고 확인하기 위해서는 현재 시스템의 구성 정보를 확인할 수 있어야 한다. 현재 사용 중인 커널 버전과 부팅 시 사용한 커널 파라미터 그리고 하드웨어인 CPU와 메모리는 어떤 것을 사용하는 지 등의 정보를 알아야 알려진 커널 버그가 없는지, 하드웨어에 문제가 없는 지 확인할 수 있다.
Kernel 정보 확인
커널 버전을 확인 할 수 있는 방법은 여러 가지다.
1. Command : uname -a
$ uname -a
위 서버의 커널 버전은 3.10.0-957.el7.x86_64 로, x86 계열의 64 비트 운영체제를 사용하고 있음을 알 수 있다.
위 서버의 커널 버전은 4.14.252-195.483.amzn2.x86_64 로, 역시 x86 계열의 64 비트 운영체제를 사용하고 있음을 알 수 있다.
2. Command : dmesg | grep -i kernel | more
dmesg는 커널의 디버그 메시지로, 커널이 부팅할 때 나오는 메시지와 운영 중에 발생하는 메시지를 볼 수 있게 해주는 명령어다.
$ dmesg | grep -i kernel | more
dmesg로 커널이 메모리를 인식하는 과정과 하드웨어를 인식하는 과정, 그리고 부팅 시 적용된 커널 파라미터 등을 확인할 수 있다.
- (1) 커널이 부팅 시에 사용한 커널 파라미터를 의미한다. 일부 모듈에 대한 옵션을 설정할 수 있으며, 부팅 시에만 적용되는 모듈도 있다. (root 비밀번호를 잊어버릴 경우, 부팅 시 'e' 편집모드로 들어가서 수정하는 command line도 해당 명령줄이다.) 위에서는 crashkernel 과 LANG(language)에 대한 파라미터가 설정되어 있다.
- (2) 이 메시지는 crashkernel에 대한 이미지를 로딩했다는 것을 의미한다. 커널은 다양한 이유로 커널 패닉 상태에 빠질 수 있다. 커널 패닉 상태에 빠지게 되면 사용자의 입력을 받아들일 수 없게 된다. 이 때 crashkernel을 설정해 두면 커널 패닉에 빠질 때 crashkernel을 로딩해서 패닉에 빠진 커널의 디버깅 정보를 저장한다. 이를 통해서 커널에 어떤 문제가 발생했는 지 추적할 수 있다.
- (3) 부팅 시에 커널이 인식하는 메모리의 정보를 의미한다. 물리적인 메모리의 크기와 실제로 사용 가능한 메모리의 크기를 보여준다. 여기에서 확인한 가용 메모리와 부팅이 완료된 후 free 명령을 통해 확인하는 메모리의 양이 조금 다른데, 부팅 과정에서 사용된 일부 메모리들이 부팅 완료된 후에 반환되기 때문이다.
- (1) console, net.ifnames, biosdevname, nvme_core.io_timeout, rd.emergency, rd.shell 파라미터에 대한 값이 설정되어 있다.
- (2) 부팅 시에 커널이 인식하는 메모리 정보
+ dmesg 뿐 아니라, /proc 파일 시스템을 이용해서도 확인할 수 있다.
$ cat /proc/cmdline
※ intel_idle.max_cstate
위의 실습에서는 해당 파라미터 값이 없었지만, 최근에 사용되는 CPU에는 C-State라는 옵션이 있어서 특별한 작업이 없는 Idle 상태가 되면 일부 CPU 코어를 Sleep Mode로 전환시킬 수 있다고 한다.
이렇게 되면 코어가 많이 필요하지 않을 때 전력을 아낄 수 있지만, 갑자기 많은 코어가 필요한 경우(트래픽이나 사용자의 요청이 급격하게 증가)에는 Sleep Mode인 코어를 다시 가동시켜야 하기 때문에 성능 저하가 발생하게 된다고 한다.
즉, C-State 옵션은 경우에 따라서 사용해야 하며 해당 옵션은 부팅 시 하드웨어 BIOS 설정에서 설정한다.
3. Command : cat /boot/config-`uname -r` | more
$ cat /boot/config-`uname-r` | more
dmesg를 이용해 확인하는 커널 정보 외에 현재 사용 중인 커널의 컴파일 옵션도 확인할 필요가 있을 때 사용.
※ ftrace와 같이 커널 함수 레벨의 추적이 필요한 경우, CONFIG_FUNCTION_TRACER와 같은 몇몇 옵션들이 컴파일에 포함되어야 한다.
$ cat /boot/config-`uname -r` | grep -i config_function_tracer
CPU 정보 확인
시스템의 하드웨어 정보, 즉 사용하고 있는 시스템이 어떤 제조사에서 만든 어떤 제품인지, 그리고 메모리는 물리적으로 어떻게 구성되어 있는 지 등을 확인해본다. 이번 절에서는 그중에서도 CPU와 BIOS 정보를 확인하는 방법을 살펴본다.
1. Command : dmidecode
리눅스에서는 dmidecode 명령을 통해 하드웨어의 정보를 확인한다. dmidecode 명령만 입력하면 너무 많은 정보가 나오기 때문에 키워드를 사용해서 필요한 정보만 확인하는 것이 좋다.
(type)
dmidecode - t bios
dmidecode -t system
dmidecode -t baseboard
dmidecode -t chassis
dmidecode -t processor
dmidecode -t memory
dmidecode -t cache
dmidecode -t connector
dmidecode -t slot
이 중에 CPU와 BIOS의 정보를 확인하는 데 필요한 키워드는 bios, system, processor이다.
(1) dmidecode -t bios
bios 키워드는 보통 특정 BIOS 버전에 문제가 있다는 보고가 있고, 내가 사용하는 버전이 이 버전에 해당하는 지를 확인할 때 주로 사용한다.
- Vendor:
- Version: 2.2.11
- Release Date: 2019.06.13
- BIOS Revision(펌웨어 버전): 2.2
- Vendor: Microsoft
- Version: Hyper-V UEFI Release v1.0
- Release Date: 2012.11.26
- BIOS Version(펌웨어 버전): 1.0
- Vendor: Amazon EC2
- Version: 1.0
- Release Date: 2017.10.16
- BIOS Revision(펌웨어 버전) : 1.0
(2) dmidecode -t system
자주 사용하는 명령어.
장비 제조사와 모델명을 알 수 있다.
- Manufacturer: -
- Product Name: -
- Version: -
- Manufacturer: Microsoft Corporation
- Product Name: Virtual Macine
- Version: Hyper-V UEFI Release v1.0
- Manufacturer: Amazon EC2
- Product Name: t3.medium
- Version: -
(3) dmidecode -t processor
장비의 CPU 정보를 확인할 수 있다.
- 소켓은 물리적읜 CPU의 개수.
- 코어는 물리적인 CPU 안에 몇 개의 Computing Core가 있는 지.
- Manufacturer: Intel
- Version: Intel(R) Xeon(R) Bronze 3204 CPU @ 1.90GHz
- Core Count: 6
- Core Enabled: 6
- Thread Count: 6
1개의 소켓이 잇고 각 소켓에 사용 가능한 6개의 코어가 있다.
코어 6개가 전부 사용되고 있다.
소켓당 6개의 코어를 사용할 수 있기 때문에 시스템 전체적으로 6개의 코어를 사용할 수 있다.
- Manufacturer: Intel
- Version: -
VM 생성 시, 설정했던 3개의 Processor에 대한 정보가 표시됨.
- Manufacturer: Intel
- Version: Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
- Core Count: 1
- Core Enabled: 1
- Thread Count: 2
2개의 소켓이 잇고 각 소켓에 사용 가능한 1개의 코어가 있다.
코어 2개가 전부 사용되고 있고 하이퍼스레딩 기능을 통해서 각각의 코어가 멀티로 동작해서 총 4개의 코어를 사용할 수 있는 상황이다.
2. /proc/cpuinfo
$ cat /proc/cpuinfo
3. Command: lscpu
$ lscpu
lscpu는 NUMA와 관련된 정보도 함께 보여준다.
Source - [강진우] "DevOps와 SE를 위한 리눅스커널이야기"
- https://book.naver.com/bookdb/book_detail.nhn?bid=12343450
'OS > Linux Server' 카테고리의 다른 글
Mac(os)에서 Cloud Instance에 파일 전송 (0) | 2022.02.10 |
---|---|
[Linux] 1. 시스템 구성 정보 확인 (2) (0) | 2021.12.20 |
[Linux] Run Level (0) | 2021.12.13 |
[Linux] 디스크 용량 확인 (0) | 2021.12.13 |
[Linux] Root 비밀번호 분실 시 찾기 (0) | 2021.12.13 |