Hello list,
We have currently migrating part of our production appl from Unix/Pseries to
zLinux/zEC12.
We have ported microfocus cobol programs (previously running on PSeries) on our
zEC12/zLinux plateform and after comparing CPU times on z and on P, it turns
out that overall cpu times (java and oracle) are much better on the Z but it
also turns out that the cpu times for OpenCobol are far worse (although time
elapse treatment remain best on Z).
As OpenCobol generates a C program from the Cobol source code we investigated
on th C side. After some days of analysis it seems that on zLinux, the C calls
to DLLs are more expensive on z than on x86 or PSeries architecture.
The application of different optimization options (-O3, march, mtune) does not
change the results. Finally, a C program that does not calls to external
modules is much more efficient on zLinux.
Here is our test program with libgmp :
#include <stdio.h>
#include <stdlib.h>
#include <gmp.h>
int main(void)
{
mpz_t x;
mpz_t y;
mpz_t result;
long int i=0;
while (i++<20000000)
{
mpz_init(x);
mpz_init(y);
mpz_init(result);
mpz_set_str(x, "7612058254738945", 10);
mpz_set_str(y, "9263591128439081", 10);
mpz_mul(result, x, y);
mpz_clear(x);
mpz_clear(y);
mpz_clear(result);
}
return EXIT_SUCCESS;
}
It was compiled with gcc testgmp.c -lgmp
and runned by the command time ./a.out to obtain CPU times. the results are the
following :
zLinux ZEC12/5.5 gHz
real 0m8.930s
user 0m8.802s
sys 0m0.006s
linux on x86 HP Blade/2.2gHz
real 0m7.464s
user 0m7.438s
sys 0m0.000s
When we make trace on library calls, zlinx seems better :
zlinux
ltrace -c ./testgmp
% time seconds usecs/call calls function
------ ----------- ----------- --------- --------------------
41.05 95.646614 159 600000 __gmpz_init
29.01 67.588020 112 600000 __gmpz_clear
20.27 47.224456 118 400000 __gmpz_set_str
9.68 22.561771 112 200000 __gmpz_mul
0.00 0.000058 58 1
------ ----------- ----------- --------- --------------------
100.00 233.020919 1800001 total
linux on x86
ltrace -c ./testgmp
% time seconds usecs/call calls function
------ ----------- ----------- --------- --------------------
34.49 153.162784 255 600000 __gmpz_init
32.22 143.106564 238 600000 __gmpz_clear
25.08 111.395971 278 400000 __gmpz_set_str
8.21 36.475142 182 200000 __gmpz_mul
0.00 0.000119 119 1
------ ----------- ----------- --------- --------------------
100.00 444.140580 1800001 total
We also conducted tests on Cobol on different zlinux distributions but the
problem seems to be the same for all z platforms. (Results below: 6m40 for
zLinux and 4m23 for x86).
On our zLinux, the system disk / is on CKD devices, so we also conducted a test
with the / on FCP disk to see if the problem could come from CKD disks. The
results is below: there is an improvement in CPU time (6m15 )but still worst
than on x86.
RHEL 6.5 on zEC12 (with CKD devices for system)
real 7m5.370s
user 6m41.487s
sys 0m1.166s
RHEL 6.5 on zEC12 with FCP devices for the system
real 7m47.700s
user 6m14.521s
sys 0m1.061s
CentOS 6.4 on zEC12
real 11m35.152s
user 6m40.513s
sys 0m1.094s
Debian 7.4 on zEC12
real 16m1.261s
user 6m38.751s
sys 0m1.136s
CentOS 6.4 on x86
[zadmin@QAVTL318041 ~]$ ps -aef | grep TST
zadmin 19327 19317 90 14:54 pts/0 00:04:22 /TSTPAT/bin/cobcrun TSTSEQREW
real 5m25.090s
user 4m21.355s
sys 0m1.647s
We also conducted tests with a recompiled gcc 4.9.1 but results are the same.
We finally used the benchmark tool provided by libgmp on our 3 platerforms and
the results are the following :
RHEL65 zlinux with gmp 4.3.1 : 550.71
RHEL65 x86 with gmp 4.3.1 : 1960.4
Debian 7.4 zLinux with gmp 5.0.5 : 1291.9
Bench results is 2 times better on debian than on REHL (the hardware is the
same and the zVM guest are the same too) and HP blade 2.2GHz is also better
than zEC125.5GHz :-(
It's seems that there is a problem on RHEL65 s390x with libgmp (and maybe
others libs). Does anyone has always seen this problem or as any ideas on how
to solve this problem ?
Best Regards
*****************************************************************************************
Ce message électronique, les éventuels fichiers joints et les informations
qu'il contient, peuvent être couverts par le secret professionnel et sont
exclusivement adressés à son destinataire. Si vous le recevez par erreur, merci
d'en informer l'expéditeur et de le détruire. A ce titre, toute diffusion non
autorisée de ce message, même partielle, sous quelque forme que ce soit, est
interdite et punie par la loi.
En aucun cas, le contenu de ce message ne peut valoir offre ou acceptation ou
engagement de la part de la CNAV.
Les opinions contenues dans ce message sont personnelles à l'émetteur.
Il est de la responsabilité du destinataire de s'assurer que le message et ses
éventuelles pièces jointes ne contiennent pas de virus informatique.
----------------------------------------------------------------------
For LINUX-390 subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO LINUX-390 or visit
http://www.marist.edu/htbin/wlvindex?LINUX-390
----------------------------------------------------------------------
For more information on Linux on System z, visit
http://wiki.linuxvm.org/