【问题标题】:How to disable JIT compilation with HHVM?如何使用 HHVM 禁用 JIT 编译?
【发布时间】:2016-04-19 00:17:45
【问题描述】:

我正在与hhvm 3.6.1 合作--请原谅我对 HHVM 的内部结构以及它如何执行 JIT 的有限理解。

我正在尝试抑制 HHVM 中的 JIT 编译并以解释模式运行 php。现在我猜你可以将php.ini 中的热身请求设置为任意高的数字,例如:

 hhvm.eval.jit_warmup_requests = 1000

不过,我想看看是否有人知道jit_enabled=false 之类的设置

我这样做的原因是我看到在启用远程调试的情况下运行 xdebug 时出现异常行为(看似随机的 seg 错误、与断点不匹配的文件),并且想要将 JIT 排除在外——如果这有任何意义的话一切都与 HHVM 的功能有关。

【问题讨论】:

  • 你试过hhvm.jit = false
  • 这似乎不起作用
  • @tlens 我也试过hhvm.eval.jit = false,这似乎没有效果。

标签: php xdebug jit hhvm


【解决方案1】:

https://github.com/facebook/hhvm/wiki/INI-Settings 声称 INI 表单确实是 hhvm.jit -- 不确定这是否准确,但命令行选项肯定是 -v Eval.Jit=false。 (我很好奇您是如何确定 JIT 仍处于启用状态而该选项不起作用的?)

也就是说,xdebug 被认为可以工作,而且 FB 的团队(以及几乎所有使用情况,FB 内部和外部)都在启用 JIT 的情况下运行。信不信由你,在这一点上,它实际上可能比解释器得到更好的支持。

如果您在使用 xdebug 时遇到问题,您应该提出问题:https://github.com/facebook/hhvm/issues

【讨论】:

  • 我正在尝试在提交错误之前收集尽可能多的信息。我一定是误解了如何检测 JIT 何时运行。目前,我正在查看日志,发出 11 个请求,并在第 12 个到第 15 个请求中观察 [] Finished singleJitRequest 1[] Finished singleJitRequest 2 ...我可能错误地认为这意味着 JIT 正在进行。无论我设置hhvm.jit=falsehhvm.eval.jit=false 还是设置任意数量的预热请求,都会发生这种情况。
【解决方案2】:

为此苦苦挣扎了好几个小时。

要禁用 JIT,您应该在 server.ini 中查找“hhvm.jit = 1”,而不是在 php.ini 中。

【讨论】:

    猜你喜欢
    • 2022-10-14
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 2023-03-29
    相关资源
    最近更新 更多