리눅스 커널 스케줄러(EEVDF vs CFS) 성능 비교 프로젝트
Scheduler/
├── CFS/ # CFS (Completely Fair Scheduler) 벤치마크
│ ├── scripts/ # 벤치마크 실행 스크립트
│ ├── configs/ # 커널 파라미터 설정 파일
│ ├── results/ # 벤치마크 결과
│ └── README.md # CFS 상세 가이드
│
└── EEVDF/ # EEVDF (Earliest Eligible Virtual Deadline First) 벤치마크
├── scripts/ # 벤치마크 실행 스크립트 (CFS와 동일 구조)
├── configs/ # 커널 파라미터 설정 파일
├── results/ # 벤치마크 결과
└── README.md # EEVDF 상세 가이드
- 목적: 레이턴시 측정
- 메트릭: Wakeup Latency, Request Latency, RPS
- 테스트: 4, 6, 8 스레드
- 목적: 시스템 오버헤드 측정
- 메트릭: Context switches, CPU migrations, Page faults
- 테스트: 4, 6, 8 그룹
- CPU-Bound
- I/O-Bound
- 혼합 워크로드
- 고부하 컨텍스트 스위칭
- TCP 연결 시간: p50/p90/p99 분포 측정
- 양방향 동시 전송: 송신/수신 처리량
- 소형 패킷 (64B): 작은 패킷 처리 성능
- CPU 부하 + 네트워크: stress-ng 병행 시 처리량
cd CFS
# 기본 벤치마크
./scripts/run_all_cfs.sh --basic
# 네트워크 벤치마크
./scripts/run_network_advanced.sh
# 최종 리포트 생성
./scripts/generate_final_report.shcd EEVDF
./scripts/run_all_eevdf.sh --basic# CFS
cd CFS
./scripts/run_with_config.sh configs/low_latency.conf
# EEVDF
cd EEVDF
./scripts/run_with_config.sh configs/low_latency.conf각 스케줄러별로 동일한 벤치마크를 실행한 후, 결과를 비교 분석합니다:
-
레이턴시 비교
- CFS:
CFS/results/schbench/schbench_results.txt - EEVDF:
EEVDF/results/schbench/schbench_results.txt
- CFS:
-
오버헤드 비교
- CFS:
CFS/results/hackbench/hackbench_results.txt - EEVDF:
EEVDF/results/hackbench/hackbench_results.txt
- CFS:
-
워크로드 시나리오 비교
- CFS:
CFS/results/workload_scenarios/workload_results.txt - EEVDF:
EEVDF/results/workload_scenarios/workload_results.txt
- CFS:
-
커널 파라미터 영향 비교
- CFS:
CFS/results/config_comparison/comparison_results.txt - EEVDF:
EEVDF/results/config_comparison/comparison_results.txt
- CFS:
-
네트워크 성능 비교 (CFS)
- 네트워크 벤치마크:
CFS/results/network/network_advanced_comparison.txt - 설정별 네트워크 성능:
CFS/results/network/network_advanced_configs_*.txt
- 네트워크 벤치마크:
- Wakeup Latency (p50, p90, p99, p99.9)
- Request Latency (p50, p90, p99, p99.9)
- RPS (Requests Per Second)
- Context switches
- CPU migrations
- Page faults
- Task clock
- 실행 시간
- 평균 RPS
- Tail latency (p99, p99.9)
- TCP 연결 시간 (RTT p50, p90, p99)
- 양방향 전송 처리량 (Mbps)
- 소형 패킷 처리량 (64B, Mbps)
- CPU 부하 시 네트워크 처리량 (Mbps)
- CFS VM: Linux Kernel 5.15 이상
- EEVDF VM: Linux Kernel 6.6 이상
- 벤치마크: schbench, hackbench (rt-tests)
- 측정 도구: perf stat, /usr/bin/time
- CFS/README.md: CFS 벤치마크 상세 가이드
- EEVDF/README.md: EEVDF 벤치마크 상세 가이드
- CFS/configs/README.md: 커널 파라미터 설명
- EEVDF/configs/README.md: 커널 파라미터 설명
- CFS/docs/network_benchmark_handover.md: 네트워크 벤치마크 인수인계서
MIT License
버그 리포트, 기능 제안, PR 환영합니다.