tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

PHP performance on Xen domU with mulitple vcpu



Hello

On NetBSD-10.0/amd64 Xen domU with two vcpu PHP's uniqid() performance
is terrible. Theses two tests are on the same dom0, with same NetBSD
versions in the domU:

With a single vcpu:
$ time php -r 'for ($i = 0; $i < 1000000; $i++) uniqid();'
    2.94s real     0.77s user     1.71s system

With two vcpu (note this is only 100 iterations):
$ time php -r 'for ($i = 0; $i < 100; $i++) uniqid();'  
   19.10s real     6.13s user     6.39s system

This php function loops around gettimeofday() until the microsecond
changes:
  do {
    (void)gettimeofday((struct timeval *) &tv, (struct timezone *) NULL);
  } while (tv.tv_sec == prev_tv.tv_sec && tv.tv_usec == prev_tv.tv_usec);
   
This does not look wise, but why is it so slow? ktrace/kdump -R
gives a hint: most gettimeofday() calls last less than a microsecond,
but there are exceptions:
 29062  29062 php83    0.000000000 CALL  __gettimeofday50(0x7f7fffc2f420,0)
 29062  29062 php83    4.820000000 RET   __gettimeofday50 0

Or this:
 29062  29062 php83    0.000000000 CALL  __gettimeofday50(0x7f7fffc2f420,0)
 29062  29062 php83    0.000000000 RET   __gettimeofday50 0
 29062  29062 php83    0.360000000 CALL  __gettimeofday50(0x7f7fffc2f420,0)

Or even this, which I do not understand. 
 29062  29062 php83    0.000000000 CALL  __gettimeofday50(0x7f7fffc2f420,0)
 29062  29062 php83    4.240000000 CALL  __gettimeofday50(0x7f7fffc2f420,0)
 29062  29062 php83    0.000000000 RET   __gettimeofday50 0

Any idea what can explains such numbers?

-- 
Emmanuel Dreyfus
manu%netbsd.org@localhost


Home | Main Index | Thread Index | Old Index