gnu: Add sysbench.
* gnu/packages/benchmark.scm (sysbench): New variable.
This commit is contained in:
parent
7be44e8587
commit
c886968bb1
1 changed files with 139 additions and 0 deletions
|
@ -37,19 +37,27 @@
|
||||||
#:use-module (guix build-system gnu)
|
#:use-module (guix build-system gnu)
|
||||||
#:use-module (guix build-system python)
|
#:use-module (guix build-system python)
|
||||||
#:use-module (gnu packages)
|
#:use-module (gnu packages)
|
||||||
|
#:use-module (gnu packages autotools)
|
||||||
|
#:use-module (gnu packages base)
|
||||||
|
#:use-module (gnu packages c)
|
||||||
#:use-module (gnu packages check)
|
#:use-module (gnu packages check)
|
||||||
#:use-module (gnu packages compression)
|
#:use-module (gnu packages compression)
|
||||||
#:use-module (gnu packages kde-frameworks)
|
#:use-module (gnu packages kde-frameworks)
|
||||||
|
#:use-module (gnu packages databases)
|
||||||
|
#:use-module (gnu packages docbook)
|
||||||
#:use-module (gnu packages linux)
|
#:use-module (gnu packages linux)
|
||||||
|
#:use-module (gnu packages lua)
|
||||||
#:use-module (gnu packages maths)
|
#:use-module (gnu packages maths)
|
||||||
#:use-module (gnu packages mpi)
|
#:use-module (gnu packages mpi)
|
||||||
#:use-module (gnu packages opencl)
|
#:use-module (gnu packages opencl)
|
||||||
#:use-module (gnu packages perl)
|
#:use-module (gnu packages perl)
|
||||||
|
#:use-module (gnu packages pkg-config)
|
||||||
#:use-module (gnu packages python)
|
#:use-module (gnu packages python)
|
||||||
#:use-module (gnu packages python-science)
|
#:use-module (gnu packages python-science)
|
||||||
#:use-module (gnu packages python-web)
|
#:use-module (gnu packages python-web)
|
||||||
#:use-module (gnu packages python-xyz)
|
#:use-module (gnu packages python-xyz)
|
||||||
#:use-module (gnu packages qt)
|
#:use-module (gnu packages qt)
|
||||||
|
#:use-module (gnu packages xml)
|
||||||
#:use-module (ice-9 match))
|
#:use-module (ice-9 match))
|
||||||
|
|
||||||
(define-public fio
|
(define-public fio
|
||||||
|
@ -430,3 +438,134 @@ its features are:
|
||||||
@item Report generation.
|
@item Report generation.
|
||||||
@end itemize")
|
@end itemize")
|
||||||
(license license:gpl3+)))
|
(license license:gpl3+)))
|
||||||
|
|
||||||
|
(define-public sysbench
|
||||||
|
(package
|
||||||
|
(name "sysbench")
|
||||||
|
(version "1.0.20")
|
||||||
|
(source (origin
|
||||||
|
(method git-fetch)
|
||||||
|
(uri (git-reference
|
||||||
|
(url "https://github.com/akopytov/sysbench")
|
||||||
|
(commit version)))
|
||||||
|
(file-name (git-file-name name version))
|
||||||
|
(modules '((guix build utils)))
|
||||||
|
(snippet '(begin
|
||||||
|
;; Ensure no bundled libraries get used.
|
||||||
|
(delete-file-recursively "third_party")
|
||||||
|
(substitute* "configure.ac"
|
||||||
|
(("^third_party/.*")
|
||||||
|
""))
|
||||||
|
(substitute* "Makefile.am"
|
||||||
|
((".*(LUAJIT|CK)_DIR =.*")
|
||||||
|
""))))
|
||||||
|
(sha256
|
||||||
|
(base32
|
||||||
|
"1sanvl2a52ff4shj62nw395zzgdgywplqvwip74ky8q7s6qjf5qy"))))
|
||||||
|
(build-system gnu-build-system)
|
||||||
|
(arguments
|
||||||
|
(list
|
||||||
|
#:configure-flags #~(list "--with-pgsql"
|
||||||
|
;; Explicitly specify the library directory of
|
||||||
|
;; MySQL, otherwise `mysql_config` gets
|
||||||
|
;; consulted and adds unnecessary link
|
||||||
|
;; directives.
|
||||||
|
(string-append "--with-mysql-libs="
|
||||||
|
#$(this-package-input "mysql")
|
||||||
|
"/lib")
|
||||||
|
"--with-system-luajit"
|
||||||
|
"--with-system-ck"
|
||||||
|
;; If we let the build tool select the most
|
||||||
|
;; optimal compiler architecture flag, the
|
||||||
|
;; build is not reproducible.
|
||||||
|
"--without-gcc-arch")
|
||||||
|
#:phases #~(modify-phases %standard-phases
|
||||||
|
(add-after 'unpack 'patch-test-runner
|
||||||
|
(lambda _
|
||||||
|
(substitute* "tests/test_run.sh"
|
||||||
|
(("/bin/bash")
|
||||||
|
(which "bash"))
|
||||||
|
;; Do not attempt to invoke the cram command via
|
||||||
|
;; Python, as on Guix it is a shell script (wrapper).
|
||||||
|
(("\\$\\(command -v cram\\)")
|
||||||
|
"-m cram"))))
|
||||||
|
(add-after 'unpack 'disable-test-installation
|
||||||
|
(lambda _
|
||||||
|
(substitute* "tests/Makefile.am"
|
||||||
|
(("install-data-local")
|
||||||
|
"do-not-install-data-local")
|
||||||
|
(("^test_SCRIPTS.*")
|
||||||
|
""))))
|
||||||
|
(add-after 'unpack 'fix-docbook
|
||||||
|
(lambda* (#:key native-inputs inputs #:allow-other-keys)
|
||||||
|
(substitute* "m4/ax_check_docbook.m4"
|
||||||
|
(("DOCBOOK_ROOT=.*" all)
|
||||||
|
(string-append
|
||||||
|
all "XML_CATALOG="
|
||||||
|
(search-input-file (or native-inputs inputs)
|
||||||
|
"xml/dtd/docbook/catalog.xml")
|
||||||
|
"\n")))
|
||||||
|
(substitute* "doc/xsl/xhtml.xsl"
|
||||||
|
(("http://docbook.sourceforge.net/release/xsl\
|
||||||
|
/current/xhtml/docbook.xsl")
|
||||||
|
(search-input-file
|
||||||
|
(or native-inputs inputs)
|
||||||
|
(string-append "xml/xsl/docbook-xsl-"
|
||||||
|
#$(package-version docbook-xsl)
|
||||||
|
"/xhtml/docbook.xsl"))))
|
||||||
|
(substitute* "doc/xsl/xhtml-chunk.xsl"
|
||||||
|
(("http://docbook.sourceforge.net/release/xsl\
|
||||||
|
/current/xhtml/chunk.xsl")
|
||||||
|
(search-input-file
|
||||||
|
(or native-inputs inputs)
|
||||||
|
(string-append "xml/xsl/docbook-xsl-"
|
||||||
|
#$(package-version docbook-xsl)
|
||||||
|
"/xhtml/chunk.xsl")))))))))
|
||||||
|
(native-inputs (list autoconf
|
||||||
|
automake
|
||||||
|
libtool
|
||||||
|
pkg-config
|
||||||
|
python-cram
|
||||||
|
python-wrapper
|
||||||
|
which
|
||||||
|
;; For documentation
|
||||||
|
libxml2 ;for XML_CATALOG_FILES
|
||||||
|
libxslt
|
||||||
|
docbook-xml
|
||||||
|
docbook-xsl))
|
||||||
|
(inputs (list ck libaio luajit mysql postgresql))
|
||||||
|
(home-page "https://github.com/akopytov/sysbench/")
|
||||||
|
(synopsis "Scriptable database and system performance benchmark")
|
||||||
|
(description "@command{sysbench} is a scriptable multi-threaded benchmark
|
||||||
|
tool based on LuaJIT. It is most frequently used for database benchmarks, but
|
||||||
|
can also be used to create arbitrarily complex workloads that do not involve a
|
||||||
|
database server. @command{sysbench} comes with the following bundled
|
||||||
|
benchmarks:
|
||||||
|
@table @file
|
||||||
|
@item oltp_*.lua
|
||||||
|
A collection of OLTP-like database benchmarks.
|
||||||
|
@item fileio
|
||||||
|
A filesystem-level benchmark.
|
||||||
|
@item cpu
|
||||||
|
A simple CPU benchmark.
|
||||||
|
@item memory
|
||||||
|
A memory access benchmark.
|
||||||
|
@item threads
|
||||||
|
A thread-based scheduler benchmark.
|
||||||
|
@item mutex
|
||||||
|
A POSIX mutex benchmark.
|
||||||
|
@end table
|
||||||
|
It includes features such as:
|
||||||
|
@itemize
|
||||||
|
@item
|
||||||
|
Extensive statistics about rate and latency is available, including latency
|
||||||
|
percentiles and histograms.
|
||||||
|
@item
|
||||||
|
Low overhead even with thousands of concurrent threads. @command{sysbench} is
|
||||||
|
capable of generating and tracking hundreds of millions of events per second.
|
||||||
|
@item
|
||||||
|
New benchmarks can be easily created by implementing pre-defined hooks in
|
||||||
|
user-provided Lua scripts.
|
||||||
|
@item
|
||||||
|
@end itemize")
|
||||||
|
(license license:gpl2+)))
|
||||||
|
|
Reference in a new issue