[Bloat] Progress with latency-under-load tool
Kim Hawtin
kim at hawtin.net.au
Mon Mar 21 18:13:48 PDT 2011
Hi Jonathan,
On 21/03/11 17:13, Jonathan Morton wrote:
> On 21 Mar, 2011, at 6:09 am, Daniel Brooks wrote:
>> Oof. I guess the loopback driver could use some work as well :)
>
> Either that or there is some strange timing effect going on that I
should be aware of. I'm going to try to run some more tests to see if I
can get the smoothness and responsiveness values up, but if any of you
notice something bizarre...
>
> Be aware however that both smoothness and responsiveness are taken as
the absolute worst cases observed. If there is a bell curve, you're
going to be looking at outliers. Perhaps I should calculate something
like a 7-number summary to sanity-check it.
>
dtaht pointed me in the direction of loadlatency.c to get my head around
the issues. its been a while since i've done a lot of C, but had a poke
around ...
It builds fine on Debian;
$ uname -a
Linux greyarea 2.6.32-5-amd64 #1 SMP Wed Jan 12 05:14:59 UTC 2011
x86_64 GNU/Linux
but fails to link on RHEL5;
$ uname -a
Linux zima.services.adelaide.edu.au 2.6.18-194.11.3.el5 #1 SMP Mon Aug
23 15:51:38 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
I have included the build and the YUM package info below.
dtaht suggested that the packages libblas and libgsp are used only for
RNG? Is there another/better RNG that could be used that less system
dependant?
Perhaps this one as it can be distributed directyly;
http://ccan.ozlabs.org/info/isaac.html
regards,
Kim
$ gcc -O3 loadlatency.c -o loadlatency -lgsl -lblas -lpthread
loadlatency.c: In function ‘pingpong’:
loadlatency.c:140: warning: passing argument 2 of ‘send’ discards
qualifiers from pointer target type
loadlatency.c:145: warning: passing argument 2 of ‘recv’ discards
qualifiers from pointer target type
loadlatency.c: In function ‘spew_conn’:
loadlatency.c:346: warning: cast from pointer to integer of different size
loadlatency.c: In function ‘chug_conn’:
loadlatency.c:357: warning: cast from pointer to integer of different size
loadlatency.c: In function ‘pingpong_conn’:
loadlatency.c:368: warning: cast from pointer to integer of different size
loadlatency.c: In function ‘client’:
loadlatency.c:424: warning: cast to pointer from integer of different size
loadlatency.c:457: warning: cast to pointer from integer of different size
loadlatency.c:471: warning: passing argument 2 of ‘pthread_join’ from
incompatible pointer type
loadlatency.c: In function ‘server_conn’:
loadlatency.c:514: warning: cast from pointer to integer of different size
loadlatency.c: In function ‘server’:
loadlatency.c:614: warning: cast to pointer from integer of different size
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_ctrmv'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_zswap'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_zsymm'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_cgeru'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_sgemm'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_ctrsv'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_sgemv'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_srotg'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_zgemm'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_cdotu_sub'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_dznrm2'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_ddot'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_csymm'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_cher2k'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_zdotu_sub'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_sdot'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_sdsdot'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_cgerc'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_scnrm2'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_ctrmm'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_sscal'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_strmm'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_zcopy'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_dsyrk'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_cherk'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_zherk'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_zher'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_ztrmv'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_drotmg'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_dswap'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_scopy'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_scasum'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_zscal'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_drotg'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_zdotc_sub'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_cscal'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_caxpy'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_zsyr2k'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_ssyr2k'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_csyr2k'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_ztrsm'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_ctrsm'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_ssymm'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_cdotc_sub'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_zher2k'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_saxpy'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_idamax'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_snrm2'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_dsdot'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_cher'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_dger'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_cher2'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_dzasum'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_dsyr2'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_ssyrk'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_strmv'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_dgemv'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_cgemm'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_dasum'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_dsymv'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_srotm'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_sswap'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_dtrmv'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_isamax'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_zhemv'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_zaxpy'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_dcopy'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_sasum'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_dsyr'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_strsm'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_drot'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_ztrsv'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_izamax'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_ssymv'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_chemm'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_zgeru'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_dtrsv'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_sger'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_srot'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_dsymm'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_ztrmm'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_zdscal'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_zher2'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_ssyr'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_dtrmm'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_zgerc'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_csscal'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_dsyr2k'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_chemv'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_dnrm2'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_drotm'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_icamax'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_zgemv'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_zhemm'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_cgemv'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_ssyr2'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_strsv'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_dscal'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_dgemm'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_srotmg'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_dtrsm'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_ccopy'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_zsyrk'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_cswap'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_daxpy'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libgsl.so:
undefined reference to `cblas_csyrk'
collect2: ld returned 1 exit status
this is the YUM package info;
# yum info gsl-devel.i386 gsl-devel.x86_64 gsl-static.x86_64
blas-devel.i386 blas-devel.x86_64
Loaded plugins: rhnplugin, security
Installed Packages
Name : blas-devel
Arch : i386
Version : 3.0
Release : 37.el5
Size : 456 k
Repo : installed
Summary : LAPACK development libraries
URL : http://www.netlib.org/lapack/
License : Freely distributable
Description: BLAS development libraries for applications that link
statically.
Name : blas-devel
Arch : x86_64
Version : 3.0
Release : 37.el5
Size : 580 k
Repo : installed
Summary : LAPACK development libraries
URL : http://www.netlib.org/lapack/
License : Freely distributable
Description: BLAS development libraries for applications that link
statically.
Name : gsl-devel
Arch : i386
Version : 1.13
Release : 3.el5
Size : 1.2 M
Repo : installed
Summary : Static libraries and header files for GSL development.
URL : http://www.gnu.org/software/gsl/
License : GPLv3 and GFDL and BSD
Description: The gsl-devel package contains the header files necessary for
: developing programs using the GSL (GNU Scientific Library).
Name : gsl-devel
Arch : x86_64
Version : 1.13
Release : 3.el5
Size : 1.2 M
Repo : installed
Summary : Static libraries and header files for GSL development.
URL : http://www.gnu.org/software/gsl/
License : GPLv3 and GFDL and BSD
Description: The gsl-devel package contains the header files necessary for
: developing programs using the GSL (GNU Scientific Library).
Name : gsl-static
Arch : x86_64
Version : 1.13
Release : 3.el5
Size : 4.3 M
Repo : installed
Summary : Static libraries of the GSL package
URL : http://www.gnu.org/software/gsl/
License : GPLv3 and GFDL and BSD
Description: The gsl-static package includes static libraries of GSL.
More information about the Bloat
mailing list