컴퓨터 기본구조
- 폰 노이만 아키텍처
- CPU와 메모리를 사용하는 현대 컴퓨터 모델의 시초...!! (항상 시초는 중요..)
- 컴퓨터(서버) 주요 구성 요소
- S/W : OS, 응용프로그램
- H/D : CPU, 메모리, 디스크
- NIC : 컴퓨터를 네트워크에 연결
- HBA : 컴퓨터를 외장 스토리지에 연결
CPU
Clock
- 1초당 CPU가 처리할 수 있는 명령 횟수이다!
- Clock은 CPU 성능을 나타내는데, Clock이 높을수록 성능이 좋다는 뜻이다!
- 하지만.... Clock만으로 컴퓨터 성능은 비교 불가!! (아방떼 신형 vs 2010년형 BMW 느낌...?)
예시를 살펴보자
- IBM의 POWER : IBM의 UNIX 장비에 사용되는 CPU로, CPU 당 클럭 및 성능이 우수!
- Intel Itanium : 서버용 CPU로, HP의 UNIX 장비에서 사용!
- Intel Xeon : x86 서버 CPU로 가장 많은 시장 점유율을 차지 중! 코어당 성능이 높진 않지만 소켓당 많은 코어를 넣어 높은 성능을 구현할 수 있다!
- AMD Epyc : AMD의 x86서버 CPU로 Xeon에 비해 낮은 가격이지만 동일한 성능을 구현!
- Amazon Graviton : AWS의 기반 인프라 용도로 자체 개발한 ARM기반 CPU이다!
CPU는 4단계에 걸쳐 명령어를 처리하는데, Clock에 따라 명령을 실행한다! 한번 살펴보자
단계 | 의미 |
fetch | 메모리에서 명령어 인출 |
decode | 명령어에 대한 해석 |
execute | 명령어 실행 |
writeback | 메모리 저장 |
캐시(Cache)
- 데이터의 빠른 처리를 위해 캐시를 사용
- L1 캐시가 가장 빠르다
- L3캐시로 갈 수록 데이터를 공유한다.
프로세서가 데이터가 필요할때 메모리에 가는 것이 아니라 캐시를 먼저 보고 캐시에 있을 경우 바로 가져온다.
(=Cache Hit!)
이렇게 CPU 성능을 높이고~ 메모리 접근 시간을 단축할 수 있는 효과...
사실 세상 모든 물건이 그렇듯... 속도가 빠른건(L1캐쉬) 비싸고 속도가 느린건(메인메모리) 싸다!
소켓(Socket) / 코어(Core)/ 쓰레드(Thread)
- 소켓 : 실제 물리적 부품으로서의 CPU
- 코어 : 하나의 소켓 안에 하나 또는 여러 개가 탑재되는 CPU의 핵심 요소 (CPU개수 = 코어 갯수)
- 쓰레드: 코어를 논리적으로 나누어 성능을 높이는 기술, 1코어를 2쓰레드로 사용하면 OS는 2개로 인식
- 쓰레드는 코어를 더 논리적으로 잘 쪼개서 보여주는 경우, 그의 단위를 쓰레드라고 한다.
- 이렇게 코어를 논리적으로 나누면 OS에 더많은 CPU로 인식시킬 수 있다!!
쉽게 이야기하면~ 큰 바구니(소켓)에 사과(코어)를 1개 혹은 여러개를 넣는다.
이사과를 반으로 쪼개어(쓰레드) 넣을 수 있다! 그러면 사과는 2개가 되겠지...?
사과가 2개니까.. 코어는 2개... 코어 개수는 CPU개수랑 같으니까 CPU개수도 2개!!
- 1개의 소켓 Xeon은 36개의 코어처럼 보인다. (병렬로 처리시 더욱 성능은 증가)
- 쓰레드 개수만큼 OS가 인식하니까 36개의 코어로 인식!!
실제 Clock Speed 측정
- CPU의 실제 Clock Speed를 확인할 수 있음
- windows의 경우 작업 관리자 또는 CPU-Z로 확인가능하다.
- Linux의 경우 #dmidecode -t 4로 가능하다.
잠시 Windows Server 운영시 꼭 해줄것!
- CPU 전원 관리 옵션이 "고성능"으로 되어 이썽야 부하에 상관없이 최고 Clock Speed로 동작
- 전원관리 옵션을 "균형 조정"에서 "고성능"으로 바꾸는 것이 좋다.
메모리
RAM(Random Access Memory)
- 프로그램이 실행되는 동안 필요한 정보를 저장하는 공간!!
요롷게 생긴거~ 많이 봤죠잉?
저장공간 계층
- 디스크에 저장된 코드나 데이터가 CPU에서 처리되기 위해 이동하는 단계
- 메모리가 충분하지 못하면?? 프로그램을 돌릴때 많은 I/O가 디스크에서 발생하게 되니 성능은 당연히 ... Down...
- 물론 요구하는 용량보다 내 메모리가 부족하면?? .... Nope..
디스크
HDD(Hard Disk Drive)
- 헤드의 순차접근에 의해 데이터를 Platter에 저장
- Read/Write 성능 개선을 위해 논리적으로 분할하여 사용
Q. 왜.. HDD를 실린더 단위로 나눠서 사용할까...?
A. 헤더의 이동거리를 줄여 데이터를 찾기 위함!!
딱 이거 3개만 읽어보고 가자!!
이름 | 설명 |
트랙 | 데이터가 기록될 수 있는 동심원 모양의 영역 |
섹터 | 트랙을 나눈 것으로 데이터 저장의 최소 단위 |
실린더 | 각 플래터의 같은 위치에 존재하는 트랙을 모아서 연결한 것 |
HDD RPM
- CPU에는 Clock이 있다면!! HDD에는 RPM이 있다.
- platter의 분당 회전수를 뜻한다
- 당연히 RPM이 높은 HDD가 성능이 좋다.
HDD 인터페이스 규격
- 2개 이상의 디스크를 연결할 수 있는 방식을 병렬 인터페이스라고 한다.
- 하지만 2개로 쓰면.. 아무래도 서로 영향이 있다!! 즉, 간섭현상이 발견된다.
- 하지만, 최근에는 CPU가 점점 빨라지며 병렬방식이 필요없어 직렬 인터페이스를 사용한다.
- 가장 최근이 NVMe (ssd의 고성능을 살리기 위한 규격)
SSD(Solid State Drive)
- 낸드 플래시 메모리(NAND Flash Memory)를 사용한 저장장치
- DRAM은 휘발성 메모리지만 플래쉬 메모리는 비휘발성 메모리이다.
- 낸드 플래시의 경우는 읽기가 느리고 쓰기가 빠르다.
- 저렴하게 큰 용량을 구현할 수 있다.
- HHD보다 빠른 이유는 물리적인 서치 시간이 없고, 내부적으로 여러개의 플래쉬 메모리에 나눠서 읽기/쓰기를 한다.
- 물리적인 움직임이 없기에 HDD보다 내구성이 좋고 저전력이다.
잠깐..! Flash Memory (비휘발성 반도체 저장장치)란 무엇일까요!??
- 휘발성 RAM보다는 데이터 처리 속도가 느리지만, 전원이 꺼져도 유지한다! (비휘발성 특징)
- 덮어쓰기(Overwrite) 개념이 없어, 블록 삭제 후 기록하는 방식을 쓴다...
SSD: NAND Memory SLC/MLC/TLC 구분
- 셀(Cell)에 몇 비트(bit)를 저장하느냐에 따라 구분한다.
- 한 Cell에 많은 정보를 담을수록 가격은 낮아지되 내구성이 떨어져 수명은 또르륵...
NAND Flash Memory | 기록의 최소 단위(Cell)에 몇 비트를 저장? | SLC(Single Level Cell) |
MLC(Multi Level Cell) | ||
TCL(Triple Level Cell) |
SSD특징
1) 디스크 용량과 성능의 상관관계
- SSD용량이 커질수록 내부에 낸드 플레시 셀의 갯수가 많아지므로 SSD1개 기준으로 용량이 클수록 성능이 좋다.
2) Operation 단위
- 쓰기, 읽기는 페이지 단위로 수행, 사제는 블록 단위로 수행, Overwrite는 불가능
- SSD는 위에 말했다시피 덮어쓰기가 없어서 지우고 쓰고 해야해서.. 오버라이트는 Nope..
SSD관련 주요 개념
1) Wear Leveling
- 데이터를 전채적으로 쭉 펼쳐주는 기능이다.
- 수명이 있기 때문에 수명 모니터링을 진행해야한다.
- NAND Flash는 쓰기 횟수 제한이 있기 때문에 특정 Flash 영역만 과다한 쓰기가 발생하지 않도록 덜 사용한 페이지 위주로 기록하는 기능
2. Garbage Collection
- 지속적인 Wear Leveling으로 인한 쓰레기 페이지는 바로 지우지 않고, 일정 스케쥴링에 의해 유휴 블록으로 옮기고 블록 단위로 지우는 기능!! (매주 수요일마다 쓰레기를 모아서 버리는 느낌..?)
3.TRIM
- SSD가 유휴 상태일 때 데이터를 미리 지우는 기능!! (당연히 성능은 좋아져~)
4. Auto Tiering
- 자주 쓰는 데이터는 SDD ~ 안쓰는건 HDD (Tering 개념이 중요)
스토리지
외장 스토리지
- 대용량 스토리지는 i/o와 데이터 저장공간 확장성을 극대화할 수 있음
- 컨트롤러가 실제 물리에 어디에 있는지 관리를 하며 캐시가 컴퓨터에 요청한 데이터를 남겨두고 사용한다.
- 자주 사용하는 것은 실제 디스크로 안가고 캐시에서 받아오므로 성능이 올라간다.
- 다량의 물리 디스크를 장착
- 물리 디스크를 RAID (효율적이게 하드 이용) 구성하여 볼륨 Pool 생성
- Pool을 LUN(논리적 디스크)로 분할하여 컴퓨터에 할당
- 컴퓨터는 LUN을 물리적 디스크로 인식
- 물리 디스크, LUN 관리, 실제 데이터 위치 등은 컨트롤러가 담당!
- Cache가 있어 스토리지 성능 향상~
'Technical Architecture > OS_시스템 아키텍처 기본' 카테고리의 다른 글
1.3 기본 아키텍처(클라우드) (1) | 2022.12.20 |
---|---|
1-2 기본아키텍처 (온프레미스) (0) | 2022.11.03 |