공통/인프라 & 시스템 설계

[그림으로 공부하는 IT인프라 구조] 8장 정리

반응형

응답과 처리량


시스템 성능을 가리킬 때 응답과 처리량이라는 지표가 자주 사용된다.


응답

  • 처리 하나당 소요 시간을 의미.
  • 응답이 걸리는 시간


처리량

  • 단위 시간당 처리하는 양
  • 초당 받아들이는 사용자 수


퍼센타일

  • 실제 시스템에서는 단일 사용자 응답만으로는 부족하기 때문에 여러 사용자의 평균값을 이용한다. 이때 통계학에서 사용되는 퍼센타일 개념을 이용한다.
  • 극단적으로 응답 시간이 긴 사용자는 다른 문제를 내포하고 있을 수 있기 때문에 오차라고 생각하고 평균값에 포함하지 않는다.

 

병목 현상


처리량을 제한하고 있는 요인

병목 지점

  • 병목 현상이 발생하는 위치


병목 현상은 어떻게 해결하는가?

  • 성능 분석의 시작은 먼저 이 병목 현상이 발생하고 있는 위치를 정확히 파악하는 것이다.
  • 이를 위해서는 각 서버의 처리량이나 응답 상황 로그를 취득해서 어느 서버가 병목 지점이 되고 있는지 찾아내는 것부터 시작해야 한다.


해결 방법

튜닝

  • 병목 위치를 파악해서 어떻게든 해결하는 것이다.
  • 튜닝 시에는 병목 위치를 작은 단위로 세분화해서 병목 영역을 더 집중적으로 파헤치는 접근법이 유효하다.

 

시스템 이용자 수를 제한하는 것

  • 유량 제어는 적절한 계층에서 이용자 수를 제한하는 접근법이다.
  • 유량 제어에서는 사용자에게 에러를 반환하는 것이 전부라서 근본적인 해결책이 되지 못함.
  • 수평 분할을 통해 서버를 증설함으로써 시스템 전체 허용량을 늘리는 접근법을 병용할 필요가 있다.

 

병목 현상의 종류

CPU 병목 현상

  • 주의할 점은 CPU 사용률은 처리 효율성을 나타내는 것으로 병목 현상 유무와는 관계가 없다.

 

CPU에 기인한 성능 문제의 주요 원인

  1. CPU를 이용하는 처리가 많아서 대기 행렬이 발생하고 있다.
  2. 처리량 측면의 문제를 의미.


해결 방법

  • 하드웨어의 CPU 코어 수를 늘리거나 수평 분할에 따른 서버 수를 늘리는 스케일 아웃 방법 존재.
  • 대규모 웹 서비스 시스템에서는 사용자 수가 폭발적으로 증가하기 때문에, 사용자 증가에 맞추어 서버를 추가해서 스케일아웃하는 아키텍처를 도입하는 것이 필수다.
  • CPU 응답이 느리다

 

처리 능력을 향상시키는 방법 (스케일 업)

  • 단, 스케일업으로 성능을 향상하는 것은 한계가 있다.


병렬로 처리한다

  • 처리를 분할해서 다수의 CPU 코어에게 동시 처리를 시키는 것.
  • 시스템에서 처리를 병렬화, 멀티 프로세스화, 멀티 스레드 화해서 복수의 CPU 코어를 이용함으로써 전체적인 처리 응답 시간을 향상할 수 있다.


대부분의 애플리케이션에서는 CPU 사용률이 100%에 도달하는 경우가 거의 없다. 그전에 디스크 I/O나 네트워크 I/O에서 막히는 경우가 많기 때문이다.


처리 다중화

  • 처리를 다중화해서 CPU를 적절하게 활용하는 것.

 

I/O 비동기화

  • 비동기 I/O를 이용하면 프로세스는 I/O 처리 완료를 기다리지 않고 다음으로 넘어갈 수 있다.
  • CPU 처리와 I/O 처리를 동시에 진행할 수 있기 때문에 리소스 사용 상태가 개선된다.


메모리 병목 현상

메모리 영역의 병목 현상은 크게 두 가지로 나눌 수 있다.

  • 영역 부족
  • 동일 영역의 경합

 

영역 부족에 의한 병목 현상

  • 프로세스가 가동해서 어떤 처리를 하려면 반드시 전용 메모리 영역이 필요하다. 하지만 서버상의 메모리 영역은 유한하다.
  • 이 유한한 메모리 영역을 부족하지 않도록 OS 커널 측에서 페이징, 스와핑이라는 처리를 해서 빈 메모리를 확보하는 구조가 있다.

 

가상 메모리

  • 부족한 부분은 디스크 영역으로 보완해서 가상적인 큰 메모리가 있다는 것을 보여주는 기술.

 

동일 데이터에 대한 병목 현상

  • 특정 영역을 복수의 프로세스가 공유하는 경우, 메모리 영역을 참조 또는 갱신할 때 누군간가 그 영역을 관리할 필요가 생긴다.
  • 오라클 DB에서는 래치 구조를 이용한다.
  • 래치에서는 참조나 갱신을 하고 싶은 프로세스가 서로 경합해서 빠른 쪽이 그 영역을 독점한다. 독점돼 있기 때문에 자신 외의 프로세스가 같은 영역을 갱신하는 일은 없다.

 

디스크 I/O 병목 현상

하드 디스크 등의 저장 장치에 대한 I/O 병목.

메모리와 비교해서 디스크 I/O는 매우 느리다.

 

외부 저장소

처리량이라는 관점

  • 대부분의 로컬 디스크는 서너 대의 디스크로 RAID를 구성하고 ,캐시로는 서버의 OS 메모리를 이용한다.
  • 이에 비해 외부 저장소는 수십 대에서 수백 대 단위의 디스크를 배치하고, 거기에 캐시 전용 메모리 영역까지 갖추고 있다.
  • 디스크 수에 따라 처리량이 증가하므로 처리량 관점에서는 외부 저장소가 압도적으로 유리하다.

 

응답 속도 관점

  • 단일 응답은 로컬 디스크가 가장 빠르다.
  • 이 차이를 따라잡기 위해 외부 저장소는 자신이 가진 메모리 영역을 잘 활용해서 데이터 캐시를 효율적으로 작성함으로써 응답 속도를 개선하는 노력을 하고 있다.

 

순차 I/O, 랜덤 I/O

  • 디스크 I/O에는 순차 액세스와 랜덤 액세스가 있다.
  • 순차는 선두부터 차례대로 액세스(읽기, 쓰기)하는 방식.
  • 랜덤 액세스는 헤드가 움직이면서 해당 위치로 바로 건너뛰는 액세스(읽기, 쓰기) 방식.
  • CD로 예를 들면 순차 액세스는 최고속으로 빠르게 회전하고 있는 형태이고, 랜덤 액세스는 항상 해당 부분을 찾고 있는 형태이다.
  • 단일 디스크가 기록 위치인 경우는 순차 방식이 빠르고 랜덤은 느리다.
반응형