Skip to content

[P2] per-protocolボイラープレートを共通化する #33

@thawk105

Description

@thawk105

親イシュー: #29
依存: #30 (P0), #32 (P3)

概要

result.cc が10プロトコルに全コピー存在し、違いはグローバル変数名(SiloResultCicadaResult 等)のみ。ワークロードエントリポイント(~100行)もスレッド生成・バリア・時間ループ・集計ロジックがプロトコル間でほぼ共通。common/runner.hh テンプレートを導入することで、各ワークロードエントリを数行に削減できる。

やること

  • common/result.hh / common/result.cc に共通 Result 型と集計関数を集約し、per-protocolの SiloResult 等を共通ベクターに統合する
  • common/runner.hh にスレッド生成・バリア・時間ループ・集計をテンプレート化する
// silo/ycsb_silo.cc のイメージ
#include "common/runner.hh"
#include "silo/silo_tx.hh"
int main(int argc, char** argv) {
    return ccbench::run<silo::TxExecutor, ccbench::YcsbWorkload>(argc, argv);
}
  • プロトコル固有のセットアップ(SiloのWAL初期化、Cicadaの pre_reserve_version 等)をper-protocolポリシー/トレイトに封じ込める
  • 全10プロトコルの result.cc*_<protocol>.cc を新テンプレートで書き直す

完了条件

  • 各プロトコルの result.cc が削除されること
  • 各ワークロードエントリポイントが数行になること
  • 全プロトコルのビルドが通ること
  • CI が通ること

備考

  • P5(プロトコル生成スクリプト)の前提となるタスク

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions