참고 도서 : 그림으로 공부하는 IT 인프라 구조
2장 서버
물리 서버
서버가 있는 곳을 데이터 센터나 서버실이라고 한다. 주로 데이터 센터는 서버의 열기 때문에 실내 온도를 낮게 설정하고 빛도 들어오지 않는 환경으로 되어 있다.
서버는 설치할 때 rack에 장착된다. 그리고 rack에는 서버 외에도 여러 가지가 탑재 되어있다고 한다.
서버에는 CPU, 메모리, PCI Express 슬롯, 네트워크 인터페이스, HDD 등이 있다. 이는 PC와 물리적으로 기본 구성이 같다. 이들 컴포넌트를 연결하는 선을 Bus라고 한다.
대충 물리 서버에 대한 요약은 여기까지 하고, 다음으로!!
CPU
Central Processing Unit는 서버 중심에 위치하여 연산처리를 한다.
- 기억장치나 입출력 장치를 통해 전달
- 현재 코어라고 불리고, CPU에 여러 개의 코어가 존재한다.
명령이나 데이터는 기억 장치에 있다.
하지만 명령을 직접 내리는 애들은 OS이다. 그리고 OS에게 명령을 내리는 애들은 OS에서 동작하는 웹 서버나 데이터베이스이다. 즉, 사용자의 키보드나 마우스를 통한 입력이다.
메모리
메모리는 기억 영역을 말한다. CPU 옆에 위치하고 있고, CPU에 전달하는 데이터를 저장하거나 처리 결과를 받는다.
- 영구성이 없다.
- 서버 재시작시 정보가 없어진다.
- 메모리 엑세스가 매우 빠르게 이루어진다.
CPU 내부에도 메모리가 존재하는데, 이를 레지스터
또는 1차/2차 캐시
라고 불린다. 이는 메모리보다 더욱 빠르지만, 용량은 매우 작다.
메모리를 이용하는 데에 걸리는 시간이 오래 걸리는 것을 방지하기 위해 자주 사용하는 명령이나 데이터를 코어 가까운 곳에 배치하여 시간을 줄일 수 있다.
메모리 영역이 여러 단계로 나눠져 있는데, 이 이유는 엑세스 속도
때문이다. 왜냐하면 캐시 메모리가 커질 수록 엑세스 속도가 느려진다. 그래서 초고속으로 엑세스하고 싶은 데이터는 L1 캐시
, 고속으로 엑세스하는 데이터는 L2 캐시
에 두는 헝태로 만든다. 즉, 캐시 영역은 속도가 매우 빠른 것을 알 수 있다.
또한 처리 지연을 줄이는 방법 중 하나인 메모리에는 미리 데이터를 CPU에 전달하는 메모리 인터리빙
기능이 있다. 이는 최대 3개의 채널을 사용하여 데이터 3개를 한꺼번에 보내서 연속적으로 엑세스되어 먼저 읽어서 처리 지연을 줄여주는 것이다.
I/O 장치
HDD 하드 디스크 드라이브
I/O 장치는 데이터 입출력을 담당한다.
- HDD는 기록 영역이다.
- 서버에는 CPU에서 떨어진 곳에 HDD가 배치된다.
- 장기 저장 목적의 데이터 저장 장소로 사용
- 전기가 없어도 데이터가 사라지지 않는다.
HDD는 CD/DVD와 같은 구조로, 원반이 들어있고, 이것이 고속으로 회전하여 읽고 쓰기 처리를 한다.
이와 반대되는 SSD라는 물리적인 회전 요소를 사용하지 않는 디스크도 있다. 이는 메모리와 같이 반도체로 만들어졌고, 전기가 없어도 데이터가 사라지지 않는다.
서버와 HDD가 I/O 작업을 할 때, 직접 데이터 교환을 하지 않고 캐시를 통해서 한다.
읽기/쓰기 시에는 두 종류의 I/O를 사용한다.
- 읽기/쓰기에 캐시라는 메모리 영역에 엑세스하는 I/O
- 읽기 : 캐시에 읽을 데이터가 존재하는 경우에는 그냥 캐시에서 꺼낸다.
write back
(쓰기) : 캐시에만 기록하고 I/O를 종료한다. 속도가 매우 빠르다.
- I/O 캐시와 HDD에 모두 엑세스하는 I/O
- 읽기 : 읽을 때 캐시에 데이터가 없으면 읽기 처리를 위해 하드 디스크에서 읽어서 캐시에 올린다.
write through
(쓰기) : 캐시와 저장소에 쓴 데이터를 기록하고 I/O를 종료한다.
네트워크 인터페이스
네트워크 인터페이스란 서버와 외부 장비를 연결하기 위한 것이다. 즉, 외부 접속용 인터페이스이다.
이 또한 외부 I/O라는 의미로 HDD와 동일하다.
I/O 제어
책에서는 IA 서버 아키텍처로 예를 들어 설명하였음..
IA 서버에서 I/O 제어는 I/O 핸들러 (IOH)
나 I/O 컨트롤러 (ICH)
라는 제어 장치를 통해 수행한다. 얘네들은 CPU와 가까운 곳에 있어서 north bridge
와 south bridge
라고도 부른다.
IOH는 고속처리가 필요한 I/O를 제어하고, CPU 간의 데이터 전송 처리도 한다.
ICH는 속도가 느려도 괜찮은 DVD나 USB 등의 I/O 제어를 담당한다. 그리고 IOH 간의 데이터 전송 제어도 한다.
이런 컨트롤러는 CPU가 해야 할 연산에 더 집중하기 위한 것이다. 그리고 I/O에 관련 처리를 가능한 I/O와 가까운 곳에서 처리하는 것이 효율적이다.
버스
버스란, 서버 내부에 있는 컴포넌트들을 서로 연결시키는 회선을 가리킨다.
버스의 데이터 전송 능력, 즉 대역은 어느정도일까?
대역
대역이란, 데이터 전송 능력을 의미한다.
한 번에 데이터를 보낼 수 있는 데이터의 폭(전송폭)
X 1초에 전송할 수 있는 횟수(전송 횟수)
= 대역
버스 대역
CPU에 가까운 쪽이 버스 대역이 크다.
그 이유는 CPU와 메모리는 대량으로 데이터를 교환해서 전송 능력이 매우 빨라야하기 때문이다. 반대로 USB 포트는 저속이기 때문에 버스 대역이 크지 않다.
버스 흐름에서는 CPU가 장치 사이에 병목 현상이 없어야 한다. 즉, 버스와 대역을 고려하여 시스템에 병목 현상이나 낭비가 되지 않도록 설계하여야 한다.
결론
2장은 서버 내부에서 흐르는 데이터를 이해하는 것이다.
HDD 데이터가 CPU에 이르기까지 어떻게 거치고 캐시는 어떻게 되고, 속도는 CPU에 가까울 수록 고속이고, 멀어질 수록 저속이고, 고속이면 버스는 대용량이라는 것 등등…..