Summary report
출처: 문서
본문
요약 보고서
각 테스트 실행이 끝나면 OpenSearch Benchmark가 서비스 시간, 처리량, 지연 시간 등 여러 지표를 담은 요약 보고서를 출력해요. 이 지표들은 선택한 워크로드가 벤치마크 대상 OpenSearch 클러스터에서 어떻게 수행됐는지를 보여줘요.
출력 예시
다음 예시는 전형적인 요약 보고서를 보여줘요:
------------------------------------------------------
_______ __ _____
/ ____(_)___ ____ _/ / / ___/_________ ________
/ /_ / / __ \/ __ `/ / \__ \/ ___/ __ \/ ___/ _ \
/ __/ / / / / / /_/ / / ___/ / /__/ /_/ / / / __/
/_/ /_/_/ /_/\__,_/_/ /____/\___/\____/_/ \___/
------------------------------------------------------
| Metric | Task | Value | Unit |
|---------------------------------------------------------------:|-------------------------------------------:|------------:|-------:|
| Cumulative indexing time of primary shards | | 0.02655 | min |
| Min cumulative indexing time across primary shards | | 0 | min |
| Median cumulative indexing time across primary shards | | 0.00176667 | min |
| Max cumulative indexing time across primary shards | | 0.0140333 | min |
| Cumulative merge time of primary shards | | 0.0102333 | min |
| Store size | | 0.000485923 | GB |
| Segment count | | 32 | |
| Min Throughput | index | 3008.97 | docs/s |
| Mean Throughput | index | 3008.97 | docs/s |
| Median Throughput | index | 3008.97 | docs/s |
| Max Throughput | index | 3008.97 | docs/s |
| 50th percentile latency | index | 351.059 | ms |
| 100th percentile latency | index | 365.058 | ms |
| 50th percentile service time | index | 351.059 | ms |
| 100th percentile service time | index | 365.058 | ms |
| error rate | index | 0 | % |
| Min Throughput | match_all | 36.09 | ops/s |
| Mean Throughput | match_all | 36.09 | ops/s |
| Median Throughput | match_all | 36.09 | ops/s |
| Max Throughput | match_all | 36.09 | ops/s |
| 100th percentile latency | match_all | 35.9822 | ms |
| 100th percentile service time | match_all | 7.93048 | ms |
| error rate | match_all | 0 | % |
| ... | ... | ... | ... |
클러스터 고유의 지표는 index 작업 라인부터 시작해요. 예를 들면:
- 클러스터가 얼마나 많은 부하를 감당할 수 있는지 평가하려면,
index작업 지표가 워크로드 실행 중 수집된 문서 수와 수집 오류율을 보여줘요. - 쿼리 지연 시간과 서비스 시간을 평가하려면,
match_all과term작업이 초당 수행된 쿼리 연산 수, 측정 가능한 쿼리 지연 시간, 쿼리 연산 오류율을 보여줘요.
보고서에 어떤 값이 표시되는지는 --show-in-results 플래그에 따라 달라요. 자세한 내용은 결과 저장을 참고하세요.
결과 저장
결과는 기본적으로 메모리에 저장돼요. 메모리에 저장되는 경우, 가장 최근 워크로드 테스트의 test_run_id를 이름으로 하여 ~/.benchmark/benchmarks/test-runs/<test_run_id>/에 기록돼요.
테스트를 실행하는 동안 다음 플래그들을 사용해 결과 저장 방식을 사용자 지정할 수 있어요:
--results-file: 요약 보고서를 기록할 파일 경로예요.--results-format: 요약의 출력 형식이에요.markdown또는csv를 사용할 수 있어요. 기본값은markdown이에요.--show-in-results: 게시되는 보고서에 어떤 값이 표시될지 지정해요.available,all-percentiles, 또는all을 사용할 수 있어요. 기본값은available이에요.--user-tag: 실행과 함께 메타데이터로 저장되는 키-값 쌍이에요(예:intention:baseline-ticket-12345). 지표를 외부 스토리지에 저장할 때 유용해요.
결과를 test-runs 디렉터리 외부에 저장하려면 외부 메트릭 데이터 스토어를 구성하세요. 야간에 게시되는 결과는 OpenSearch Benchmark 야간 테스트 대시보드를 참고하세요.
지표 참조
다음 지표들이 요약 보고서에 포함돼요.
프라이머리 샤드의 누적 인덱싱 시간
해당 지표 키: indexing_total_time
Index Stats API가 보고하는 인덱싱에 사용된 누적 시간이에요. 이는 벽시계 시간(wall-clock time)이 아니라는 점에 유의하세요. 예를 들어 M개의 인덱싱 스레드가 N분 동안 실행됐다면 N분이 아닌 M * N분을 보고해요.
프라이머리 샤드 전체의 누적 인덱싱 시간
해당 지표 키: indexing_total_time (속성: per-shard)
Index Stats API가 보고하는 프라이머리 샤드 전체에서 인덱싱에 사용된 누적 시간의 최솟값, 중앙값, 최댓값이에요.
프라이머리 샤드의 누적 인덱싱 스로틀 시간
해당 지표 키: indexing_throttle_time
Index Stats API가 보고하는, 인덱싱이 스로틀링된 누적 시간이에요. 이는 벽시계 시간이 아니라는 점에 유의하세요. 예를 들어 M개의 인덱싱 스레드가 N분 동안 실행됐다면 N분이 아닌 M * N분을 보고해요.
프라이머리 샤드 전체의 누적 인덱싱 스로틀 시간
해당 지표 키: indexing_throttle_time (속성: per-shard)
Index Stats API가 보고하는 프라이머리 샤드 전체에서 인덱싱이 스로틀링된 누적 시간의 최솟값, 중앙값, 최댓값이에요.
프라이머리 샤드의 누적 병합 시간
해당 지표 키: merges_total_time
index stats API가 보고하는 프라이머리 샤드 병합의 누적 실행 시간이에요. 이는 벽시계 시간이 아니라는 점에 유의하세요.
프라이머리 샤드의 누적 병합 횟수
해당 지표 키: merges_total_count
Index Stats API의 _all/primaries 아래에 보고되는 프라이머리 샤드 병합의 누적 횟수예요.
프라이머리 샤드 전체의 누적 병합 시간
해당 지표 키: merges_total_time (속성: per-shard)
Index Stats API가 보고하는 프라이머리 샤드 전체 병합 누적 시간의 최솟값, 중앙값, 최댓값이에요.
프라이머리 샤드의 누적 리프레시 시간
해당 지표 키: refresh_total_time
Index Stats API가 보고하는 프라이머리 샤드 인덱스 리프레시에 사용된 누적 시간이에요. 이는 벽시계 시간이 아니라는 점에 유의하세요.
프라이머리 샤드의 누적 리프레시 횟수
해당 지표 키: refresh_total_count
Index Stats API의 _all/primaries 아래에 보고되는 프라이머리 샤드 리프레시의 누적 횟수예요.
프라이머리 샤드 전체의 누적 리프레시 시간
해당 지표 키: refresh_total_time (속성: per-shard)
Index Stats API가 보고하는 프라이머리 샤드 전체 인덱스 리프레시 누적 시간의 최솟값, 중앙값, 최댓값이에요.
프라이머리 샤드의 누적 플러시 시간
해당 지표 키: flush_total_time
Index Stats API가 보고하는 프라이머리 샤드 인덱스 플러시에 사용된 누적 시간이에요. 이는 벽시계 시간이 아니라는 점에 유의하세요.
프라이머리 샤드의 누적 플러시 횟수
해당 지표 키: flush_total_count
Index Stats API의 _all/primaries 아래에 보고되는 프라이머리 샤드 플러시의 누적 횟수예요.
프라이머리 샤드 전체의 누적 플러시 시간
해당 지표 키: flush_total_time (속성: per-shard)
Index Stats API가 보고하는 프라이머리 샤드 전체 인덱스 플러시 시간의 최솟값, 중앙값, 최댓값이에요.
프라이머리 샤드의 누적 병합 스로틀 시간
해당 지표 키: merges_total_throttled_time
Index Stats API가 보고하는, 병합 내에서 스로틀링된 누적 시간이에요. 이는 벽시계 시간이 아니라는 점에 유의하세요.
프라이머리 샤드 전체의 누적 병합 스로틀 시간
해당 지표 키: merges_total_throttled_time (속성: per-shard)
Index Stats API가 보고하는 프라이머리 샤드 전체에서 병합이 스로틀링된 누적 시간의 최솟값, 중앙값, 최댓값이에요.
ML 처리 시간
해당 지표 키: ml_processing_time
머신 러닝(ML) 작업이 단일 버킷을 처리하는 데 소요한 시간의 최솟값, 평균, 중앙값, 최댓값(밀리초 단위)이에요.
총 young gen GC 시간
해당 지표 키: node_total_young_gen_gc_time
Node Stats API가 보고하는 클러스터 전체에서 young 세대(generation, gen) 가비지 컬렉터(GC)의 총 실행 시간이에요.
총 young gen GC 횟수
해당 지표 키: node_total_young_gen_gc_count
Node Stats API가 보고하는 클러스터 전체에서 young gen GC의 총 발생 횟수예요.
총 old gen GC 시간
해당 지표 키: node_total_old_gen_gc_time
Node Stats API가 보고하는 클러스터 전체에서 old gen GC의 총 실행 시간이에요.
총 old gen GC 횟수
해당 지표 키: node_total_old_gen_gc_count
Node Stats API가 보고하는 클러스터 전체에서 old gen GC의 총 발생 횟수예요.
총 ZGC cycles GC 시간
해당 지표 키: node_total_zgc_cycles_gc_count
Node Stats API가 보고하는 클러스터 전체에서 Z 가비지 컬렉터(ZGC)가 수행한 가비지 컬렉션의 총 횟수예요.
총 ZGC pauses GC 시간
해당 지표 키: node_total_zgc_pauses_gc_time
Node Stats API가 보고하는 클러스터 전체에서 ZGC가 stop-the-world 일시정지에 소요한 총 시간이에요.
총 ZGC pauses GC 횟수
해당 지표 키: node_total_zgc_pauses_gc_count
Node Stats API가 보고하는 클러스터 전체에서 ZGC가 수행한 stop-the-world 일시정지의 총 횟수예요.
스토어 크기
해당 지표 키: store_size_in_bytes
Index Stats API가 보고하는 인덱스 크기(바이트, translog 제외)예요.
Translog 크기
해당 지표 키: translog_size_in_bytes
Index Stats API가 보고하는 translog 크기(바이트)예요.
X에 사용된 힙
해당 지표 키: segments_*_in_bytes
Index Stats API가 보고하는 해당 항목에 사용된 바이트 수예요. 항목은 다음 중 하나일 수 있어요:
- Doc values
- Terms
- Norms
- Points
- Stored fields
세그먼트 개수
해당 지표 키: segments_count
Index Stats API가 보고하는 세그먼트의 총 개수예요.
총 ingest pipeline 개수
해당 지표 키: ingest_pipeline_cluster_count
race 기간 동안 클러스터 내 모든 노드가 수집한 문서의 총 개수예요.
총 ingest pipeline 시간
해당 지표 키: ingest_pipeline_cluster_time
race 기간 동안 클러스터 내 모든 노드가 ingest 문서 전처리에 소요한 총 시간(밀리초)이에요.
총 ingest pipeline 실패
해당 지표 키: ingest_pipeline_cluster_failed
race 기간 동안 클러스터 내 모든 노드에서 실패한 ingest 연산의 총 개수예요.
처리량
해당 지표 키: throughput
각 작업의 최솟값, 평균, 중앙값, 최댓값 처리량을 보고해요.
초당 특정 시간 안에 OpenSearch가 수행할 수 있는 연산 수예요. 보고서에는 각 작업의 최솟값, 평균, 중앙값, 최댓값 처리량이 포함돼요.
지연 시간
해당 지표 키: latency
요청이 제출된 시점부터 완전한 응답을 받을 때까지의 시간이에요. OpenSearch가 처리하기 전까지 요청이 대기하는 대기 시간도 포함돼요. OpenSearch는 각 작업에 대해 여러 백분위수를 보고해요. 어떤 백분위수가 표시되는지는 지연 시간 구간 동안 OpenSearch가 캡처할 수 있는 요청 수에 따라 달라요.
서비스 시간
해당 지표 키: service_time
요청을 보낸 시점부터 그에 해당하는 응답을 받을 때까지의 시간이에요. 대기 시간은 포함되지 않아요. 많은 부하 테스트 도구가 이 지표를 _latency_라고 부르지만, 실제로는 같지 않아요. OpenSearch는 각 작업에 대해 여러 백분위수를 보고해요. 어떤 백분위수가 표시되는지는 지연 시간 구간 동안 OpenSearch가 캡처할 수 있는 요청 수에 따라 달라요.
처리 시간
처리 시간은 OpenSearch Benchmark 구성 파일에서 output.processingtime 설정이 true로 지정된 경우에만 보고돼요.
{: note.}
해당 지표 키: processing_time
요청 처리가 시작된 시점부터 완전한 응답을 회수할 때까지의 시간이에요. service_time과 달리 이 지표는 OpenSearch의 클라이언트 측 처리 오버헤드를 포함해요. service_time과 processing_time의 차이가 클수록 클라이언트의 오버헤드가 크다는 뜻이에요. 처리 목표에 따라 이 차이는 조사가 필요한 잠재적인 클라이언트 측 병목 현상을 가리킬 수 있어요.
오류율
해당 지표 키: service_time. 각 service_time 레코드에는 meta.success 플래그가 있어요.
전체 응답 수에 대한 오류 응답의 비율이에요. Python OpenSearch 클라이언트가 던지는 예외는 모두 오류로 간주돼요. 예를 들어 HTTP 응답 코드 4xx, 5xx, 네트워크 오류(network unreachable) 등이 있어요. OpenSearch와 OpenSearch Benchmark 로그를 확인하고 벤치마크를 다시 실행하여 근본 원인을 조사할 수 있어요.
디스크 사용량
해당 지표 키: disk_usage_total
지표 메타데이터: index와 field
단일 필드가 디스크에서 사용하는 총 바이트 수예요. 총합이 0이더라도 Disk Usage API가 반환하는 각 필드에 대해 기록돼요.