FlowLog: 빠르고 확장 가능한 정적 분석을 위한 Datalog의 재고
요약
FlowLog는 정적 분석을 위해 Datalog 프로그램을 Differential Dataflow 실행 파일로 변환하는 새로운 컴파일러입니다. 기존 엔진의 효율성과 확장성 문제를 해결하며, 벤치마크 결과 실행 시간과 메모리 효율성 면에서 최첨단 엔진을 능가합니다.
핵심 포인트
- Datalog 프로그램을 효율적인 Differential Dataflow로 변환
- 기존 엔진 대비 우수한 실행 시간 및 메모리 효율성 입증
- 증분 평가(Incremental evaluation)를 통한 밀리초 단위 결과 업데이트 지원
- 브라우저 기반 프로파일러를 통한 연산자별 비용 분석 가능
Datalog는 정적 분석기 (static analyzers)를 구축하는 데 널리 사용되지만, 기존 엔진들은 종종 효율성 (efficiency)과 확장성 (extensibility) 사이의 트레이드오프 (tradeoff)를 강요합니다. 실제로 정적 분석은 한 번 실행하고 끝나는 것이 아닙니다. 사용자들은 사실 (facts)을 편집하고, 규칙 (rules)을 조정하며, 병목 현상을 진단합니다. 또한 표준 Datalog를 넘어서는 의미론 (semantics)이 필요한 경우가 많으며, 이러한 작업들은 임시 도구 (ad hoc tooling)나 침해적인 엔진 재작성 (engine rewrites)에 의존하게 만듭니다. 우리는 Soufflé 스타일의 프로그램을 효율적이고 확장 가능한 정적 분석을 위한 Differential Dataflow 실행 파일로 변환하는 Datalog 컴파일러인 FlowLog를 선보입니다. 실제 워크로드에서 파생된 24개의 벤치마크 전반에 걸쳐, FlowLog는 메모리 효율성을 유지하고 더 나은 확장성을 보이면서도 실행 시간 (runtime) 측면에서 최첨단 엔진들을 지속적으로 능가합니다. 시연에서는 참석자들에게 DOOP points-to analysis 과정을 안내합니다. 참석자들은 동일한 프로그램을 일회성 (one-shot) 평가에서 사실을 철회 (retract)하고 밀리초 단위로 결과를 업데이트하는 증분 (incremental) 평가로 전환해 보고, 브라우저 기반 프로파일러 (profiler)에서 연산자별 비용 (per-operator costs)을 조사하여 잘못된 조인 순서 (join order)를 수정하며, Datalog를 넘어서는 의미론을 사용하는 k-core 예제로 이를 확장해 볼 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv Codex (cs.SE)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기