Linux

H/W 구성요소

재심 2022. 11. 2. 15:37

[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): 결과값을 레지스터에 쓴다.  

 

 

파이프라인(Piperinng)에 대하여

안녕하세요 나도메이커의 레비입니다. 오늘은 파이프라인에 대해 알아보겠습니다. 1. Piperine(Piperinin...

blog.naver.com

 

캐싱

  • 컴퓨팅 성능 향상을 위해 사용되는 메모리. 
  • 주기억장치(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를 지칭함. 

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