Reason for ZEND_JIT_COUNTER_INIT set to 32531?

php.internals

Su, Tao

4 years ago
Hi Internal, I am not sure this is a correct mail list for asking source code related question. If not, I am sorry. Appreciate you guys' help. I am reading PHP8 JIT related source code and found that zend_jit.h has a magic definition ZEND_JIT_COUNTER_INIT as 32531 which I do not quite understand how this number was chosen and why? Anybody can provide some historic information? #define ZEND_JIT_COUNTER_INIT 32531 A code example using this definition (looks like the 2nd parameter computes into a fixed number if hot_func is set by php.ini) ZEND_OPCODE_TAIL_CALL_EX(zend_jit_trace_counter_helper, ((ZEND_JIT_COUNTER_INIT + JIT_G(hot_func) - 1) / JIT_G(hot_func))); ======================================= Tony Su (Su, Tao) make a 'lazy' programmer diligently with efficiency

Dmitry Stogov

4 years ago
This it's my choice. This number is common for all JIT counters (hot_loop, hot_func, hot_return). It's value was selected to provide the best precision when different counters have different thresholds. Unfortunately, I can't remember the exact equations or logic I used at that time. Thanks. Dmitry. On Thu, Jan 13, 2022 at 1:01 PM Su, Tao <tao.su@intel.com> wrote:

Su, Tao

4 years ago
Thanks Dmitry for the information. With a few debug sessions, I found that 32531 is working well for any thresholds, and is also a big prime number :-). -----Original Message----- From: Dmitry Stogov <dmitrystogov@gmail.com> Sent: Monday, January 17, 2022 1:37 PM To: Su, Tao <tao.su@intel.com> Cc: PHP internals <internals@lists.php.net> Subject: Re: [PHP-DEV] Reason for ZEND_JIT_COUNTER_INIT set to 32531? This it's my choice. This number is common for all JIT counters (hot_loop, hot_func, hot_return). It's value was selected to provide the best precision when different counters have different thresholds. Unfortunately, I can't remember the exact equations or logic I used at that time. Thanks. Dmitry. On Thu, Jan 13, 2022 at 1:01 PM Su, Tao <tao.su@intel.com> wrote:

Dmitry Stogov

4 years ago
Oh, probably this is just the biggest prime number that fits into a signed 16-bit number :) On Mon, Jan 17, 2022 at 10:49 AM Su, Tao <tao.su@intel.com> wrote:

Larry Garfield

4 years ago
On Mon, Jan 17, 2022, at 6:12 AM, Dmitry Stogov wrote:
> Oh, probably this is just the biggest prime number that fits into a signed > 16-bit number :)
Seems like the sort of thing that should be documented inline. (Also, why it needs to be a prime number.) --Larry Garfield

Su, Tao

4 years ago
Interesting! I would like to dig deeper or ask google for more information. I had an impression that I once read a paper about this kind of magic number, but not sure where it was from. @Dmitry Stogov<mailto:dmitrystogov@gmail.com> With your permission, if I found anything, I would like to add a few comments into the source code file for records. From: Dmitry Stogov <dmitrystogov@gmail.com> Sent: Monday, January 17, 2022 8:12 PM To: Su, Tao <tao.su@intel.com> Cc: PHP internals <internals@lists.php.net> Subject: Re: [PHP-DEV] Reason for ZEND_JIT_COUNTER_INIT set to 32531? Oh, probably this is just the biggest prime number that fits into a signed 16-bit number :) On Mon, Jan 17, 2022 at 10:49 AM Su, Tao <tao.su@intel.com<mailto:tao.su@intel.com>> wrote: Thanks Dmitry for the information. With a few debug sessions, I found that 32531 is working well for any thresholds, and is also a big prime number :-). -----Original Message----- From: Dmitry Stogov <dmitrystogov@gmail.com<mailto:dmitrystogov@gmail.com>> Sent: Monday, January 17, 2022 1:37 PM To: Su, Tao <tao.su@intel.com<mailto:tao.su@intel.com>> Cc: PHP internals <internals@lists.php.net<mailto:internals@lists.php.net>> Subject: Re: [PHP-DEV] Reason for ZEND_JIT_COUNTER_INIT set to 32531? This it's my choice. This number is common for all JIT counters (hot_loop, hot_func, hot_return). It's value was selected to provide the best precision when different counters have different thresholds. Unfortunately, I can't remember the exact equations or logic I used at that time. Thanks. Dmitry. On Thu, Jan 13, 2022 at 1:01 PM Su, Tao <tao.su@intel.com<mailto:tao.su@intel.com>> wrote: