스로틀링 (throttling) 이란 ?

yunseul·2024년 7월 12일

스로틀링이란 ?

시스템의 자원이 과도하게 사용되는 것을 방지하고, 안정성 및 성능을 일정하게 유지되도록 사용량을 제한하는 것 입니다.

대표적인 예시로는 PC, 노트북, 모바일 기기의 CPU, GPU 등의 성능을 낮추거나, 전원을 차단하여 기기와 배터리의 수명을 관리하는 것이 있습니다.

스로틀링의 종류

CPU 스로틀링

설명 : CPU, GPU 사용량을 제한하여 과열을 방지하고 전력 소비를 줄이는 방법

사용 목적

  • 시스템 전체 성능 유지
  • 중요한 작업의 원활한 수행 보장
  • 특정 프로세스의 과도한 자원 사용 방지

사용 예시

  • 운영 체제에서 특정 애플리케이션의 CPU 사용률을 50%로 제한
  • 서버에서 백그라운드 작업의 CPU ****사용률을 조절

기대 효과

  • CPU 온도를 일정 수준 이하로 유지하여 과열로 인한 성능 저하 및 하드웨어 손상을 방지
  • 전력 소비를 줄여 부품고 배터리 수명 관리
  • 시스템의 안정성 향상

네트워크 스로틀링

설명 : 네트워크 트래픽을 제한하여 대역폭을 관리하고 네트워크 혼잡을 방지하는 방법

사용 목적

  • 네트워크 자원의 공정한 분배
  • 네트워크 안정성 유지
  • 특정 사용자 또는 애플리케이션의 과도한 대역폭 사용 방지

사용 예시

  • ISP가 특정 사용자의 월간 데이터 사용량을 초과할 경우 속도를 제한
  • 기업 네트워크에서 비디오 스트리밍 트래픽을 제한하는 경우

기대 효과

  • 네트워크 대역폭을 효율적으로 분배하여 모든 사용자가 원활하게 인터넷을 사용 가능
  • 특정 사용자의 과도한 데이터 사용으로 인한 네트워크 혼잡을 방지
  • 네트워크 성능을 최적화하여 서비스 품질(QoS)을 유지

API 스로틀링

설명 : API 요청 수를 제한하여 서버의 과부하를 방지하는 방법

사용 목적

  • API 서버의 성능 유지
  • 공정한 API 사용 보장
  • 악의적인 요청 또는 과도한 요청으로 인한 서비스 중단 방지

사용 예시

  • 특정 클라이언트가 초당 10회 이상의 API 호출을 하지 못하도록 제한
  • 일일 API 호출 횟수를 제한

기대 효과

  • 과도한 API 요청으로 인한 서버 과부하를 방지하여 서버의 안정성 향상
  • 모든 사용자가 공정하게 API를 사용할 수 있도록 자원을 분배
  • 서버의 성능을 최적화하여 빠른 응답 시간을 제공

디스크 스로틀링

설명 : 디스크 입출력 작업의 속도를 제한하여 디스크 사용량을 관리하는 방법

사용 목적

  • 디스크 성능 저하 방지
  • 디스크 자원의 공정한 분배
  • 중요한 작업이 원활히 수행될 수 있도록 보장

사용 예시

  • 데이터베이스 서버에서 대량의 백그라운드 데이터 처리 작업이 실행
  • 디스크 I/O 속도를 제한하여 실시간 ****트랜잭션 성능을 유지하는 경우

알고리즘 종류

Leaky Bucket

물이 새는 바가지를 뜻하는 알고리즘의 이름처럼, 아래의 구멍을 통해서 떨어지는 물은 request 되는 것이고, 바가지의 용량을 넘어서 흘러 넘치는 것은 request 되지 않는 것 입니다.

장점

  • 불규칙한 트래픽을 일정한 속도로 변환
  • 네트워크 대역폭을 초과하지 않도록 관리

단점

  • 버켓이 가득 차는 경우에는 패킷이 손실될 수 있음
  • 버켓에 패킷이 많을수록, 패킷이 전송되기까지의 시간이 길어짐

Token Bucket

양동이 안에 토큰을 넣는다는 뜻으로, 일정 시간을 간격으로 양동이 안에 토큰이 생성 되고, 요청이 들어오면 토큰이 있는지 확인하여 요청을 처리 합니다.

장점

  • 버스트 트래픽(짧은 시간 동안의 급격한 트래픽 증가)을 허용하면서도 평균 대역폭을 제어
  • 트래픽을 부드럽게 조절하여 네트워크 관리
  • 특정 서비스에 대해 일정한 품질을 보장 가능

단점

  • 버킷의 크기가 제한되어 있으므로 버스트 트래픽이 큰 경우, 토큰이 빠르게 소진되어 트래픽이 제한
  • 토큰이 부족한 경우, 토큰이 생성되기 전까지 패킷이 전송되기까지의 시간이 길어짐
  • 상대적으로 복잡하여 구현 및 설정의 어려움

Leaky Bucket vs Token Bucket

Leaky BucketToken Bucket
트래픽 제어 방식- 일정한 속도로 패킷을 전송- 토큰이 있는 경우에만 트래픽을 전송할 수 있음
- 트래픽 버스트를 허용하지 않음- 버스트 트래픽 허용
- 과도한 트래픽은 버려짐- 토큰이 부족할 경우, 트래픽이 지연되거나 버려짐
유연성- 상대적으로, 덜 유연함- 상대적으로, 더 유연함
- 일정한 트래픽 전송 속도를 유지 가능- 트래픽의 일시적인 증가를 허용 가능
사용 목적- 네트워크 트래픽을 일정하게 유지하고, 네트워크 혼잡을 방지하는 데 주로 사용- 평균 대역폭을 유지하면서도 버스트 트래픽을 허용하는 데 주로 사용

참고 자료

What Is CPU Throttling And How To Enable Or Disable It On Windows

ISP Throttling Your Internet Connection? Test and Find Out - Speedify

[Rate Limit - step 1] Rate Limit이란? (소개, Throttling, 구현시 주의사항 등)

profile
새로운 것을 시도하고 도전하는 것을 좋아하는 Engineer 입니다..

0개의 댓글