[CPU, Memory, I/O(Disk, NW)]
1. CPU
파이프라인
- 프로세서로 가는 명령어들의 움직임. 연산 자체를 복수의 Stage로 분할하여 처리함으로써 고속화를 꾀하는 컴퓨팅 방식
- 파이프라인을 사용하면 프로세서는 산술 연산을 하는 동안에도 다음번 명령어를 미리 가져올 수 있게되며, 다음 명령어가 수행될 수 있을 때까지 프로세서 근처의 버퍼에 가져다 놓는다.
파이프 라인 5단계
- IF (Instruction Fetch): 명령어를 메모리로부터 가져온다.
- ID (Instruction Decode): 명령어를 해독하고 동시에 레지스터를 읽는다.
- EX (Execution): ALU를 통해서 해당 연산을 수행하거나 주소를 계산한다.
- MEM (Data Memory Access): 데이터 메모리에 있는 피연산자를 접근한다.
- W/B (Write Back): 결과값을 레지스터에 쓴다.
- 파이프라인의 방식에 따라 Super Scalar, Super Pipeline, Superpipelined SuperScaler, VLIW 4가지 방식으로 나눌 수 있다.
- 참조: https://blog.naver.com/PostView.nhn?blogId=icbanq&logNo=221683960935&categoryNo=0&parentCategoryNo=0&viewDate=¤tPage=1&postListTopCurrentPage=1&from=postView
캐싱
- 컴퓨팅 성능 향상을 위해 사용되는 메모리.
- 주기억장치(HDD,SSD)와 CPU사이에 위치하여 자주 사용하는 데이터를 기억한다.
- 캐싱은 이 캐시 영역으로 데이터를 가져와서 접근하는 방식을 의미함.
- ex: 속도가 느린 디스크의 데이터를 캐시로 가져와 메모리상에서 읽고 쓰는 작업을 수행하는 것.
- 캐싱은 지역성이라는 특성을 이용하여 성능 개선을 하게 된다.
- 지역성은 시간, 공간, 순차적 지역성으로 나눌 수 있다.
- 시간: for, while 등의 반복문에서 사용하는 조건 변수처럼 한 번 참조된 데이터를 또 참조할 가능성이 높은 것.
- 공간: 배열 A[0], A[1]과 같은 배열에 연속적으로 접근할 때 참조된 데이터는 근처에 있는 데이터가 또 사용될 가능성이 높다는 것.
- 순차적: 분기가 발생하는 비순차적인 실행이 아닌 이상 명령어들이 메모리에 저장된 순서대로 실행된다는 특성.
- 지역성은 시간, 공간, 순차적 지역성으로 나눌 수 있다.
- 캐시의 원리를 활용하여 CDN같은 서비스도 할 수 있음. CDN은 네트워크 공간에서 멀리있는 파일을 가져와야할 때 너무 오래걸리니 이 파일들을 가까운 지역 서버에 올려놓고 서비스하는 방식을 뜻함.
대역폭
- CPU와 메인보드에 위치하는 칩셋 간에 데이터를 주고받을 때 사용하는 '통로의 너비'.
- CPU 성능이 아무리 좋더라도 이 대역폭이 좁다면 병목현상이 발생할 수 있음.
- T/s (Transfer to second): 대역폭의 단위. 초당 전송률을 의미.
- CPU스펙에 DMI 8GT/s, UMI 이런식으로 적혀있는데 이건 인텔이나 AMD에서 자체적으로 사용하는 기술에 따른 용어 차이로 한다.
- DMI (Direct Media Interface): 인텔이 개발한 south bridge와 north bridge 간의 상호 연결을 위한 end to end interface를 지칭함.
- CPU스펙에 DMI 8GT/s, UMI 이런식으로 적혀있는데 이건 인텔이나 AMD에서 자체적으로 사용하는 기술에 따른 용어 차이로 한다.
MIPS (Million Instructions Per Second)
-
- CPU가 1초 동안 처리할 수 있는 명령의 수. 1MIPS는 1초동안 100만개의 명령을 처리한다는 의미. 높을 수록 좋다.
- 명령어 종류에 관계없이 1초당 실행되는 명령어 수만 계산하기 때문에 I/O와 같이 명령어에 영향을 주는 것들을 고려하지 않아 신뢰성이 낮은 측면이 있다고 한다.
- 개선방안 중의 하나로 DMIPS이며 이는 특정작업만을 수행시켜 CPU성능을 벤치마킹하는 방법.
[2.메모리]
많으면 많을 수록 좋다. (메모리는 다다익선)
카프카에서는 메모리보다는 캐시를 더 쓸 수 있게하는 설정을 권장한다.
동작클럭 (Hz)
- 메모리의 동작 속도를 나타내고, 이 숫자가 클수록 속도가 빠름을 의미. 강으로 치면 유속.
- 메모리의 속도는 메모리 자체 속도와 CPU와의 전송폭을 모두 고려하게 된다.
- ex) DDR3-1600: 1600은 전송속도가 1600Mhz (초당 데이터 전송 수) 라는 것을 의미.
대역폭 (Bandwidth)
- 강으로 치면 강의 폭을 의미함.
- 위의 클럭에서 1600 Mhz라는 것을 가정한 상태에서 메모리는 보통 한 번에 8 바이트를 전송하므로 (클럭 * 8) = 12800MB/s 이 대역폭이 된다.
- DDR3-1600은 PC3-12800과 동일한 스펙이라는 뜻.
ECC (Error Correction Code)
- 서버용 메모리에서 사용하는 기능.
- 데이터를 읽고 쓰는 과정에서 발생하는 오류데이터를 찾아내고 수정하는 기능을 의미함.
- 패리티 코드를 함께 실어 이를 통해 신뢰성을 높인다고 함 But 패리티 코드를 함께 보냄으로써 데이터 전송 속도는 하락할 수 있음.
전력 소모량
- 전력 소모량이 성능에 영향을 미치기 보다는, 메모리의 전력 소모량도 무시 못할 수준이며
- 엔터프라이즈 환경에서는 냉방/냉각 비용도 고려해야 함
[3.디스크]
아래 개념들은 HDD나 디스켓에서 사용되던 개념으로 SSD에서는 크게 의미가 없을 수 있음.
트랙 (track)
디스크는 그림처럼 여러개의 동심원으로 나뉘어지는데 이것을 트랙이라 함. 트랙은 다시 여러 개의 섹터로 나누어 진다.
ex: 디스크에 40개의 트랙이 생겼고, 10개의 섹터로 나뉜다면 이 디스크에 존재하는 섹터의 수는 400개이다.
섹터 (sector)
컴퓨터가 주소지정을 할 수 있는 최소 단위의 저장 공간. (소프트웨어적으로 접근할 수 있는 가장 작은 단위)
섹터 단위로 데이터를 읽거나 기록하므로 어떤 데이터를 찾으려고 할 때 섹터번호와 그 섹터의 트랙번호를 알면 찾을 수 있다.
디스크의 0번 섹터는 파일 할당표라는 특수한 파일이 저장되서 부팅정보와 같은 여러 메타데이터를 가지고 있다. (ex: MBR, GPT)
보통 256 바이트 or 512 바이트.
클러스터
파일을 디스크에 할당하는 할당 단위.
연속적인 여러 섹터들의 묶음 (4~32kB)
MS계열에서 많이 쓰이는 용어
- MS-DOS FAT의 클러스터 내 섹터 수: 4~24 섹터
- 윈도우 NTFS의 클러스터 내 섹터 수: 2^n
블록
운영체제가 디스크에서 읽고, 쓰고, 탐색하는 기본 단위
메모리와 디스크 간의 입출력 데이터 전송 단위
각 블록은 1개 이상의 섹터를 가짐. 즉 연속적인 섹터들의 묶임
보통 32~4096바이트
linux fdisk로 확인해보기
$ fdisk -l /dev/sdc1
Disk /dev/sdc1: 2.2 TiB, 2418925546496 bytes, 4724463958 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
섹터 수: 4,724,463,958
섹터 단위: 512 Bytes (각 섹터의 크기는 512Bytes라는 뜻) 512 * 4724463958 (섹터 수) = 2418925546496 (디스크 크기)
블록은 보통 4096 바이트를 기본으로 한다. 즉 1블록에는 8개의 섹터가 있음.
블록 사이즈를 너무 작게하면 데이터를 가져올 때 작업을 자주해야할 것이고, 크게하면 효율성은 떨어지지만 성능향상을 노릴 수 있게 될 것이다.
[4. 네트워크 ]
- ethtool: 네트워크 관련확인 툴.
- Blocking:
- Driver: 네트워크 드라이버도 매우 중요함.
통신 방식
- Simplex
- Half Duplex
- Full Duplex
- 통신하는 쌍방이 데이터 송/수신을 동시에 할 수 있음 = 송신, 수신 2가지 채널로 통신
- Duplex 설정 확인하기
- ifconfig -a 명령어 실행 후, 네트워크 인터페이스 이름 확인
- ethtool [네트워크 인터페이스 이름]
- Duplex 설정 변경
-
- 같은 제조사의 장비끼리 연결하는 경우양쪽 모두 auto-negotiation으로 설정
- 다른 제조사의 장비끼리 연결하는 경우엔 양쪽 모두 수동으로 동일한 speed와 duplex 설정
'Linux' 카테고리의 다른 글
xfs, ext4 파일시스템의 차이 (0) | 2022.11.15 |
---|---|
Linux Monitoring Tools (0) | 2022.11.13 |
Linux Monitoring (0) | 2022.11.13 |