python / python/cpython

`_remote_debugging`: `RemoteUnwinder(..., jit=True)`

オープン
#149,762 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

extension-modules topic-JIT topic-profiling type-feature
主要言語
Python
スター
77.2k
フォーク
35.9k
PR マージ指標
PR 指標を取得中

説明

Feature or enhancement

Proposal:

:)

The idea here is to expose JIT internals a bit more in the Tachyon profiler.

The questions that could be answered trivially:

  • Is JIT actually used? How often?
  • Which executor is hot?
  • What change made the largest difference (diff_flamegraph), in terms of % spent in JIT? Per line?

A bit harder:

  • Which UOPs actually eat time?
  • Which stensils are good?
  • What guards or deopts are bad?
  • What is the trace shape?

The very minimal change that I'm thinking about here is just adding --jit flag (active for --jsonl and maybe for --live but it's a catnip), and adding JitInfo to ThreadInfo.

That's how it could look:

JitInfo(
  executor_id,
  flags
)

This will requires extending debug offsets, obviously.

We could potentially expose native_pc, native_offset, uop_index, exit_index etc. The question would be how to expose metadata for it without balooning JitInfo, and how far we can get without blocking and native unwinding. :)

I'm pretty much open to any other ideas.

There will be definitely some performance impact (more VM reads), but hidden behind the --enable-experimental-jit flag should be bearable, and we could be more playful, going back and forth.

If you think it makes sense, I'd be willing to take a shot, but this will take multiple PRs.

Has this already been discussed elsewhere?

No response given

Links to previous discussion of this feature:

No response

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

まず _remote_debuggingRemoteUnwinder(..., jit=True)、および既存の ThreadInfo のフローを追跡します。--jsonl と場合によっては --live に対する提案された --jit の動作を比較し、その後、デバッグオフセットがどのように処理されているかを調べます。--enable-experimental-jit の背後で JitInfo とそのメタデータを公開する範囲を確定し、パフォーマンスへの影響を考慮できれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
python
領域
devtools, performance
issue の種類
機能追加
難易度
5/5
見積もり時間
1週間以上
活発さ
静か
明瞭さ
説明が足りない
初心者へのやさしさ
25/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。