PHP8开启jit

作者赵文明

3月 10, 2023
php

前提是开启opcache,配置好它。

jit默认没有开启,并且配置文件里没有相关配置项目,需要手动添加,主要添加以下两个配置:

opcache.jit string|int

针对经典用法,此选项接受以下四个字符串值之一:

  • disable:完全禁用,无法在运行时启用。
  • off:禁用,但可以在运行时启用。
  • tracing/on:使用追踪 JIT。默认启用并推荐给大部分用户。
  • function:使用函数 JIT。

针对高级用法,此选项接受 4 位整数 CRTO,其中的位分别是:C(特定 CPU 优化 flag)

  • 0:禁用特定 CPU 优化。
  • 1:如果 CPU 支持则启用 AVX。

R(寄存器分配)

  • 0:不执行寄存器分配。
  • 1:执行局部域寄存器分配。
  • 2:执行全局寄存器分配。

T(触发)

  • 0: 在脚本加载时编译所有函数。
  • 1: 在第一次执行时编译函数。
  • 2:第一次请求时分析函数,然后编译最热门函数。
  • 3:动态分析和编译热门函数。
  • 4:目前未使用。
  • 5:使用追踪 JIT。动态分析和为热门代码段编译追踪。

O(优化级别)

  • 0:不 JIT。
  • 1:最小 JIT(调用标准 VM 处理程序)。
  • 2:内联 VM 处理程序。
  • 3:使用类型推断。
  • 4:使用调用图。
  • 5:优化整个脚本。

"tracing" 模式对应 CRTO = 1254"function" 模式对应 CRTO = 1205opcache.jit_buffer_size int

为编译 JIT 代码保留的共享内存量。值 0 表示禁用 JIT。当使用 int 时, 其值以字节来衡量。

通过php -i,查看是否开启,差不多以下配置:

opcache.jit => 1255 => 1255
opcache.jit_bisect_limit => 0 => 0
opcache.jit_blacklist_root_trace => 16 => 16
opcache.jit_blacklist_side_trace => 8 => 8
opcache.jit_buffer_size => 128M => 128M
opcache.jit_debug => 0 => 0
opcache.jit_hot_func => 127 => 127
opcache.jit_hot_loop => 64 => 64
opcache.jit_hot_return => 8 => 8
opcache.jit_hot_side_exit => 8 => 8
opcache.jit_max_exit_counters => 8192 => 8192
opcache.jit_max_loop_unrolls => 8 => 8
opcache.jit_max_polymorphic_calls => 2 => 2
opcache.jit_max_recursive_calls => 2 => 2
opcache.jit_max_recursive_returns => 2 => 2
opcache.jit_max_root_traces => 1024 => 1024
opcache.jit_max_side_traces => 128 => 128
opcache.jit_prof_threshold => 0.005 => 0.005

作者 赵文明

发表回复