JIT 후크¶
pypyjit 모듈에는 프로그램을 실행하는 동안 PyPy의 JIT가 무엇을 하고 있는지 이해하는 데 도움이 될 수 있는 여러 훅(hook)이 있습니다:
-
dont_trace_here(next_instr, is_being_profiled, pycode)¶
-
get_jitcell_at_key(next_instr, is_being_profiled, pycode)¶
-
get_stats_asmmemmgr()¶ JIT 백엔드가 현재 사용 중인 원시 메모리(raw memory)를 (total_memory_allocated, memory_in_use) 쌍으로 반환합니다.
-
residual_call(callable, *args, **keywords)¶ 테스트용입니다. callable(…)을 호출하지만, JIT가 그 호출을 따라가지 못하게 합니다.
-
set_compile_hook(callable, operations=True)¶ 루프가 컴파일될 때마다 호출될 컴파일링 훅을 설정합니다.
호출 가능 객체(callable)는
pypyjit.JitLoopInfo객체와 함께 호출됩니다. 자세한 내용은 해당 문서를 참조하십시오.JIT 훅(hook)은 재진입(reentrant)이 불가능하다는 점에 유의합니다. 이는 JIT 훅 내부의 코드가 그 자체로 JIT화(JIT-compiled)되어 있다면 해당 코드는 컴파일되지만, 그 코드에 대해서는 JIT 훅이 호출되지 않는다는 것을 의미합니다.
operations=False인 경우, 오퍼레이션 목록을 사용할 수 없습니다. 훅이 매우 가벼워야 할 때 유용합니다.
-
set_abort_hook(hook)¶ 어떤 이유로든 트레이싱이 중단될 때마다 호출될 훅(콜러블)을 설정합니다.
훅은 다음 시그니처로 호출됩니다:
hook(jitdriver_name, greenkey, reason, oplist)Reason는 문자열이며, 다른 인자들의 의미는 JitLoopInfo 객체의 속성과 동일합니다
-
set_trace_too_long_hook(hook)¶ 트레이스가 너무 길어서 트레이싱을 중단할 때마다 호출될 훅(callable)을 설정합니다.
이 훅(hook)은 다음과 같은 시그니처로 호출됩니다:
hook(jitdriver_name, greenkey)
-
enable_debug()¶ get_stats_snapshot를 위한 디버깅 카운터 기록을 시작합니다현재 비활성화되어 있습니다.
-
disable_debug()¶ get_stats_snapshot에 대한 디버깅 카운터 기록 중지현재비활성화되어있습니다.
-
get_stats_snapshot()¶ 특정 시점의 JIT 상태를 가져옵니다. 이는 즉시(eager) 실행된다는 점에 유의하십시오 - 속성 접근은 지연(lazy)되지 않으므로, 새로운 통계가 필요하면 이 함수를 다시 호출해야 합니다. 더 많은 정보를 얻으려면
enable_debug를 호출하고 싶을 수 있습니다.JitInfoSnapshot의 인스턴스를 반환합니다.
-
class
JitInfoSnapshot¶ 현재 스냅샷을 설명하는 클래스입니다. 사용 가능한 속성:
counters- 내부 JIT 정수 카운터counter_times- 내부 JIT 부동소수점 카운터로, 특히 TRACING과 JIT BACKEND에서 소요된 시간을 나타냅니다.loop_run_times는 루프가 실행된 횟수를 세는 카운터이며,enable_debug가 호출된 경우에만 작동합니다.
-
class
JitLoopInfo¶ 컴파일된 루프에 대한 정보를 담고 있는 클래스입니다. 사용 가능한 속성:
operations- 요청된 경우 연산(operation) 목록jitdriver_name- 이 루프와 연관된 jitdriver의 이름greenkey- 루프가 컴파일된 지점을 나타내는 키(예: 코드 위치, is_being_profiled, 파이썬 jitdriver의 pycode 튜플)loop_no- 루프 일련번호bridge_no- fail descr의 idtype- “entry bridge”, “loop” 또는 “bridge”asmaddr- 어셈블러가 위치한 원시 메모리의 주소asmlen- 어셈블러가 연결된 원시 메모리의 길이