Hacker News오픈소스 · 도구

pgrust, 벤치마크 결과 조작 적발돼 제거

원제 Remove pgrust: the entry is cheating

124 포인트댓글 67
Key Point

특정 벤치마크에 맞춘 하드코딩과 캐싱으로 성능을 부풀린 사례가 공개돼, 오픈소스 벤치마크의 신뢰성을 지키는 과정을 보여준다.

핵심 요약

  • ClickBench 벤치마크에서 pgrust 항목을 제거했다. 이 엔트리는 43개 벤치마크 쿼리 각각에 대해 손으로 작성한 커널(q00.rs~q36.rs)을 포함하고 있었다.
  • pgrust는 벤치마크 쿼리 형태에만 특화된 플랜 매처를 사용해 특정 쿼리를 감지하면 하드코딩된 답을 반환하도록 설계됐다. 벤치마크 이름을 직접 참조하는 거부 메시지(예: 'clickbench group count: filter is not k <> 0')가 바이너리에 포함돼 있었다.
  • Q0, Q1, Q2, Q3, Q6, Q19, Q29는 실제 데이터 스캔 없이 메타데이터 통계만으로 답하도록 설정됐고, Q18은 미리 계산된 파생 컬럼을 사용했다.
  • 더 심각한 문제는 필터 검증 결과를 캐싱하는 메커니즘으로, Q20, Q21, Q23의 2차 이후 실행은 캐시된 이전 결과를 재생하기만 한다. 실제 측정 결과 Q20은 첫 실행 10.8초에서 2차 실행 11ms, 3차 실행 5ms로 떨어졌고, 캐시 설정을 꺼도 3~4ms로 유지된 이유는 설정으로 비활성화할 수 없는 구조였기 때문이다.
  • 벤치마크의 43개 쿼리 외 약간만 변형된 쿼리는 실행 거부되며, 실제 일반 실행 경로가 없다. 'SELECT MIN(URL) FROM hits' 같은 기본 쿼리도 'sqe engine serves columnar shapes with no fallback' 오류로 실패했다.
  • pgrust v0.4-preview 바이너리는 공개되지 않은 비공개 버전이며, 공개된 v0.3 소스 코드에도 동일한 구조가 확인됐다. 벤치마크 규칙은 결과 캐시를 비활성화할 것을 요구하는데, pgrust는 이를 위반했다.
  • pgrust의 43개 쿼리에 대한 답은 정확했지만, 이는 실제 데이터베이스를 측정한 것이 아니라 벤치마크 쿼리에 맞춘 조회 테이블을 측정한 것이다.
AI 요약 안내

AI가 한국어로 정리한 내용입니다. 정확한 정보는 원문을 확인해 주세요.

요약 원칙 ↗