본문 바로가기
OS/Linux Server

[Linux] 1. 시스템 구성 정보 확인 (2)

by Haengsin 2021. 12. 20.
메모리 정보 확인

 

1. Command: dmidecode -t memory

$ dmidecode -t memory

각 메모리 슬롯에 있는 메모리의 정보 및 제조사까지 확인 가능하다.

CentOS7 on Server

  • 5개의 CPU 소켓이 있는 서버이기 때문에 Physical Memory Array는 총 5개가 있다.
  • 각각의 Physical Memory Array는 총 24개의 메모리를 꽂을 수 있으며 최대로 꽂을 수 있는 용량은 7680GB 이다.
  • 각 Physical Memory Arry의 Memory Device에는 32 GB의 메모리가 꽂혀 있다. 
    • 총 몇 개의 메모리가 꽂혀 있는지, 각각의 용량을 얼마인지 확인할 수 있다.

 

Amazon Linux 2

  • 1개의 CPU 소켓이 있는 서버이기 때문에 Physical Memory Array는 총 1개가 있다.
  • 각각의 Physical Memory Array는 총 1개의 메모리를 꽂을 수 있으며 최대로 꽂을 수 있는 용량은 4GB 이다.
  • Physical Memory Arry의 Memory Device에는 4096 MB의 메모리가 꽂혀 있다. 
  • size : No Moule Installed 는 메모리가 꽂혀 있지 않는 것을 뜻한다.

 

Memory 키워드는 크게 Physical Memory ArrayMemory Device 의 두 영역으로 나눌 수 있다.

메모리 키워드의 영역

Physical Memory Array 는 하나의 CPU 소켓에 함께 할당된 물리 메모리의 그룹을 의미한다.

 

최근의 프로세서는 NUMA 라는 개념을 이용해서 각각의 CPU가 사용할 수 있는 로컬 메모리를 제공한다. 

 

Memory Device 는 실제로 시스템에 꽂혀 있는 메모리를 의미한다.

 

메모리의 용량이 얼마인지 그리고 제조사는 어디인지 확인해볼 수 있다.

 

2. Command: dmidecode -t memory | grep -i size:

$ dmidecode -t memory | grep -i size:

memory 키워드와 grep 명령어의 조합으로 Size: 들을 보기 편하게 확인할 수 있다.

 

CentOS7 on Server

32GB 의 메모리가 4개 꽂여 있는 것을 확인할 수 있다. 이를 통해 전체 메모리의 용량이 128 GB라는 결론이 나온다.

 

Amazon Linux 2

4096 MB 의 메모리가 1개 꽂혀있는 것을 확인할 수 있다. 이를 통해 전체 메모리의 용량이 4096 MB라는 결론이 나온다.

 

위의 크기가 free 명령을 통해 확인한 전체 메모리 크기와 다르다면 시스템의 메모리 인식에 문제가 있는 것이다.

 

디스크 정보 확인

1. Command: df -h

$ df -h

현재 시스템을 구성하고 있는 파티션과 디스크의 타입 정보 정도는 간략하게 알 수 있다.

 

CentOS7 on Server

위 서버는 8개의 파티션이 있으며 각각의 파티션은 / , /dev , /dev/shm , /run , /sys/fscgroup , /boot , /home , /boot/efi 에 마운트되어 있다. 또한 디스크는 /dev/sda 라는 이름으로 시스템에 네이밍되어 있다.

Amazon Linux 2

위 서버는 6개의 파티션이 있으며 각각의 파티션은 / , /dev , /dev/shm , /run , /sys/fscgroup , /run/user/1000 에 마운트되어 있다. 또한 디스크는 /dev/nvme0n1p1 라는 이름으로 시스템에 네이밍되어 있다.

 

디스크의 방식에 따라서 /dev/hda, /dev/sda, /dev/vda 등 일 수도 있다. 

 

※ sda와 hda 의 차이점

시스템이 디스크와 통신하기 위해 사용하는 것 중에 컨트롤러라는 부품이 있다. 디스크를 사용하려는 쪽과 실제 디스크 사이에서 통신이 원활히 이루어질 수 있도록 일종의 중개자 역할을 하는 부품인데, 가장 대표적인 것이 IDE 타입과 SCSI 타입이다. 쉽게 말해서 IDE는 개인용 컴퓨터를 위한 방식이며, SCSI는 서버용 컴퓨터를 위한 방식이라고 생각하면 된다. SCSI 방식은 더 많은 장치를 연결할 수 있어서 확장성이 좋고 더 빠른 접근 속도를 제공하기 때문이다. IDE 방식의 디스크는 hda로, SATA, SAS 와 같은 일반적인 하드 디스크는 sda로 표시된다. vda는 가상 서버에서 흔히 볼 수 있는 디스크 타입이다.

 

2. Command: smartctl -a /dev/sda

smartctl 이라는 툴을 이용하면 더 상세한 정보를 확인할 수 있다. 

※ 설치 : $ sudo yum install -y smartmontools

Amazon Linux 2

 

네트워크 정보 확인

1. Command: lspci | grep -i ether

$ lspci | grep -i ether

Amazon Linux 2

 

  • 하드웨어적인 이슈를 확인할 때 유용하게 사용.
  • 간혹 특정 모델에서 버그나 이슈 등이 보고될 때 자신의 서버가 해당되는 지 파악해야 하며, 커널 드라이버를 업데이트할 때에도 해당하는 펌웨어 드라이버를 정확하기 찾기 위해서 사용.

 

2. ethtool

(1) Command: ethtool eth0

$ sudo ethtool eth0

Amazon Linux 2
CentOS7 on Server

연결 상태를 확인한다.

  • (1), (2) : 해당 네트워크 카드가 어느 정도의 속도까지 지원이 가능한가
  • (3) : 현재 열결되어 있는 속도는 얼마인가
  • (4) : 네트워크 연결은 정상적인가

- (3)의 경우 서버가 의도했던 것만큼 속도가 나오지 않을 때 가장 먼저 살펴보아야 할 항목.

위의 예시에서 네트워크 카드는 최대 1Gbps(1000Mbps)의 속도를 낼 수 있는 카드이며 실제 연결 속도는 1000Mb/s 이다. 이를 통해 서버의 네트워크 상태가 정상임을 확인할 수 있다.

 

(2) Command: ethtool -g eth0

$ ethtool -g eth0
$ ethtool -g eno0

Amazon Linux 2
CentOS7 on Serever

 

-g 옵션을 이용하면 Ring Buffer의 크기를 확인할 수 있다. 

 

Ring Buffer는 네트워크 카드의 버퍼 공간을 의미한다. 케이블을 통해서 들어온 패킷 정보는 제일 먼저 네트워크 카드의 Ring Buffer라는 버퍼 공간에 복사된다. 그 후 커널에 패킷의 도착을 알리고 패킷의 정보를 다시 커널로 복사한다. 

 

그렇기 때문에 Ring Buffer의 크기가 작다면 네트워크 성능 저하를 일으킬 수 있다. 항상 maximums 값과 current 값이 같도록 세팅해야 한다.

 

 

(3) Command: ethtool -G eth0

$ ethtool -G eth0 rx 2048
$ ethtool -G eno0 rx 2048

Amazon Linux 2

-G 옵션은 위에서 확인한 Ring Buffer의 값을 설정할 때 사용되는 옵션이다.

-g를 통해서 확인한 결과 current 값이 maximums 값보다 작다면 -G 옵션을 통해서 값을 설정할 수 있다.

 

 

(4) Command: ethtool -k eth0

$ sudo ethtool -k eth0

Amazon Linux 2

-k 옵션은 현재 사용 중인 네트워크 카드의 다양한 성능 최적화 옵션을 확인할 수 있다.

-K 옵션은 -k 옵션으로 확인한 네트워크 카드의 성능 최적화 옵션을 설정할 때 사용한다.

 

네트워크 카드는 단순히 패킷을 주고 받는 기능 이외에도 더 빠르게 패킷을 주고 받을 수 있게 해주는 다양한 기능을 제공한다. 여기에서 가장 중요한 기능 중 하나는 tcp-offload 기능이다. 

  • generic-receive-offload : tcp-offload 기능. MTU 이상의 크기를 가지는 패킷의 분할 작업을 CPU가 아닌 네트워크 카드가 직접함으로써 CPU의 부담을 줄이고 패킷 처리 성능을 높이는 기능이다. ( 불특정한 패킷 유실이 자주 일어나는 것 같다면 off 하는 편이 좋다. )

 

(5) Command: ethtool -i eth0

$ ethtool -i eth0

Amazon Linux 2

-i 옵션을 통해 사용 중인 네트워크 카드가 어떤 커널 드라이버를 사용하는 지, 버전이 몇인 지를 알 수 있다. 이는 특정 커널 드라이버의 버전에서 문제가 생겼을 경우 내가 사용하는 버전이 여기에 해당하는 지 아닌 지를 판단할 때 필요하다.

 

 

Source - [강진우] "DevOps와 SE를 위한 리눅스커널이야기"

'OS > Linux Server' 카테고리의 다른 글

[Shell Programming] 1. Linux shell?  (0) 2022.02.10
Mac(os)에서 Cloud Instance에 파일 전송  (0) 2022.02.10
[Linux] 1. 시스템 구성 정보 확인 (1)  (0) 2021.12.15
[Linux] Run Level  (0) 2021.12.13
[Linux] 디스크 용량 확인  (0) 2021.12.13