반응형
🕒 지연 시간 (Latency)
- 정의: 하나의 작업을 완료하는 데 걸리는 시간 (단위: 시간)
- 목표: 개별 작업이 빠르게 완료되도록 최적화
🔧 멀티스레드 환경에서의 고려 사항
- 스레드 수 결정
- 일반적으로 CPU의 코어 수에 맞춰 스레드를 구성하는 것이 가장 효율적
- 각 코어는 동시에 하나의 스레드를 처리할 수 있으므로 병행 처리가 가능
- 작업 분할과 병합 비용
- 작업을 여러 개로 분할 후, 다시 병합하는 과정에서 오버헤드가 발생할 수 있음
- 분할/병합의 비용이 지연 시간보다 커지면 오히려 성능 저하
- Context Switching 비용
- 스레드 수가 코어 수를 초과하면 스케줄링에 따라 스레드가 번갈아 실행
- 이 과정에서 문맥 교환(Context Switch) 발생 → 지연 시간 증가 및 CPU 효율 저하
- 작은 애플리케이션의 경우
- 단순하거나 작업량이 적다면 굳이 멀티스레드를 사용하지 않아도 됨
- 오히려 싱글스레드 환경이 더 효율적인 경우도 존재
📦 처리량 (Throughput)
- 정의: 일정 시간 동안 처리한 전체 작업량 (단위: 작업 수/시간)
- 목표: 주어진 시간 동안 가능한 많은 작업을 완료하도록 최적화
✅ 정리 요약
항목설명
Latency | 개별 작업이 완료되는 시간, 지연을 최소화하는 것이 목적 |
Throughput | 단위 시간당 처리하는 작업량, 전체 성능 향상이 목적 |
스레드 수 결정 | 보통 코어 수에 맞게 설정 |
Context Switching | 스레드가 많을수록 발생 가능, 지연 시간 증가 원인 |
작업 분할 고려 | 병합 비용까지 포함해 전체 효율 고려해야 함 |
작은 앱 | 멀티스레드가 항상 정답은 아님, 오히려 오버헤드로 느려질 수 있음 |
반응형
'강의 자료 > 고성능을 강조한 Java 멀티스레딩, 병행성 및 병렬 실행 프로그래밍' 카테고리의 다른 글
섹션 3 : 스레딩 기초 (스레드 연결) (1) | 2025.05.18 |
---|---|
섹션 3: 스레딩 기초 - 스레드 조정 (0) | 2025.05.18 |
멀티스레드를 활용한 금고 해킹 시뮬레이션 (자바 구현) (2) | 2025.05.18 |
섹션 2: 스레딩 기초 - 스레드 생성 (스레드의 기능 + 스레드 상속) (2) | 2025.05.18 |
색션 1 : 개요 (프로세스, 쓰레드, 멀티프로세스 vs 멀티쓰레드) (0) | 2025.05.17 |