snapshot.diff.ratio memfile baseline is path-dependent (template vs last-snapshot) — misleads skip/no-op analysis
メンテナーはふだん 2 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 68/100
- issue の種類
- ドキュメント
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- go, prometheus
調査の方向性
sandbox.goから始め、applyInPlaceExportUnionと、orchestrator.sandbox.snapshot.diff.ratioおよび.bytesのスナップショット差分メトリクスの定義をたどってください。in-placeのチェックポイントと破棄経路のチェックポイントで、memfileのベースラインがどう異なるかを確認し、その違いをメトリクスの説明に記載するか、ベースライン属性を追加してください。ユーザーがテンプレートのベースラインと最後のスナップショットのベースラインを区別できれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Summary
orchestrator.sandbox.snapshot.diff.ratio / .bytes for file_type=memfile are measured against different baselines depending on the checkpoint path, which makes the memory ratio easy to misread as "how much changed this pause."
Detail
- In-place checkpoint: the memory export advances a cumulative baseline (
applyInPlaceExportUnion,sandbox.go), so the diff is roughly "since the last in-place checkpoint." - Destroy-path pause (the common autopause / pause→resume-fresh path): the memory diff is parented on the ORIGINAL template, not the previous snapshot. The in-code comment says it outright:
"In-place checkpoints parent every diff on the ORIGINAL template header ... Only the in-place path advances the baseline — a destroyed sandbox has no next interval."
So on the destroy path the memfile diff reflects the resume working set (pages faulted/written since the template loaded), not the change since the last snapshot. A genuine no-op pause still reports a large memfile dirty ratio.
Impact
Anyone using snapshot.diff.ratio{file_type=memfile} to gauge "did memory change this pause" (e.g. to size a skip-unchanged / fs-only-downgrade opportunity) will over-count memory change on the destroy path. The rootfs dimension is a true diff and is not affected.
Suggestion
Either (a) add a baseline ∈ {template, last_snapshot} attribute to the diff metrics so dashboards can separate the two, or (b) document the path-dependent baseline in the metric description. No behavior change.
Context: surfaced while measuring the no-op-pause rate for a possible skip-unchanged feature (see the change_footprint metric PR). On a synthetic dev workload the memfile dirty sat in a stable ~115-134 MB band on every pause regardless of work — the template-baseline artifact, not real per-pause churn.
- 主要言語
- Go
- スター
- 1.8k
- フォーク
- 503
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
e2b-dev/runtime のほかの issue
-
orchestrator: NFS-cache "cache path is not set" WARN logged on every build/launch instead of once対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 2 日以内に返信
-
client-proxy: WARN "invalid host" spam from unroutable bare-IP Host requests (external probes)対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 2 日以内に返信
-
api: autoPause default is declared in the spec and in a Go constant with no test keeping them in sync対応中かも @AdaAibaby が 6 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
メンテナーはふだん 2 日以内に返信
-
[Bug]: flock() on a mounted volume hangs forever (mount is missing `nolock`)対応中かも @AdaAibaby が 58 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
メンテナーはふだん 2 日以内に返信
-
sandbox cache: StartRemoving state transition not broadcast, all allocations see stale Running state再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
メンテナーはふだん 2 日以内に返信
e2b-dev/runtime の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
masahitojp/mariamem#108 ·
メンテナーはふだん 1 日以内に返信
-
[Bug] Pod detail shows CPU usage ten times too high, and throws on decimal memory suffixes対応中かも @RaphaelFakhri が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
メンテナーはふだん 11 日以内に返信
-
tsuru_app_cname and tsuru_app_router don't handle removal outside terraform対応中かも @lbarrosby が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
-
contributor-friendly good-first-issue lang:go
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
irbis-sh/zen-desktop#870 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信