developers
Threads by month
- ----- 2025 -----
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- 6826 discussions
[Maria-developers] Updated (by Knielsen): Enable the use of libstdc++ in MariaDB (63)
by worklog-noreply@askmonty.org 09 Mar '10
by worklog-noreply@askmonty.org 09 Mar '10
09 Mar '10
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Enable the use of libstdc++ in MariaDB
CREATION DATE..: Wed, 11 Nov 2009, 13:19
SUPERVISOR.....: Monty
IMPLEMENTOR....: Knielsen
COPIES TO......:
CATEGORY.......: Server-Sprint
TASK ID........: 63 (http://askmonty.org/worklog/?tid=63)
VERSION........: Server-5.2
STATUS.........: Complete
PRIORITY.......: 60
WORKED HOURS...: 4
ESTIMATE.......: 10 (hours remain)
ORIG. ESTIMATE.: 10
PROGRESS NOTES:
-=-=(Knielsen - Tue, 09 Mar 2010, 14:34)=-=-
Category updated.
--- /tmp/wklog.63.old.19705 2010-03-09 14:34:47.000000000 +0000
+++ /tmp/wklog.63.new.19705 2010-03-09 14:34:47.000000000 +0000
@@ -1 +1 @@
-Server-BackLog
+Server-Sprint
-=-=(Knielsen - Tue, 09 Mar 2010, 14:34)=-=-
Status updated.
--- /tmp/wklog.63.old.19705 2010-03-09 14:34:47.000000000 +0000
+++ /tmp/wklog.63.new.19705 2010-03-09 14:34:47.000000000 +0000
@@ -1 +1 @@
-Assigned
+Complete
-=-=(Knielsen - Tue, 09 Mar 2010, 14:34)=-=-
High Level Description modified.
--- /tmp/wklog.63.old.19695 2010-03-09 14:34:21.000000000 +0000
+++ /tmp/wklog.63.new.19695 2010-03-09 14:34:21.000000000 +0000
@@ -12,3 +12,11 @@
except that it might introduce a problem for bintar packages with an external
dependency on libstdc++.
+The conclusion on this worklog is that the solution is just to build with
+CXX=g++. This solves the problem, and after research is considered to have no
+serious bad consequences.
+
+Since this is a future build/packaging issue, there is nothing to be actually
+done in the code for this worklog. Once we merge an actual plugin into the main
+source tree we may need to update the BUILD/* scripts to default to CXX=g++ if
+needed.
-=-=(Knielsen - Sat, 27 Feb 2010, 16:02)=-=-
Status updated.
--- /tmp/wklog.63.old.30948 2010-02-27 16:02:20.000000000 +0000
+++ /tmp/wklog.63.new.30948 2010-02-27 16:02:20.000000000 +0000
@@ -1 +1 @@
-Un-Assigned
+Assigned
-=-=(Knielsen - Thu, 14 Jan 2010, 13:46)=-=-
Research and updated description
Worked 4 hours and estimate 10 hours remain (original estimate increased by 14 hours).
-=-=(Knielsen - Thu, 14 Jan 2010, 13:45)=-=-
High-Level Specification modified.
--- /tmp/wklog.63.old.13967 2010-01-14 11:45:49.000000000 +0000
+++ /tmp/wklog.63.new.13967 2010-01-14 11:45:49.000000000 +0000
@@ -1 +1,37 @@
+I did some investigation into this.
+
+The simple way to do this is to simply use g++ to link C++ objects. So this
+issue is really restricted to GCC compilation where we by default prefer to
+link with gcc even for C++ code. So this means building with
+
+ CXX=g++
+
+The consequences of doing this for the binaries is the addition of two
+additional run-time .so dependencies: libstdc++.so and libgcc_s.so.
+
+It still needs to be investigated if these additional dependencies are a
+problem for binary tarball packages, or if the ABI for those libraries are now
+as stable as libc.so.
+
+The libgcc_s.so is needed as a dependency to support exceptions between
+different object files, as they need to use the same code for stack unwinding.
+libstdc++.so is of course needed for access to C++ runtime.
+
+I researched into the possibility to instead link only specific plugins with
+g++, and continue to link the rest of the server with gcc. Unfortunately, this
+seems really hard to do in a proper way due to the way autotools works. At
+configure time, a script ./libtool is created with hardcoded compiler commands
+derived from $CC and $CXX. This script is then used to do the actual linking
+in Makefiles generated by Automake. I thus did not find a way to change the
+linker command on a per-makefile basis, as libtool is global to the project.
+
+One option would be to use separate configure.in for plugins, but this is
+quite an intrusive change.
+
+My conclusion is that the best way is to start using g++ for linking the
+entire server. This is no problem for binaries made for a specific
+distribution (Ubuntu, Debian, Centos), where the dependencies are handled by
+the package manager. If it is a big problem for binary tarball releases, at
+worst we can build multiple binary tarball releases for the different library
+versions we need to support.
-=-=(Guest - Tue, 12 Jan 2010, 16:26)=-=-
Version updated.
--- /tmp/wklog.63.old.19522 2010-01-12 16:26:23.000000000 +0200
+++ /tmp/wklog.63.new.19522 2010-01-12 16:26:23.000000000 +0200
@@ -1 +1 @@
-Connector/.NET-5.2
+Server-5.2
-=-=(Guest - Tue, 12 Jan 2010, 16:26)=-=-
Category updated.
--- /tmp/wklog.63.old.19506 2010-01-12 16:26:15.000000000 +0200
+++ /tmp/wklog.63.new.19506 2010-01-12 16:26:15.000000000 +0200
@@ -1 +1 @@
-Server-RawIdeaBin
+Server-BackLog
DESCRIPTION:
Enable the use of libstdc++ in MariaDB.
As time goes on, more and more plugins and external code/library will need
linking to libstdc++ for stuff it uses. I have already seen this happen several
times, with extra work needed to integrate things properly.
It would be nice to have a general solution for this so that it is not necessary
to spend time on individual solutions in each case.
It also needs to be considered what the impact of this will be for the server in
terms of binary compatibility, performance etc. I think it should be mostly ok,
except that it might introduce a problem for bintar packages with an external
dependency on libstdc++.
The conclusion on this worklog is that the solution is just to build with
CXX=g++. This solves the problem, and after research is considered to have no
serious bad consequences.
Since this is a future build/packaging issue, there is nothing to be actually
done in the code for this worklog. Once we merge an actual plugin into the main
source tree we may need to update the BUILD/* scripts to default to CXX=g++ if
needed.
HIGH-LEVEL SPECIFICATION:
I did some investigation into this.
The simple way to do this is to simply use g++ to link C++ objects. So this
issue is really restricted to GCC compilation where we by default prefer to
link with gcc even for C++ code. So this means building with
CXX=g++
The consequences of doing this for the binaries is the addition of two
additional run-time .so dependencies: libstdc++.so and libgcc_s.so.
It still needs to be investigated if these additional dependencies are a
problem for binary tarball packages, or if the ABI for those libraries are now
as stable as libc.so.
The libgcc_s.so is needed as a dependency to support exceptions between
different object files, as they need to use the same code for stack unwinding.
libstdc++.so is of course needed for access to C++ runtime.
I researched into the possibility to instead link only specific plugins with
g++, and continue to link the rest of the server with gcc. Unfortunately, this
seems really hard to do in a proper way due to the way autotools works. At
configure time, a script ./libtool is created with hardcoded compiler commands
derived from $CC and $CXX. This script is then used to do the actual linking
in Makefiles generated by Automake. I thus did not find a way to change the
linker command on a per-makefile basis, as libtool is global to the project.
One option would be to use separate configure.in for plugins, but this is
quite an intrusive change.
My conclusion is that the best way is to start using g++ for linking the
entire server. This is no problem for binaries made for a specific
distribution (Ubuntu, Debian, Centos), where the dependencies are handled by
the package manager. If it is a big problem for binary tarball releases, at
worst we can build multiple binary tarball releases for the different library
versions we need to support.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Knielsen): Enable the use of libstdc++ in MariaDB (63)
by worklog-noreply@askmonty.org 09 Mar '10
by worklog-noreply@askmonty.org 09 Mar '10
09 Mar '10
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Enable the use of libstdc++ in MariaDB
CREATION DATE..: Wed, 11 Nov 2009, 13:19
SUPERVISOR.....: Monty
IMPLEMENTOR....: Knielsen
COPIES TO......:
CATEGORY.......: Server-Sprint
TASK ID........: 63 (http://askmonty.org/worklog/?tid=63)
VERSION........: Server-5.2
STATUS.........: Complete
PRIORITY.......: 60
WORKED HOURS...: 4
ESTIMATE.......: 10 (hours remain)
ORIG. ESTIMATE.: 10
PROGRESS NOTES:
-=-=(Knielsen - Tue, 09 Mar 2010, 14:34)=-=-
Category updated.
--- /tmp/wklog.63.old.19705 2010-03-09 14:34:47.000000000 +0000
+++ /tmp/wklog.63.new.19705 2010-03-09 14:34:47.000000000 +0000
@@ -1 +1 @@
-Server-BackLog
+Server-Sprint
-=-=(Knielsen - Tue, 09 Mar 2010, 14:34)=-=-
Status updated.
--- /tmp/wklog.63.old.19705 2010-03-09 14:34:47.000000000 +0000
+++ /tmp/wklog.63.new.19705 2010-03-09 14:34:47.000000000 +0000
@@ -1 +1 @@
-Assigned
+Complete
-=-=(Knielsen - Tue, 09 Mar 2010, 14:34)=-=-
High Level Description modified.
--- /tmp/wklog.63.old.19695 2010-03-09 14:34:21.000000000 +0000
+++ /tmp/wklog.63.new.19695 2010-03-09 14:34:21.000000000 +0000
@@ -12,3 +12,11 @@
except that it might introduce a problem for bintar packages with an external
dependency on libstdc++.
+The conclusion on this worklog is that the solution is just to build with
+CXX=g++. This solves the problem, and after research is considered to have no
+serious bad consequences.
+
+Since this is a future build/packaging issue, there is nothing to be actually
+done in the code for this worklog. Once we merge an actual plugin into the main
+source tree we may need to update the BUILD/* scripts to default to CXX=g++ if
+needed.
-=-=(Knielsen - Sat, 27 Feb 2010, 16:02)=-=-
Status updated.
--- /tmp/wklog.63.old.30948 2010-02-27 16:02:20.000000000 +0000
+++ /tmp/wklog.63.new.30948 2010-02-27 16:02:20.000000000 +0000
@@ -1 +1 @@
-Un-Assigned
+Assigned
-=-=(Knielsen - Thu, 14 Jan 2010, 13:46)=-=-
Research and updated description
Worked 4 hours and estimate 10 hours remain (original estimate increased by 14 hours).
-=-=(Knielsen - Thu, 14 Jan 2010, 13:45)=-=-
High-Level Specification modified.
--- /tmp/wklog.63.old.13967 2010-01-14 11:45:49.000000000 +0000
+++ /tmp/wklog.63.new.13967 2010-01-14 11:45:49.000000000 +0000
@@ -1 +1,37 @@
+I did some investigation into this.
+
+The simple way to do this is to simply use g++ to link C++ objects. So this
+issue is really restricted to GCC compilation where we by default prefer to
+link with gcc even for C++ code. So this means building with
+
+ CXX=g++
+
+The consequences of doing this for the binaries is the addition of two
+additional run-time .so dependencies: libstdc++.so and libgcc_s.so.
+
+It still needs to be investigated if these additional dependencies are a
+problem for binary tarball packages, or if the ABI for those libraries are now
+as stable as libc.so.
+
+The libgcc_s.so is needed as a dependency to support exceptions between
+different object files, as they need to use the same code for stack unwinding.
+libstdc++.so is of course needed for access to C++ runtime.
+
+I researched into the possibility to instead link only specific plugins with
+g++, and continue to link the rest of the server with gcc. Unfortunately, this
+seems really hard to do in a proper way due to the way autotools works. At
+configure time, a script ./libtool is created with hardcoded compiler commands
+derived from $CC and $CXX. This script is then used to do the actual linking
+in Makefiles generated by Automake. I thus did not find a way to change the
+linker command on a per-makefile basis, as libtool is global to the project.
+
+One option would be to use separate configure.in for plugins, but this is
+quite an intrusive change.
+
+My conclusion is that the best way is to start using g++ for linking the
+entire server. This is no problem for binaries made for a specific
+distribution (Ubuntu, Debian, Centos), where the dependencies are handled by
+the package manager. If it is a big problem for binary tarball releases, at
+worst we can build multiple binary tarball releases for the different library
+versions we need to support.
-=-=(Guest - Tue, 12 Jan 2010, 16:26)=-=-
Version updated.
--- /tmp/wklog.63.old.19522 2010-01-12 16:26:23.000000000 +0200
+++ /tmp/wklog.63.new.19522 2010-01-12 16:26:23.000000000 +0200
@@ -1 +1 @@
-Connector/.NET-5.2
+Server-5.2
-=-=(Guest - Tue, 12 Jan 2010, 16:26)=-=-
Category updated.
--- /tmp/wklog.63.old.19506 2010-01-12 16:26:15.000000000 +0200
+++ /tmp/wklog.63.new.19506 2010-01-12 16:26:15.000000000 +0200
@@ -1 +1 @@
-Server-RawIdeaBin
+Server-BackLog
DESCRIPTION:
Enable the use of libstdc++ in MariaDB.
As time goes on, more and more plugins and external code/library will need
linking to libstdc++ for stuff it uses. I have already seen this happen several
times, with extra work needed to integrate things properly.
It would be nice to have a general solution for this so that it is not necessary
to spend time on individual solutions in each case.
It also needs to be considered what the impact of this will be for the server in
terms of binary compatibility, performance etc. I think it should be mostly ok,
except that it might introduce a problem for bintar packages with an external
dependency on libstdc++.
The conclusion on this worklog is that the solution is just to build with
CXX=g++. This solves the problem, and after research is considered to have no
serious bad consequences.
Since this is a future build/packaging issue, there is nothing to be actually
done in the code for this worklog. Once we merge an actual plugin into the main
source tree we may need to update the BUILD/* scripts to default to CXX=g++ if
needed.
HIGH-LEVEL SPECIFICATION:
I did some investigation into this.
The simple way to do this is to simply use g++ to link C++ objects. So this
issue is really restricted to GCC compilation where we by default prefer to
link with gcc even for C++ code. So this means building with
CXX=g++
The consequences of doing this for the binaries is the addition of two
additional run-time .so dependencies: libstdc++.so and libgcc_s.so.
It still needs to be investigated if these additional dependencies are a
problem for binary tarball packages, or if the ABI for those libraries are now
as stable as libc.so.
The libgcc_s.so is needed as a dependency to support exceptions between
different object files, as they need to use the same code for stack unwinding.
libstdc++.so is of course needed for access to C++ runtime.
I researched into the possibility to instead link only specific plugins with
g++, and continue to link the rest of the server with gcc. Unfortunately, this
seems really hard to do in a proper way due to the way autotools works. At
configure time, a script ./libtool is created with hardcoded compiler commands
derived from $CC and $CXX. This script is then used to do the actual linking
in Makefiles generated by Automake. I thus did not find a way to change the
linker command on a per-makefile basis, as libtool is global to the project.
One option would be to use separate configure.in for plugins, but this is
quite an intrusive change.
My conclusion is that the best way is to start using g++ for linking the
entire server. This is no problem for binaries made for a specific
distribution (Ubuntu, Debian, Centos), where the dependencies are handled by
the package manager. If it is a big problem for binary tarball releases, at
worst we can build multiple binary tarball releases for the different library
versions we need to support.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Knielsen): Enable the use of libstdc++ in MariaDB (63)
by worklog-noreply@askmonty.org 09 Mar '10
by worklog-noreply@askmonty.org 09 Mar '10
09 Mar '10
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Enable the use of libstdc++ in MariaDB
CREATION DATE..: Wed, 11 Nov 2009, 13:19
SUPERVISOR.....: Monty
IMPLEMENTOR....: Knielsen
COPIES TO......:
CATEGORY.......: Server-BackLog
TASK ID........: 63 (http://askmonty.org/worklog/?tid=63)
VERSION........: Server-5.2
STATUS.........: Assigned
PRIORITY.......: 60
WORKED HOURS...: 4
ESTIMATE.......: 10 (hours remain)
ORIG. ESTIMATE.: 10
PROGRESS NOTES:
-=-=(Knielsen - Tue, 09 Mar 2010, 14:34)=-=-
High Level Description modified.
--- /tmp/wklog.63.old.19695 2010-03-09 14:34:21.000000000 +0000
+++ /tmp/wklog.63.new.19695 2010-03-09 14:34:21.000000000 +0000
@@ -12,3 +12,11 @@
except that it might introduce a problem for bintar packages with an external
dependency on libstdc++.
+The conclusion on this worklog is that the solution is just to build with
+CXX=g++. This solves the problem, and after research is considered to have no
+serious bad consequences.
+
+Since this is a future build/packaging issue, there is nothing to be actually
+done in the code for this worklog. Once we merge an actual plugin into the main
+source tree we may need to update the BUILD/* scripts to default to CXX=g++ if
+needed.
-=-=(Knielsen - Sat, 27 Feb 2010, 16:02)=-=-
Status updated.
--- /tmp/wklog.63.old.30948 2010-02-27 16:02:20.000000000 +0000
+++ /tmp/wklog.63.new.30948 2010-02-27 16:02:20.000000000 +0000
@@ -1 +1 @@
-Un-Assigned
+Assigned
-=-=(Knielsen - Thu, 14 Jan 2010, 13:46)=-=-
Research and updated description
Worked 4 hours and estimate 10 hours remain (original estimate increased by 14 hours).
-=-=(Knielsen - Thu, 14 Jan 2010, 13:45)=-=-
High-Level Specification modified.
--- /tmp/wklog.63.old.13967 2010-01-14 11:45:49.000000000 +0000
+++ /tmp/wklog.63.new.13967 2010-01-14 11:45:49.000000000 +0000
@@ -1 +1,37 @@
+I did some investigation into this.
+
+The simple way to do this is to simply use g++ to link C++ objects. So this
+issue is really restricted to GCC compilation where we by default prefer to
+link with gcc even for C++ code. So this means building with
+
+ CXX=g++
+
+The consequences of doing this for the binaries is the addition of two
+additional run-time .so dependencies: libstdc++.so and libgcc_s.so.
+
+It still needs to be investigated if these additional dependencies are a
+problem for binary tarball packages, or if the ABI for those libraries are now
+as stable as libc.so.
+
+The libgcc_s.so is needed as a dependency to support exceptions between
+different object files, as they need to use the same code for stack unwinding.
+libstdc++.so is of course needed for access to C++ runtime.
+
+I researched into the possibility to instead link only specific plugins with
+g++, and continue to link the rest of the server with gcc. Unfortunately, this
+seems really hard to do in a proper way due to the way autotools works. At
+configure time, a script ./libtool is created with hardcoded compiler commands
+derived from $CC and $CXX. This script is then used to do the actual linking
+in Makefiles generated by Automake. I thus did not find a way to change the
+linker command on a per-makefile basis, as libtool is global to the project.
+
+One option would be to use separate configure.in for plugins, but this is
+quite an intrusive change.
+
+My conclusion is that the best way is to start using g++ for linking the
+entire server. This is no problem for binaries made for a specific
+distribution (Ubuntu, Debian, Centos), where the dependencies are handled by
+the package manager. If it is a big problem for binary tarball releases, at
+worst we can build multiple binary tarball releases for the different library
+versions we need to support.
-=-=(Guest - Tue, 12 Jan 2010, 16:26)=-=-
Version updated.
--- /tmp/wklog.63.old.19522 2010-01-12 16:26:23.000000000 +0200
+++ /tmp/wklog.63.new.19522 2010-01-12 16:26:23.000000000 +0200
@@ -1 +1 @@
-Connector/.NET-5.2
+Server-5.2
-=-=(Guest - Tue, 12 Jan 2010, 16:26)=-=-
Category updated.
--- /tmp/wklog.63.old.19506 2010-01-12 16:26:15.000000000 +0200
+++ /tmp/wklog.63.new.19506 2010-01-12 16:26:15.000000000 +0200
@@ -1 +1 @@
-Server-RawIdeaBin
+Server-BackLog
DESCRIPTION:
Enable the use of libstdc++ in MariaDB.
As time goes on, more and more plugins and external code/library will need
linking to libstdc++ for stuff it uses. I have already seen this happen several
times, with extra work needed to integrate things properly.
It would be nice to have a general solution for this so that it is not necessary
to spend time on individual solutions in each case.
It also needs to be considered what the impact of this will be for the server in
terms of binary compatibility, performance etc. I think it should be mostly ok,
except that it might introduce a problem for bintar packages with an external
dependency on libstdc++.
The conclusion on this worklog is that the solution is just to build with
CXX=g++. This solves the problem, and after research is considered to have no
serious bad consequences.
Since this is a future build/packaging issue, there is nothing to be actually
done in the code for this worklog. Once we merge an actual plugin into the main
source tree we may need to update the BUILD/* scripts to default to CXX=g++ if
needed.
HIGH-LEVEL SPECIFICATION:
I did some investigation into this.
The simple way to do this is to simply use g++ to link C++ objects. So this
issue is really restricted to GCC compilation where we by default prefer to
link with gcc even for C++ code. So this means building with
CXX=g++
The consequences of doing this for the binaries is the addition of two
additional run-time .so dependencies: libstdc++.so and libgcc_s.so.
It still needs to be investigated if these additional dependencies are a
problem for binary tarball packages, or if the ABI for those libraries are now
as stable as libc.so.
The libgcc_s.so is needed as a dependency to support exceptions between
different object files, as they need to use the same code for stack unwinding.
libstdc++.so is of course needed for access to C++ runtime.
I researched into the possibility to instead link only specific plugins with
g++, and continue to link the rest of the server with gcc. Unfortunately, this
seems really hard to do in a proper way due to the way autotools works. At
configure time, a script ./libtool is created with hardcoded compiler commands
derived from $CC and $CXX. This script is then used to do the actual linking
in Makefiles generated by Automake. I thus did not find a way to change the
linker command on a per-makefile basis, as libtool is global to the project.
One option would be to use separate configure.in for plugins, but this is
quite an intrusive change.
My conclusion is that the best way is to start using g++ for linking the
entire server. This is no problem for binaries made for a specific
distribution (Ubuntu, Debian, Centos), where the dependencies are handled by
the package manager. If it is a big problem for binary tarball releases, at
worst we can build multiple binary tarball releases for the different library
versions we need to support.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Knielsen): Enable the use of libstdc++ in MariaDB (63)
by worklog-noreply@askmonty.org 09 Mar '10
by worklog-noreply@askmonty.org 09 Mar '10
09 Mar '10
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Enable the use of libstdc++ in MariaDB
CREATION DATE..: Wed, 11 Nov 2009, 13:19
SUPERVISOR.....: Monty
IMPLEMENTOR....: Knielsen
COPIES TO......:
CATEGORY.......: Server-BackLog
TASK ID........: 63 (http://askmonty.org/worklog/?tid=63)
VERSION........: Server-5.2
STATUS.........: Assigned
PRIORITY.......: 60
WORKED HOURS...: 4
ESTIMATE.......: 10 (hours remain)
ORIG. ESTIMATE.: 10
PROGRESS NOTES:
-=-=(Knielsen - Tue, 09 Mar 2010, 14:34)=-=-
High Level Description modified.
--- /tmp/wklog.63.old.19695 2010-03-09 14:34:21.000000000 +0000
+++ /tmp/wklog.63.new.19695 2010-03-09 14:34:21.000000000 +0000
@@ -12,3 +12,11 @@
except that it might introduce a problem for bintar packages with an external
dependency on libstdc++.
+The conclusion on this worklog is that the solution is just to build with
+CXX=g++. This solves the problem, and after research is considered to have no
+serious bad consequences.
+
+Since this is a future build/packaging issue, there is nothing to be actually
+done in the code for this worklog. Once we merge an actual plugin into the main
+source tree we may need to update the BUILD/* scripts to default to CXX=g++ if
+needed.
-=-=(Knielsen - Sat, 27 Feb 2010, 16:02)=-=-
Status updated.
--- /tmp/wklog.63.old.30948 2010-02-27 16:02:20.000000000 +0000
+++ /tmp/wklog.63.new.30948 2010-02-27 16:02:20.000000000 +0000
@@ -1 +1 @@
-Un-Assigned
+Assigned
-=-=(Knielsen - Thu, 14 Jan 2010, 13:46)=-=-
Research and updated description
Worked 4 hours and estimate 10 hours remain (original estimate increased by 14 hours).
-=-=(Knielsen - Thu, 14 Jan 2010, 13:45)=-=-
High-Level Specification modified.
--- /tmp/wklog.63.old.13967 2010-01-14 11:45:49.000000000 +0000
+++ /tmp/wklog.63.new.13967 2010-01-14 11:45:49.000000000 +0000
@@ -1 +1,37 @@
+I did some investigation into this.
+
+The simple way to do this is to simply use g++ to link C++ objects. So this
+issue is really restricted to GCC compilation where we by default prefer to
+link with gcc even for C++ code. So this means building with
+
+ CXX=g++
+
+The consequences of doing this for the binaries is the addition of two
+additional run-time .so dependencies: libstdc++.so and libgcc_s.so.
+
+It still needs to be investigated if these additional dependencies are a
+problem for binary tarball packages, or if the ABI for those libraries are now
+as stable as libc.so.
+
+The libgcc_s.so is needed as a dependency to support exceptions between
+different object files, as they need to use the same code for stack unwinding.
+libstdc++.so is of course needed for access to C++ runtime.
+
+I researched into the possibility to instead link only specific plugins with
+g++, and continue to link the rest of the server with gcc. Unfortunately, this
+seems really hard to do in a proper way due to the way autotools works. At
+configure time, a script ./libtool is created with hardcoded compiler commands
+derived from $CC and $CXX. This script is then used to do the actual linking
+in Makefiles generated by Automake. I thus did not find a way to change the
+linker command on a per-makefile basis, as libtool is global to the project.
+
+One option would be to use separate configure.in for plugins, but this is
+quite an intrusive change.
+
+My conclusion is that the best way is to start using g++ for linking the
+entire server. This is no problem for binaries made for a specific
+distribution (Ubuntu, Debian, Centos), where the dependencies are handled by
+the package manager. If it is a big problem for binary tarball releases, at
+worst we can build multiple binary tarball releases for the different library
+versions we need to support.
-=-=(Guest - Tue, 12 Jan 2010, 16:26)=-=-
Version updated.
--- /tmp/wklog.63.old.19522 2010-01-12 16:26:23.000000000 +0200
+++ /tmp/wklog.63.new.19522 2010-01-12 16:26:23.000000000 +0200
@@ -1 +1 @@
-Connector/.NET-5.2
+Server-5.2
-=-=(Guest - Tue, 12 Jan 2010, 16:26)=-=-
Category updated.
--- /tmp/wklog.63.old.19506 2010-01-12 16:26:15.000000000 +0200
+++ /tmp/wklog.63.new.19506 2010-01-12 16:26:15.000000000 +0200
@@ -1 +1 @@
-Server-RawIdeaBin
+Server-BackLog
DESCRIPTION:
Enable the use of libstdc++ in MariaDB.
As time goes on, more and more plugins and external code/library will need
linking to libstdc++ for stuff it uses. I have already seen this happen several
times, with extra work needed to integrate things properly.
It would be nice to have a general solution for this so that it is not necessary
to spend time on individual solutions in each case.
It also needs to be considered what the impact of this will be for the server in
terms of binary compatibility, performance etc. I think it should be mostly ok,
except that it might introduce a problem for bintar packages with an external
dependency on libstdc++.
The conclusion on this worklog is that the solution is just to build with
CXX=g++. This solves the problem, and after research is considered to have no
serious bad consequences.
Since this is a future build/packaging issue, there is nothing to be actually
done in the code for this worklog. Once we merge an actual plugin into the main
source tree we may need to update the BUILD/* scripts to default to CXX=g++ if
needed.
HIGH-LEVEL SPECIFICATION:
I did some investigation into this.
The simple way to do this is to simply use g++ to link C++ objects. So this
issue is really restricted to GCC compilation where we by default prefer to
link with gcc even for C++ code. So this means building with
CXX=g++
The consequences of doing this for the binaries is the addition of two
additional run-time .so dependencies: libstdc++.so and libgcc_s.so.
It still needs to be investigated if these additional dependencies are a
problem for binary tarball packages, or if the ABI for those libraries are now
as stable as libc.so.
The libgcc_s.so is needed as a dependency to support exceptions between
different object files, as they need to use the same code for stack unwinding.
libstdc++.so is of course needed for access to C++ runtime.
I researched into the possibility to instead link only specific plugins with
g++, and continue to link the rest of the server with gcc. Unfortunately, this
seems really hard to do in a proper way due to the way autotools works. At
configure time, a script ./libtool is created with hardcoded compiler commands
derived from $CC and $CXX. This script is then used to do the actual linking
in Makefiles generated by Automake. I thus did not find a way to change the
linker command on a per-makefile basis, as libtool is global to the project.
One option would be to use separate configure.in for plugins, but this is
quite an intrusive change.
My conclusion is that the best way is to start using g++ for linking the
entire server. This is no problem for binaries made for a specific
distribution (Ubuntu, Debian, Centos), where the dependencies are handled by
the package manager. If it is a big problem for binary tarball releases, at
worst we can build multiple binary tarball releases for the different library
versions we need to support.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Rev 21: Merged run-sysbench.sh with run-sysbench-myisam.sh in file:///Users/hakan/work/monty_program/mariadb-tools/
by Hakan Kuecuekyilmaz 09 Mar '10
by Hakan Kuecuekyilmaz 09 Mar '10
09 Mar '10
At file:///Users/hakan/work/monty_program/mariadb-tools/
------------------------------------------------------------
revno: 21
revision-id: hakan(a)askmonty.org-20100309142133-07u5qhnsa74is32n
parent: hakan(a)askmonty.org-20100309140451-ehuc08gs4x851gtn
committer: Hakan Kuecuekyilmaz <hakan(a)askmonty.org>
branch nick: mariadb-tools
timestamp: Tue 2010-03-09 15:21:33 +0100
message:
Merged run-sysbench.sh with run-sysbench-myisam.sh
=== modified file 'sysbench/run-sysbench-myisam.sh'
--- a/sysbench/run-sysbench-myisam.sh 2010-03-09 14:04:29 +0000
+++ b/sysbench/run-sysbench-myisam.sh 2010-03-09 14:21:33 +0000
@@ -82,6 +82,9 @@
# How many times we run each test.
LOOP_COUNT=3
+# We need at least 1 GB disk space in our $WORK_DIR.
+SPACE_LIMIT=1000000
+
SYSBENCH_TESTS="delete.lua \
insert.lua \
oltp_complex_ro.lua \
@@ -101,7 +104,9 @@
--mysql-table-engine=MyISAM \
--mysql-user=root \
--mysql-engine-trx=no \
- --myisam-max-rows=50000000"
+ --myisam-max-rows=50000000 \
+ --rand-init=on \
+ --rand-seed=303"
# Timeout in seconds for waiting for mysqld to start.
TIMEOUT=100
@@ -112,12 +117,26 @@
BASE="${HOME}/work"
TEST_DIR="${BASE}/monty_program/sysbench/sysbench/tests/db"
RESULT_DIR="${BASE}/sysbench-results"
+SYSBENCH_DB_BACKUP="${TEMP_DIR}/sysbench_db"
#
# Files
#
BUILD_LOG="${WORK_DIR}/${PRODUCT}_build.log"
+#
+# Check system.
+#
+# We should at least have $SPACE_LIMIT in $WORKDIR.
+AVAILABLE=$(df $WORK_DIR | grep -v Filesystem | awk '{ print $4 }')
+
+if [ $AVAILABLE -lt $SPACE_LIMIT ]; then
+ echo "[ERROR]: We need at least $SPACE_LIMIT space in $WORK_DIR."
+ echo 'Exiting.'
+
+ exit 1
+fi
+
if [ ! -d $LOCAL_MASTER ]; then
echo "[ERROR]: Supplied local master $LOCAL_MASTER does not exists."
echo " Please provide a valid bzr repository."
@@ -202,40 +221,72 @@
mkdir ${RESULT_DIR}/${TODAY}
mkdir ${RESULT_DIR}/${TODAY}/${PRODUCT}
-killall -9 mysqld
-rm -rf $DATA_DIR
-rm -f $MY_SOCKET
-mkdir $DATA_DIR
-
-sql/mysqld $MYSQL_OPTIONS &
-
-j=0
-STARTED=-1
-while [ $j -le $TIMEOUT ]
- do
- $MYSQLADMIN $MYSQLADMIN_OPTIONS ping > /dev/null 2>&1
- if [ $? = 0 ]; then
- STARTED=0
+function kill_mysqld {
+ killall -9 mysqld
+ rm -rf $DATA_DIR
+ rm -f $MY_SOCKET
+ mkdir $DATA_DIR
+}
+
+function start_mysqld {
+ sql/mysqld $MYSQL_OPTIONS &
+
+ j=0
+ STARTED=-1
+ while [ $j -le $TIMEOUT ]
+ do
+ $MYSQLADMIN $MYSQLADMIN_OPTIONS ping > /dev/null 2>&1
+ if [ $? = 0 ]; then
+ STARTED=0
+
+ break
+ fi
- break
+ sleep 1
+ j=$(($j + 1))
+ done
+
+ if [ $STARTED != 0 ]; then
+ echo '[ERROR]: Start of mysqld failed.'
+ echo ' Please check your error log.'
+ echo ' Exiting.'
+
+ exit 1
fi
-
- sleep 1
- j=$(($j + 1))
-done
-
-if [ $STARTED != 0 ]; then
- echo '[ERROR]: Start of mysqld failed.'
- echo ' Please check your error log.'
- echo ' Exiting.'
-
- exit 1
-fi
+}
+
+#
+# Write out configurations used for future refernce.
+#
+echo $MYSQL_OPTIONS > ${RESULT_DIR}/${TODAY}/${PRODUCT}/mysqld_options.txt
+echo $SYSBENCH_OPTIONS > ${RESULT_DIR}/${TODAY}/${PRODUCT}/sysbench_options.txt
for SYSBENCH_TEST in $SYSBENCH_TESTS
do
mkdir ${RESULT_DIR}/${TODAY}/${PRODUCT}/${SYSBENCH_TEST}
+ kill_mysqld
+ start_mysqld
+ $MYSQLADMIN $MYSQLADMIN_OPTIONS create sbtest
+ if [ $? != 0 ]; then
+ echo "[ERROR]: Create of sbtest database failed"
+ echo " Please check your setup."
+ echo " Exiting"
+ exit 1
+ fi
+
+ echo "[$(date "+%Y-%m-%d %H:%M:%S")] Preparing and loading data for $SYSBENCH_TEST."
+ SYSBENCH_OPTIONS="${SYSBENCH_OPTIONS} --test=${TEST_DIR}/${SYSBENCH_TEST}"
+ $SYSBENCH $SYSBENCH_OPTIONS prepare
+
+ $MYSQLADMIN $MYSQLADMIN_OPTIONS shutdown
+ sync
+ rm -rf ${SYSBENCH_DB_BACKUP}
+ mkdir ${SYSBENCH_DB_BACKUP}
+
+ echo "[$(date "+%Y-%m-%d %H:%M:%S")] Copying $DATA_DIR of $SYSBENCH_TEST for later usage."
+ cp -a ${DATA_DIR}/* ${SYSBENCH_DB_BACKUP}/
+
for THREADS in $NUM_THREADS
do
THIS_RESULT_DIR="${RESULT_DIR}/${TODAY}/${PRODUCT}/${SYSBENCH_TEST}/${THREADS}"
@@ -243,23 +294,24 @@
echo "[$(date "+%Y-%m-%d %H:%M:%S")] Running $SYSBENCH_TEST with $THREADS threads and $LOOP_COUNT iterations for $PRODUCT" | tee ${THIS_RESULT_DIR}/results.txt
echo '' >> ${THIS_RESULT_DIR}/results.txt
+ SYSBENCH_OPTIONS="$SYSBENCH_OPTIONS --num-threads=$THREADS"
+
k=0
while [ $k -lt $LOOP_COUNT ]
do
- $MYSQLADMIN $MYSQLADMIN_OPTIONS -f drop sbtest
- $MYSQLADMIN $MYSQLADMIN_OPTIONS create sbtest
- if [ $? != 0 ]; then
- echo "[ERROR]: Create of sbtest database failed"
- echo " Please check your setup."
- echo " Exiting"
- exit 1
- fi
-
- SYSBENCH_OPTIONS="$SYSBENCH_OPTIONS --num-threads=$THREADS --test=${TEST_DIR}/${SYSBENCH_TEST}"
- $SYSBENCH $SYSBENCH_OPTIONS prepare
-
- sync
- sleep 3
+ echo ''
+ echo "[$(date "+%Y-%m-%d %H:%M:%S")] Killing mysqld and copying back $DATA_DIR for $SYSBENCH_TEST."
+ kill_mysqld
+ cp -a ${SYSBENCH_DB_BACKUP}/* ${DATA_DIR}
+
+ # Clear file system cache. This works only with Linux >= 2.6.16.
+ # On Mac OS X we can use sync; purge.
+ sync
+ echo 3 | $SUDO tee /proc/sys/vm/drop_caches
+
+ echo "[$(date "+%Y-%m-%d %H:%M:%S")] Starting mysqld for running $SYSBENCH_TEST with $THREADS threads and $LOOP_COUNT iterations for $PRODUCT"
+ start_mysqld
+ sync
$SYSBENCH $SYSBENCH_OPTIONS run > ${THIS_RESULT_DIR}/result${k}.txt 2>&1
@@ -267,6 +319,9 @@
k=$(($k + 1))
done
+
+ echo '' >> ${THIS_RESULT_DIR}/results.txt
+ echo "[$(date "+%Y-%m-%d %H:%M:%S")] Finnished $SYSBENCH_TEST with $THREADS threads and $LOOP_COUNT iterations for $PRODUCT" | tee -a ${THIS_RESULT_DIR}/results.txt
done
done
1
0
[Maria-developers] Progress (by Hakan): Benchmark suite for sysbench (100)
by worklog-noreply@askmonty.org 09 Mar '10
by worklog-noreply@askmonty.org 09 Mar '10
09 Mar '10
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Benchmark suite for sysbench
CREATION DATE..: Thu, 04 Mar 2010, 17:46
SUPERVISOR.....: Igor
IMPLEMENTOR....: Hakan
COPIES TO......:
CATEGORY.......: Other
TASK ID........: 100 (http://askmonty.org/worklog/?tid=100)
VERSION........: Benchmarks-3.0
STATUS.........: Assigned
PRIORITY.......: 60
WORKED HOURS...: 12
ESTIMATE.......: 28 (hours remain)
ORIG. ESTIMATE.: 40
PROGRESS NOTES:
-=-=(Hakan - Tue, 09 Mar 2010, 14:10)=-=-
* Added run-sysbench-myisam.sh for running MyISAM related benchmarks with sysbench.
Worked 4 hours and estimate 28 hours remain (original estimate unchanged).
-=-=(Hakan - Tue, 09 Mar 2010, 14:09)=-=-
Low Level Design modified.
--- /tmp/wklog.100.old.18803 2010-03-09 14:09:37.000000000 +0000
+++ /tmp/wklog.100.new.18803 2010-03-09 14:09:37.000000000 +0000
@@ -9,6 +9,12 @@
** Number of concurrent clients is hardcoded
** Machine specific configuration like location of binaries and
directories needed are in separate config files located at conf/<hostname>.inc
+ ** Set random seed of sysbench to have better comparison
+ ** Restart mysqld from scratch for each run and copy away
+ DATA_DIR of the database for faster starts.
+ ** Between each run, run sync and clear file system caches with
+ echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
+ ** Write out mysqld and sysbench options for reference.
The main loop of run-sysbench.sh is:
@@ -31,12 +37,6 @@
** sar -u (CPU utilization) hook
** Crash detection
** Error detection
- ** Set random seed of sysbench to have better comparision
- ** Restart mysqld from scratch for each run and copy away
- DATA_DIR of the database for faster starts.
- ** Between each run, run sync and clear file system caches with
- echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
- ** Write out mysqld and sysbench options for reference.
* Analyze numbers
This is implemented in analyze-sysbench.php
-=-=(Hakan - Tue, 09 Mar 2010, 14:06)=-=-
Added:
** Set random seed of sysbench to have better comparison
** Restart mysqld from scratch for each run and copy away
DATA_DIR of the database for faster starts.
** Between each run, run sync and clear file system caches with
echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
** Write out mysqld and sysbench options for reference.
Worked 8 hours and estimate 32 hours remain (original estimate unchanged).
-=-=(Hakan - Mon, 08 Mar 2010, 12:27)=-=-
Low Level Design modified.
--- /tmp/wklog.100.old.21404 2010-03-08 12:27:08.000000000 +0000
+++ /tmp/wklog.100.new.21404 2010-03-08 12:27:08.000000000 +0000
@@ -36,6 +36,7 @@
DATA_DIR of the database for faster starts.
** Between each run, run sync and clear file system caches with
echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
+ ** Write out mysqld and sysbench options for reference.
* Analyze numbers
This is implemented in analyze-sysbench.php
-=-=(Guest - Thu, 04 Mar 2010, 18:15)=-=-
Low Level Design modified.
--- /tmp/wklog.100.old.2695 2010-03-04 18:15:46.000000000 +0000
+++ /tmp/wklog.100.new.2695 2010-03-04 18:15:46.000000000 +0000
@@ -1 +1,112 @@
+All scripts can be found at lp:mariadb-tools/sysbench
+* Run sysbench tests on a machine and collect numbers
+This is implemented in run-sysbench.sh. Currently it supports:
+ ** Optionally pull of latest source from Launchpad and compile
+ ** Starting the server
+ ** Running each sysbench test for $LOOP_COUNT times and
+ $RUN_TIME time.
+ ** Number of concurrent clients is hardcoded
+ ** Machine specific configuration like location of binaries and
+ directories needed are in separate config files located at conf/<hostname>.inc
+
+The main loop of run-sysbench.sh is:
+
+start_mysqld
+for SYSBENCH_TEST in $SYSBENCH_TESTS
+ for THREADS in $NUM_THREADS
+ while [ $k -lt $LOOP_COUNT ]
+ drop schema sbtest
+ create schema sbtest
+
+ $SYSBENCH $SYSBENCH_OPTIONS prepare
+ $SYSBENCH $SYSBENCH_OPTIONS run
+ done
+ done
+done
+
+Open items:
+ ** OProfile hook
+ ** iostat hook
+ ** sar -u (CPU utilization) hook
+ ** Crash detection
+ ** Error detection
+ ** Set random seed of sysbench to have better comparision
+ ** Restart mysqld from scratch for each run and copy away
+ DATA_DIR of the database for faster starts.
+ ** Between each run, run sync and clear file system caches with
+ echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
+
+* Analyze numbers
+This is implemented in analyze-sysbench.php
+
+Open items:
+ ** Read result files from
+ ${RESULT_DIR}/${TODAY}/${PRODUCT}/${SYSBENCH_TEST}/${THREADS}/results.txt
+
+ ** Collect OProfile, iostat, cpu utilization, and machine info
+ ** Detect errors and crashes.
+ ** Generate SQL INSERT strings for presentation usage
+
+The layout for storing the numbers is:
+ CREATE TABLE sysbench_run (
+ id int unsigned NOT NULL auto_increment,
+ host varchar(80), -- Hostname we ran the test on.
+ run_date date, -- The day we ran the test.
+ sysbench_version varchar(32), -- Version of sysbench we used.
+ test_name varchar(32), -- Name of the sysbench test.
+ run_time int unsigned, -- Run time in seconds.
+ runs int unsigned, -- Number of iterations of the test.
+ PRIMARY KEY (id),
+ KEY (host),
+ KEY (run_date
+ );
+
+ CREATE TABLE sysbench_comment (
+ id int unsigned NOT NULL auto_increment,
+ sysbench_run_id int unsigned NOT NULL, -- FK pointing to sysbench_run.
+ compile_info text, -- Compile options we used.
+ machine_info text, -- Details about the hardware.
+ sysbench_options text, -- The sysbench options we used.
+ PRIMARY KEY (id),
+ KEY (sysbench_run_id)
+ );
+
+ CREATE TABLE sysbench_result (
+ id int unsigned NOT NULL auto_increment,
+ sysbench_run_id int unsigned NOT NULL, -- FK pointing to sysbench_run.
+ concurrency int unsigned, -- Concurrency level we used.
+ result decimal(7,2), -- The actual result.
+ io varchar(80), -- The IO from iostat.
+ cpu varchar(80), -- CPU utilization.
+ profile text, -- Profiling information.
+ error text, -- Error messages and stack traces.
+ PRIMARY KEY (id),
+ KEY (sysbench_run_id
+ );
+
+* Generate a report out of the numbers
+This script will generate a HTML version for putting up on the web and a
+txt version for email usage.
+
+Open items:
+ ** Generate an overview table in the form of
+ Number of threads
+ 1 4 8 16 32 64 128
+sysbench test
+ delete 121.52 144.77 117.70 115.15 100.48 75.39 66.56
+ mean value of runs
+ 1 first run
+ 2 second run
+ 3 third run
+ STDEV
+ STDEV in % of mean
+ CPU utilization (usr/sys/wait/idle)
+ IO (read/write)
+
+For HTML version additionally generate a graph with JPGraph.
+
+* Get machine(s) and run the test on a weekly basis and for each release
+comparing with the prior release.
+
+* Email weekly reports and blog about it.
DESCRIPTION:
Create a benchmark suite for running sysbench
* Run sysbench tests on a machine and collect numbers
* Analyze numbers
* Generate a report out of the numbers
LOW-LEVEL DESIGN:
All scripts can be found at lp:mariadb-tools/sysbench
* Run sysbench tests on a machine and collect numbers
This is implemented in run-sysbench.sh. Currently it supports:
** Optionally pull of latest source from Launchpad and compile
** Starting the server
** Running each sysbench test for $LOOP_COUNT times and
$RUN_TIME time.
** Number of concurrent clients is hardcoded
** Machine specific configuration like location of binaries and
directories needed are in separate config files located at conf/<hostname>.inc
** Set random seed of sysbench to have better comparison
** Restart mysqld from scratch for each run and copy away
DATA_DIR of the database for faster starts.
** Between each run, run sync and clear file system caches with
echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
** Write out mysqld and sysbench options for reference.
The main loop of run-sysbench.sh is:
start_mysqld
for SYSBENCH_TEST in $SYSBENCH_TESTS
for THREADS in $NUM_THREADS
while [ $k -lt $LOOP_COUNT ]
drop schema sbtest
create schema sbtest
$SYSBENCH $SYSBENCH_OPTIONS prepare
$SYSBENCH $SYSBENCH_OPTIONS run
done
done
done
Open items:
** OProfile hook
** iostat hook
** sar -u (CPU utilization) hook
** Crash detection
** Error detection
* Analyze numbers
This is implemented in analyze-sysbench.php
Open items:
** Read result files from
${RESULT_DIR}/${TODAY}/${PRODUCT}/${SYSBENCH_TEST}/${THREADS}/results.txt
** Collect OProfile, iostat, cpu utilization, and machine info
** Detect errors and crashes.
** Generate SQL INSERT strings for presentation usage
The layout for storing the numbers is:
CREATE TABLE sysbench_run (
id int unsigned NOT NULL auto_increment,
host varchar(80), -- Hostname we ran the test on.
run_date date, -- The day we ran the test.
sysbench_version varchar(32), -- Version of sysbench we used.
test_name varchar(32), -- Name of the sysbench test.
run_time int unsigned, -- Run time in seconds.
runs int unsigned, -- Number of iterations of the test.
PRIMARY KEY (id),
KEY (host),
KEY (run_date
);
CREATE TABLE sysbench_comment (
id int unsigned NOT NULL auto_increment,
sysbench_run_id int unsigned NOT NULL, -- FK pointing to sysbench_run.
compile_info text, -- Compile options we used.
machine_info text, -- Details about the hardware.
sysbench_options text, -- The sysbench options we used.
PRIMARY KEY (id),
KEY (sysbench_run_id)
);
CREATE TABLE sysbench_result (
id int unsigned NOT NULL auto_increment,
sysbench_run_id int unsigned NOT NULL, -- FK pointing to sysbench_run.
concurrency int unsigned, -- Concurrency level we used.
result decimal(7,2), -- The actual result.
io varchar(80), -- The IO from iostat.
cpu varchar(80), -- CPU utilization.
profile text, -- Profiling information.
error text, -- Error messages and stack traces.
PRIMARY KEY (id),
KEY (sysbench_run_id
);
* Generate a report out of the numbers
This script will generate a HTML version for putting up on the web and a
txt version for email usage.
Open items:
** Generate an overview table in the form of
Number of threads
1 4 8 16 32 64 128
sysbench test
delete 121.52 144.77 117.70 115.15 100.48 75.39 66.56
mean value of runs
1 first run
2 second run
3 third run
STDEV
STDEV in % of mean
CPU utilization (usr/sys/wait/idle)
IO (read/write)
For HTML version additionally generate a graph with JPGraph.
* Get machine(s) and run the test on a weekly basis and for each release
comparing with the prior release.
* Email weekly reports and blog about it.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Progress (by Hakan): Benchmark suite for sysbench (100)
by worklog-noreply@askmonty.org 09 Mar '10
by worklog-noreply@askmonty.org 09 Mar '10
09 Mar '10
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Benchmark suite for sysbench
CREATION DATE..: Thu, 04 Mar 2010, 17:46
SUPERVISOR.....: Igor
IMPLEMENTOR....: Hakan
COPIES TO......:
CATEGORY.......: Other
TASK ID........: 100 (http://askmonty.org/worklog/?tid=100)
VERSION........: Benchmarks-3.0
STATUS.........: Assigned
PRIORITY.......: 60
WORKED HOURS...: 12
ESTIMATE.......: 28 (hours remain)
ORIG. ESTIMATE.: 40
PROGRESS NOTES:
-=-=(Hakan - Tue, 09 Mar 2010, 14:10)=-=-
* Added run-sysbench-myisam.sh for running MyISAM related benchmarks with sysbench.
Worked 4 hours and estimate 28 hours remain (original estimate unchanged).
-=-=(Hakan - Tue, 09 Mar 2010, 14:09)=-=-
Low Level Design modified.
--- /tmp/wklog.100.old.18803 2010-03-09 14:09:37.000000000 +0000
+++ /tmp/wklog.100.new.18803 2010-03-09 14:09:37.000000000 +0000
@@ -9,6 +9,12 @@
** Number of concurrent clients is hardcoded
** Machine specific configuration like location of binaries and
directories needed are in separate config files located at conf/<hostname>.inc
+ ** Set random seed of sysbench to have better comparison
+ ** Restart mysqld from scratch for each run and copy away
+ DATA_DIR of the database for faster starts.
+ ** Between each run, run sync and clear file system caches with
+ echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
+ ** Write out mysqld and sysbench options for reference.
The main loop of run-sysbench.sh is:
@@ -31,12 +37,6 @@
** sar -u (CPU utilization) hook
** Crash detection
** Error detection
- ** Set random seed of sysbench to have better comparision
- ** Restart mysqld from scratch for each run and copy away
- DATA_DIR of the database for faster starts.
- ** Between each run, run sync and clear file system caches with
- echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
- ** Write out mysqld and sysbench options for reference.
* Analyze numbers
This is implemented in analyze-sysbench.php
-=-=(Hakan - Tue, 09 Mar 2010, 14:06)=-=-
Added:
** Set random seed of sysbench to have better comparison
** Restart mysqld from scratch for each run and copy away
DATA_DIR of the database for faster starts.
** Between each run, run sync and clear file system caches with
echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
** Write out mysqld and sysbench options for reference.
Worked 8 hours and estimate 32 hours remain (original estimate unchanged).
-=-=(Hakan - Mon, 08 Mar 2010, 12:27)=-=-
Low Level Design modified.
--- /tmp/wklog.100.old.21404 2010-03-08 12:27:08.000000000 +0000
+++ /tmp/wklog.100.new.21404 2010-03-08 12:27:08.000000000 +0000
@@ -36,6 +36,7 @@
DATA_DIR of the database for faster starts.
** Between each run, run sync and clear file system caches with
echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
+ ** Write out mysqld and sysbench options for reference.
* Analyze numbers
This is implemented in analyze-sysbench.php
-=-=(Guest - Thu, 04 Mar 2010, 18:15)=-=-
Low Level Design modified.
--- /tmp/wklog.100.old.2695 2010-03-04 18:15:46.000000000 +0000
+++ /tmp/wklog.100.new.2695 2010-03-04 18:15:46.000000000 +0000
@@ -1 +1,112 @@
+All scripts can be found at lp:mariadb-tools/sysbench
+* Run sysbench tests on a machine and collect numbers
+This is implemented in run-sysbench.sh. Currently it supports:
+ ** Optionally pull of latest source from Launchpad and compile
+ ** Starting the server
+ ** Running each sysbench test for $LOOP_COUNT times and
+ $RUN_TIME time.
+ ** Number of concurrent clients is hardcoded
+ ** Machine specific configuration like location of binaries and
+ directories needed are in separate config files located at conf/<hostname>.inc
+
+The main loop of run-sysbench.sh is:
+
+start_mysqld
+for SYSBENCH_TEST in $SYSBENCH_TESTS
+ for THREADS in $NUM_THREADS
+ while [ $k -lt $LOOP_COUNT ]
+ drop schema sbtest
+ create schema sbtest
+
+ $SYSBENCH $SYSBENCH_OPTIONS prepare
+ $SYSBENCH $SYSBENCH_OPTIONS run
+ done
+ done
+done
+
+Open items:
+ ** OProfile hook
+ ** iostat hook
+ ** sar -u (CPU utilization) hook
+ ** Crash detection
+ ** Error detection
+ ** Set random seed of sysbench to have better comparision
+ ** Restart mysqld from scratch for each run and copy away
+ DATA_DIR of the database for faster starts.
+ ** Between each run, run sync and clear file system caches with
+ echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
+
+* Analyze numbers
+This is implemented in analyze-sysbench.php
+
+Open items:
+ ** Read result files from
+ ${RESULT_DIR}/${TODAY}/${PRODUCT}/${SYSBENCH_TEST}/${THREADS}/results.txt
+
+ ** Collect OProfile, iostat, cpu utilization, and machine info
+ ** Detect errors and crashes.
+ ** Generate SQL INSERT strings for presentation usage
+
+The layout for storing the numbers is:
+ CREATE TABLE sysbench_run (
+ id int unsigned NOT NULL auto_increment,
+ host varchar(80), -- Hostname we ran the test on.
+ run_date date, -- The day we ran the test.
+ sysbench_version varchar(32), -- Version of sysbench we used.
+ test_name varchar(32), -- Name of the sysbench test.
+ run_time int unsigned, -- Run time in seconds.
+ runs int unsigned, -- Number of iterations of the test.
+ PRIMARY KEY (id),
+ KEY (host),
+ KEY (run_date
+ );
+
+ CREATE TABLE sysbench_comment (
+ id int unsigned NOT NULL auto_increment,
+ sysbench_run_id int unsigned NOT NULL, -- FK pointing to sysbench_run.
+ compile_info text, -- Compile options we used.
+ machine_info text, -- Details about the hardware.
+ sysbench_options text, -- The sysbench options we used.
+ PRIMARY KEY (id),
+ KEY (sysbench_run_id)
+ );
+
+ CREATE TABLE sysbench_result (
+ id int unsigned NOT NULL auto_increment,
+ sysbench_run_id int unsigned NOT NULL, -- FK pointing to sysbench_run.
+ concurrency int unsigned, -- Concurrency level we used.
+ result decimal(7,2), -- The actual result.
+ io varchar(80), -- The IO from iostat.
+ cpu varchar(80), -- CPU utilization.
+ profile text, -- Profiling information.
+ error text, -- Error messages and stack traces.
+ PRIMARY KEY (id),
+ KEY (sysbench_run_id
+ );
+
+* Generate a report out of the numbers
+This script will generate a HTML version for putting up on the web and a
+txt version for email usage.
+
+Open items:
+ ** Generate an overview table in the form of
+ Number of threads
+ 1 4 8 16 32 64 128
+sysbench test
+ delete 121.52 144.77 117.70 115.15 100.48 75.39 66.56
+ mean value of runs
+ 1 first run
+ 2 second run
+ 3 third run
+ STDEV
+ STDEV in % of mean
+ CPU utilization (usr/sys/wait/idle)
+ IO (read/write)
+
+For HTML version additionally generate a graph with JPGraph.
+
+* Get machine(s) and run the test on a weekly basis and for each release
+comparing with the prior release.
+
+* Email weekly reports and blog about it.
DESCRIPTION:
Create a benchmark suite for running sysbench
* Run sysbench tests on a machine and collect numbers
* Analyze numbers
* Generate a report out of the numbers
LOW-LEVEL DESIGN:
All scripts can be found at lp:mariadb-tools/sysbench
* Run sysbench tests on a machine and collect numbers
This is implemented in run-sysbench.sh. Currently it supports:
** Optionally pull of latest source from Launchpad and compile
** Starting the server
** Running each sysbench test for $LOOP_COUNT times and
$RUN_TIME time.
** Number of concurrent clients is hardcoded
** Machine specific configuration like location of binaries and
directories needed are in separate config files located at conf/<hostname>.inc
** Set random seed of sysbench to have better comparison
** Restart mysqld from scratch for each run and copy away
DATA_DIR of the database for faster starts.
** Between each run, run sync and clear file system caches with
echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
** Write out mysqld and sysbench options for reference.
The main loop of run-sysbench.sh is:
start_mysqld
for SYSBENCH_TEST in $SYSBENCH_TESTS
for THREADS in $NUM_THREADS
while [ $k -lt $LOOP_COUNT ]
drop schema sbtest
create schema sbtest
$SYSBENCH $SYSBENCH_OPTIONS prepare
$SYSBENCH $SYSBENCH_OPTIONS run
done
done
done
Open items:
** OProfile hook
** iostat hook
** sar -u (CPU utilization) hook
** Crash detection
** Error detection
* Analyze numbers
This is implemented in analyze-sysbench.php
Open items:
** Read result files from
${RESULT_DIR}/${TODAY}/${PRODUCT}/${SYSBENCH_TEST}/${THREADS}/results.txt
** Collect OProfile, iostat, cpu utilization, and machine info
** Detect errors and crashes.
** Generate SQL INSERT strings for presentation usage
The layout for storing the numbers is:
CREATE TABLE sysbench_run (
id int unsigned NOT NULL auto_increment,
host varchar(80), -- Hostname we ran the test on.
run_date date, -- The day we ran the test.
sysbench_version varchar(32), -- Version of sysbench we used.
test_name varchar(32), -- Name of the sysbench test.
run_time int unsigned, -- Run time in seconds.
runs int unsigned, -- Number of iterations of the test.
PRIMARY KEY (id),
KEY (host),
KEY (run_date
);
CREATE TABLE sysbench_comment (
id int unsigned NOT NULL auto_increment,
sysbench_run_id int unsigned NOT NULL, -- FK pointing to sysbench_run.
compile_info text, -- Compile options we used.
machine_info text, -- Details about the hardware.
sysbench_options text, -- The sysbench options we used.
PRIMARY KEY (id),
KEY (sysbench_run_id)
);
CREATE TABLE sysbench_result (
id int unsigned NOT NULL auto_increment,
sysbench_run_id int unsigned NOT NULL, -- FK pointing to sysbench_run.
concurrency int unsigned, -- Concurrency level we used.
result decimal(7,2), -- The actual result.
io varchar(80), -- The IO from iostat.
cpu varchar(80), -- CPU utilization.
profile text, -- Profiling information.
error text, -- Error messages and stack traces.
PRIMARY KEY (id),
KEY (sysbench_run_id
);
* Generate a report out of the numbers
This script will generate a HTML version for putting up on the web and a
txt version for email usage.
Open items:
** Generate an overview table in the form of
Number of threads
1 4 8 16 32 64 128
sysbench test
delete 121.52 144.77 117.70 115.15 100.48 75.39 66.56
mean value of runs
1 first run
2 second run
3 third run
STDEV
STDEV in % of mean
CPU utilization (usr/sys/wait/idle)
IO (read/write)
For HTML version additionally generate a graph with JPGraph.
* Get machine(s) and run the test on a weekly basis and for each release
comparing with the prior release.
* Email weekly reports and blog about it.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Hakan): Benchmark suite for sysbench (100)
by worklog-noreply@askmonty.org 09 Mar '10
by worklog-noreply@askmonty.org 09 Mar '10
09 Mar '10
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Benchmark suite for sysbench
CREATION DATE..: Thu, 04 Mar 2010, 17:46
SUPERVISOR.....: Igor
IMPLEMENTOR....: Hakan
COPIES TO......:
CATEGORY.......: Other
TASK ID........: 100 (http://askmonty.org/worklog/?tid=100)
VERSION........: Benchmarks-3.0
STATUS.........: Assigned
PRIORITY.......: 60
WORKED HOURS...: 8
ESTIMATE.......: 32 (hours remain)
ORIG. ESTIMATE.: 40
PROGRESS NOTES:
-=-=(Hakan - Tue, 09 Mar 2010, 14:09)=-=-
Low Level Design modified.
--- /tmp/wklog.100.old.18803 2010-03-09 14:09:37.000000000 +0000
+++ /tmp/wklog.100.new.18803 2010-03-09 14:09:37.000000000 +0000
@@ -9,6 +9,12 @@
** Number of concurrent clients is hardcoded
** Machine specific configuration like location of binaries and
directories needed are in separate config files located at conf/<hostname>.inc
+ ** Set random seed of sysbench to have better comparison
+ ** Restart mysqld from scratch for each run and copy away
+ DATA_DIR of the database for faster starts.
+ ** Between each run, run sync and clear file system caches with
+ echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
+ ** Write out mysqld and sysbench options for reference.
The main loop of run-sysbench.sh is:
@@ -31,12 +37,6 @@
** sar -u (CPU utilization) hook
** Crash detection
** Error detection
- ** Set random seed of sysbench to have better comparision
- ** Restart mysqld from scratch for each run and copy away
- DATA_DIR of the database for faster starts.
- ** Between each run, run sync and clear file system caches with
- echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
- ** Write out mysqld and sysbench options for reference.
* Analyze numbers
This is implemented in analyze-sysbench.php
-=-=(Hakan - Tue, 09 Mar 2010, 14:06)=-=-
Added:
** Set random seed of sysbench to have better comparison
** Restart mysqld from scratch for each run and copy away
DATA_DIR of the database for faster starts.
** Between each run, run sync and clear file system caches with
echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
** Write out mysqld and sysbench options for reference.
Worked 8 hours and estimate 32 hours remain (original estimate unchanged).
-=-=(Hakan - Mon, 08 Mar 2010, 12:27)=-=-
Low Level Design modified.
--- /tmp/wklog.100.old.21404 2010-03-08 12:27:08.000000000 +0000
+++ /tmp/wklog.100.new.21404 2010-03-08 12:27:08.000000000 +0000
@@ -36,6 +36,7 @@
DATA_DIR of the database for faster starts.
** Between each run, run sync and clear file system caches with
echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
+ ** Write out mysqld and sysbench options for reference.
* Analyze numbers
This is implemented in analyze-sysbench.php
-=-=(Guest - Thu, 04 Mar 2010, 18:15)=-=-
Low Level Design modified.
--- /tmp/wklog.100.old.2695 2010-03-04 18:15:46.000000000 +0000
+++ /tmp/wklog.100.new.2695 2010-03-04 18:15:46.000000000 +0000
@@ -1 +1,112 @@
+All scripts can be found at lp:mariadb-tools/sysbench
+* Run sysbench tests on a machine and collect numbers
+This is implemented in run-sysbench.sh. Currently it supports:
+ ** Optionally pull of latest source from Launchpad and compile
+ ** Starting the server
+ ** Running each sysbench test for $LOOP_COUNT times and
+ $RUN_TIME time.
+ ** Number of concurrent clients is hardcoded
+ ** Machine specific configuration like location of binaries and
+ directories needed are in separate config files located at conf/<hostname>.inc
+
+The main loop of run-sysbench.sh is:
+
+start_mysqld
+for SYSBENCH_TEST in $SYSBENCH_TESTS
+ for THREADS in $NUM_THREADS
+ while [ $k -lt $LOOP_COUNT ]
+ drop schema sbtest
+ create schema sbtest
+
+ $SYSBENCH $SYSBENCH_OPTIONS prepare
+ $SYSBENCH $SYSBENCH_OPTIONS run
+ done
+ done
+done
+
+Open items:
+ ** OProfile hook
+ ** iostat hook
+ ** sar -u (CPU utilization) hook
+ ** Crash detection
+ ** Error detection
+ ** Set random seed of sysbench to have better comparision
+ ** Restart mysqld from scratch for each run and copy away
+ DATA_DIR of the database for faster starts.
+ ** Between each run, run sync and clear file system caches with
+ echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
+
+* Analyze numbers
+This is implemented in analyze-sysbench.php
+
+Open items:
+ ** Read result files from
+ ${RESULT_DIR}/${TODAY}/${PRODUCT}/${SYSBENCH_TEST}/${THREADS}/results.txt
+
+ ** Collect OProfile, iostat, cpu utilization, and machine info
+ ** Detect errors and crashes.
+ ** Generate SQL INSERT strings for presentation usage
+
+The layout for storing the numbers is:
+ CREATE TABLE sysbench_run (
+ id int unsigned NOT NULL auto_increment,
+ host varchar(80), -- Hostname we ran the test on.
+ run_date date, -- The day we ran the test.
+ sysbench_version varchar(32), -- Version of sysbench we used.
+ test_name varchar(32), -- Name of the sysbench test.
+ run_time int unsigned, -- Run time in seconds.
+ runs int unsigned, -- Number of iterations of the test.
+ PRIMARY KEY (id),
+ KEY (host),
+ KEY (run_date
+ );
+
+ CREATE TABLE sysbench_comment (
+ id int unsigned NOT NULL auto_increment,
+ sysbench_run_id int unsigned NOT NULL, -- FK pointing to sysbench_run.
+ compile_info text, -- Compile options we used.
+ machine_info text, -- Details about the hardware.
+ sysbench_options text, -- The sysbench options we used.
+ PRIMARY KEY (id),
+ KEY (sysbench_run_id)
+ );
+
+ CREATE TABLE sysbench_result (
+ id int unsigned NOT NULL auto_increment,
+ sysbench_run_id int unsigned NOT NULL, -- FK pointing to sysbench_run.
+ concurrency int unsigned, -- Concurrency level we used.
+ result decimal(7,2), -- The actual result.
+ io varchar(80), -- The IO from iostat.
+ cpu varchar(80), -- CPU utilization.
+ profile text, -- Profiling information.
+ error text, -- Error messages and stack traces.
+ PRIMARY KEY (id),
+ KEY (sysbench_run_id
+ );
+
+* Generate a report out of the numbers
+This script will generate a HTML version for putting up on the web and a
+txt version for email usage.
+
+Open items:
+ ** Generate an overview table in the form of
+ Number of threads
+ 1 4 8 16 32 64 128
+sysbench test
+ delete 121.52 144.77 117.70 115.15 100.48 75.39 66.56
+ mean value of runs
+ 1 first run
+ 2 second run
+ 3 third run
+ STDEV
+ STDEV in % of mean
+ CPU utilization (usr/sys/wait/idle)
+ IO (read/write)
+
+For HTML version additionally generate a graph with JPGraph.
+
+* Get machine(s) and run the test on a weekly basis and for each release
+comparing with the prior release.
+
+* Email weekly reports and blog about it.
DESCRIPTION:
Create a benchmark suite for running sysbench
* Run sysbench tests on a machine and collect numbers
* Analyze numbers
* Generate a report out of the numbers
LOW-LEVEL DESIGN:
All scripts can be found at lp:mariadb-tools/sysbench
* Run sysbench tests on a machine and collect numbers
This is implemented in run-sysbench.sh. Currently it supports:
** Optionally pull of latest source from Launchpad and compile
** Starting the server
** Running each sysbench test for $LOOP_COUNT times and
$RUN_TIME time.
** Number of concurrent clients is hardcoded
** Machine specific configuration like location of binaries and
directories needed are in separate config files located at conf/<hostname>.inc
** Set random seed of sysbench to have better comparison
** Restart mysqld from scratch for each run and copy away
DATA_DIR of the database for faster starts.
** Between each run, run sync and clear file system caches with
echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
** Write out mysqld and sysbench options for reference.
The main loop of run-sysbench.sh is:
start_mysqld
for SYSBENCH_TEST in $SYSBENCH_TESTS
for THREADS in $NUM_THREADS
while [ $k -lt $LOOP_COUNT ]
drop schema sbtest
create schema sbtest
$SYSBENCH $SYSBENCH_OPTIONS prepare
$SYSBENCH $SYSBENCH_OPTIONS run
done
done
done
Open items:
** OProfile hook
** iostat hook
** sar -u (CPU utilization) hook
** Crash detection
** Error detection
* Analyze numbers
This is implemented in analyze-sysbench.php
Open items:
** Read result files from
${RESULT_DIR}/${TODAY}/${PRODUCT}/${SYSBENCH_TEST}/${THREADS}/results.txt
** Collect OProfile, iostat, cpu utilization, and machine info
** Detect errors and crashes.
** Generate SQL INSERT strings for presentation usage
The layout for storing the numbers is:
CREATE TABLE sysbench_run (
id int unsigned NOT NULL auto_increment,
host varchar(80), -- Hostname we ran the test on.
run_date date, -- The day we ran the test.
sysbench_version varchar(32), -- Version of sysbench we used.
test_name varchar(32), -- Name of the sysbench test.
run_time int unsigned, -- Run time in seconds.
runs int unsigned, -- Number of iterations of the test.
PRIMARY KEY (id),
KEY (host),
KEY (run_date
);
CREATE TABLE sysbench_comment (
id int unsigned NOT NULL auto_increment,
sysbench_run_id int unsigned NOT NULL, -- FK pointing to sysbench_run.
compile_info text, -- Compile options we used.
machine_info text, -- Details about the hardware.
sysbench_options text, -- The sysbench options we used.
PRIMARY KEY (id),
KEY (sysbench_run_id)
);
CREATE TABLE sysbench_result (
id int unsigned NOT NULL auto_increment,
sysbench_run_id int unsigned NOT NULL, -- FK pointing to sysbench_run.
concurrency int unsigned, -- Concurrency level we used.
result decimal(7,2), -- The actual result.
io varchar(80), -- The IO from iostat.
cpu varchar(80), -- CPU utilization.
profile text, -- Profiling information.
error text, -- Error messages and stack traces.
PRIMARY KEY (id),
KEY (sysbench_run_id
);
* Generate a report out of the numbers
This script will generate a HTML version for putting up on the web and a
txt version for email usage.
Open items:
** Generate an overview table in the form of
Number of threads
1 4 8 16 32 64 128
sysbench test
delete 121.52 144.77 117.70 115.15 100.48 75.39 66.56
mean value of runs
1 first run
2 second run
3 third run
STDEV
STDEV in % of mean
CPU utilization (usr/sys/wait/idle)
IO (read/write)
For HTML version additionally generate a graph with JPGraph.
* Get machine(s) and run the test on a weekly basis and for each release
comparing with the prior release.
* Email weekly reports and blog about it.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Hakan): Benchmark suite for sysbench (100)
by worklog-noreply@askmonty.org 09 Mar '10
by worklog-noreply@askmonty.org 09 Mar '10
09 Mar '10
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Benchmark suite for sysbench
CREATION DATE..: Thu, 04 Mar 2010, 17:46
SUPERVISOR.....: Igor
IMPLEMENTOR....: Hakan
COPIES TO......:
CATEGORY.......: Other
TASK ID........: 100 (http://askmonty.org/worklog/?tid=100)
VERSION........: Benchmarks-3.0
STATUS.........: Assigned
PRIORITY.......: 60
WORKED HOURS...: 8
ESTIMATE.......: 32 (hours remain)
ORIG. ESTIMATE.: 40
PROGRESS NOTES:
-=-=(Hakan - Tue, 09 Mar 2010, 14:09)=-=-
Low Level Design modified.
--- /tmp/wklog.100.old.18803 2010-03-09 14:09:37.000000000 +0000
+++ /tmp/wklog.100.new.18803 2010-03-09 14:09:37.000000000 +0000
@@ -9,6 +9,12 @@
** Number of concurrent clients is hardcoded
** Machine specific configuration like location of binaries and
directories needed are in separate config files located at conf/<hostname>.inc
+ ** Set random seed of sysbench to have better comparison
+ ** Restart mysqld from scratch for each run and copy away
+ DATA_DIR of the database for faster starts.
+ ** Between each run, run sync and clear file system caches with
+ echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
+ ** Write out mysqld and sysbench options for reference.
The main loop of run-sysbench.sh is:
@@ -31,12 +37,6 @@
** sar -u (CPU utilization) hook
** Crash detection
** Error detection
- ** Set random seed of sysbench to have better comparision
- ** Restart mysqld from scratch for each run and copy away
- DATA_DIR of the database for faster starts.
- ** Between each run, run sync and clear file system caches with
- echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
- ** Write out mysqld and sysbench options for reference.
* Analyze numbers
This is implemented in analyze-sysbench.php
-=-=(Hakan - Tue, 09 Mar 2010, 14:06)=-=-
Added:
** Set random seed of sysbench to have better comparison
** Restart mysqld from scratch for each run and copy away
DATA_DIR of the database for faster starts.
** Between each run, run sync and clear file system caches with
echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
** Write out mysqld and sysbench options for reference.
Worked 8 hours and estimate 32 hours remain (original estimate unchanged).
-=-=(Hakan - Mon, 08 Mar 2010, 12:27)=-=-
Low Level Design modified.
--- /tmp/wklog.100.old.21404 2010-03-08 12:27:08.000000000 +0000
+++ /tmp/wklog.100.new.21404 2010-03-08 12:27:08.000000000 +0000
@@ -36,6 +36,7 @@
DATA_DIR of the database for faster starts.
** Between each run, run sync and clear file system caches with
echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
+ ** Write out mysqld and sysbench options for reference.
* Analyze numbers
This is implemented in analyze-sysbench.php
-=-=(Guest - Thu, 04 Mar 2010, 18:15)=-=-
Low Level Design modified.
--- /tmp/wklog.100.old.2695 2010-03-04 18:15:46.000000000 +0000
+++ /tmp/wklog.100.new.2695 2010-03-04 18:15:46.000000000 +0000
@@ -1 +1,112 @@
+All scripts can be found at lp:mariadb-tools/sysbench
+* Run sysbench tests on a machine and collect numbers
+This is implemented in run-sysbench.sh. Currently it supports:
+ ** Optionally pull of latest source from Launchpad and compile
+ ** Starting the server
+ ** Running each sysbench test for $LOOP_COUNT times and
+ $RUN_TIME time.
+ ** Number of concurrent clients is hardcoded
+ ** Machine specific configuration like location of binaries and
+ directories needed are in separate config files located at conf/<hostname>.inc
+
+The main loop of run-sysbench.sh is:
+
+start_mysqld
+for SYSBENCH_TEST in $SYSBENCH_TESTS
+ for THREADS in $NUM_THREADS
+ while [ $k -lt $LOOP_COUNT ]
+ drop schema sbtest
+ create schema sbtest
+
+ $SYSBENCH $SYSBENCH_OPTIONS prepare
+ $SYSBENCH $SYSBENCH_OPTIONS run
+ done
+ done
+done
+
+Open items:
+ ** OProfile hook
+ ** iostat hook
+ ** sar -u (CPU utilization) hook
+ ** Crash detection
+ ** Error detection
+ ** Set random seed of sysbench to have better comparision
+ ** Restart mysqld from scratch for each run and copy away
+ DATA_DIR of the database for faster starts.
+ ** Between each run, run sync and clear file system caches with
+ echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
+
+* Analyze numbers
+This is implemented in analyze-sysbench.php
+
+Open items:
+ ** Read result files from
+ ${RESULT_DIR}/${TODAY}/${PRODUCT}/${SYSBENCH_TEST}/${THREADS}/results.txt
+
+ ** Collect OProfile, iostat, cpu utilization, and machine info
+ ** Detect errors and crashes.
+ ** Generate SQL INSERT strings for presentation usage
+
+The layout for storing the numbers is:
+ CREATE TABLE sysbench_run (
+ id int unsigned NOT NULL auto_increment,
+ host varchar(80), -- Hostname we ran the test on.
+ run_date date, -- The day we ran the test.
+ sysbench_version varchar(32), -- Version of sysbench we used.
+ test_name varchar(32), -- Name of the sysbench test.
+ run_time int unsigned, -- Run time in seconds.
+ runs int unsigned, -- Number of iterations of the test.
+ PRIMARY KEY (id),
+ KEY (host),
+ KEY (run_date
+ );
+
+ CREATE TABLE sysbench_comment (
+ id int unsigned NOT NULL auto_increment,
+ sysbench_run_id int unsigned NOT NULL, -- FK pointing to sysbench_run.
+ compile_info text, -- Compile options we used.
+ machine_info text, -- Details about the hardware.
+ sysbench_options text, -- The sysbench options we used.
+ PRIMARY KEY (id),
+ KEY (sysbench_run_id)
+ );
+
+ CREATE TABLE sysbench_result (
+ id int unsigned NOT NULL auto_increment,
+ sysbench_run_id int unsigned NOT NULL, -- FK pointing to sysbench_run.
+ concurrency int unsigned, -- Concurrency level we used.
+ result decimal(7,2), -- The actual result.
+ io varchar(80), -- The IO from iostat.
+ cpu varchar(80), -- CPU utilization.
+ profile text, -- Profiling information.
+ error text, -- Error messages and stack traces.
+ PRIMARY KEY (id),
+ KEY (sysbench_run_id
+ );
+
+* Generate a report out of the numbers
+This script will generate a HTML version for putting up on the web and a
+txt version for email usage.
+
+Open items:
+ ** Generate an overview table in the form of
+ Number of threads
+ 1 4 8 16 32 64 128
+sysbench test
+ delete 121.52 144.77 117.70 115.15 100.48 75.39 66.56
+ mean value of runs
+ 1 first run
+ 2 second run
+ 3 third run
+ STDEV
+ STDEV in % of mean
+ CPU utilization (usr/sys/wait/idle)
+ IO (read/write)
+
+For HTML version additionally generate a graph with JPGraph.
+
+* Get machine(s) and run the test on a weekly basis and for each release
+comparing with the prior release.
+
+* Email weekly reports and blog about it.
DESCRIPTION:
Create a benchmark suite for running sysbench
* Run sysbench tests on a machine and collect numbers
* Analyze numbers
* Generate a report out of the numbers
LOW-LEVEL DESIGN:
All scripts can be found at lp:mariadb-tools/sysbench
* Run sysbench tests on a machine and collect numbers
This is implemented in run-sysbench.sh. Currently it supports:
** Optionally pull of latest source from Launchpad and compile
** Starting the server
** Running each sysbench test for $LOOP_COUNT times and
$RUN_TIME time.
** Number of concurrent clients is hardcoded
** Machine specific configuration like location of binaries and
directories needed are in separate config files located at conf/<hostname>.inc
** Set random seed of sysbench to have better comparison
** Restart mysqld from scratch for each run and copy away
DATA_DIR of the database for faster starts.
** Between each run, run sync and clear file system caches with
echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
** Write out mysqld and sysbench options for reference.
The main loop of run-sysbench.sh is:
start_mysqld
for SYSBENCH_TEST in $SYSBENCH_TESTS
for THREADS in $NUM_THREADS
while [ $k -lt $LOOP_COUNT ]
drop schema sbtest
create schema sbtest
$SYSBENCH $SYSBENCH_OPTIONS prepare
$SYSBENCH $SYSBENCH_OPTIONS run
done
done
done
Open items:
** OProfile hook
** iostat hook
** sar -u (CPU utilization) hook
** Crash detection
** Error detection
* Analyze numbers
This is implemented in analyze-sysbench.php
Open items:
** Read result files from
${RESULT_DIR}/${TODAY}/${PRODUCT}/${SYSBENCH_TEST}/${THREADS}/results.txt
** Collect OProfile, iostat, cpu utilization, and machine info
** Detect errors and crashes.
** Generate SQL INSERT strings for presentation usage
The layout for storing the numbers is:
CREATE TABLE sysbench_run (
id int unsigned NOT NULL auto_increment,
host varchar(80), -- Hostname we ran the test on.
run_date date, -- The day we ran the test.
sysbench_version varchar(32), -- Version of sysbench we used.
test_name varchar(32), -- Name of the sysbench test.
run_time int unsigned, -- Run time in seconds.
runs int unsigned, -- Number of iterations of the test.
PRIMARY KEY (id),
KEY (host),
KEY (run_date
);
CREATE TABLE sysbench_comment (
id int unsigned NOT NULL auto_increment,
sysbench_run_id int unsigned NOT NULL, -- FK pointing to sysbench_run.
compile_info text, -- Compile options we used.
machine_info text, -- Details about the hardware.
sysbench_options text, -- The sysbench options we used.
PRIMARY KEY (id),
KEY (sysbench_run_id)
);
CREATE TABLE sysbench_result (
id int unsigned NOT NULL auto_increment,
sysbench_run_id int unsigned NOT NULL, -- FK pointing to sysbench_run.
concurrency int unsigned, -- Concurrency level we used.
result decimal(7,2), -- The actual result.
io varchar(80), -- The IO from iostat.
cpu varchar(80), -- CPU utilization.
profile text, -- Profiling information.
error text, -- Error messages and stack traces.
PRIMARY KEY (id),
KEY (sysbench_run_id
);
* Generate a report out of the numbers
This script will generate a HTML version for putting up on the web and a
txt version for email usage.
Open items:
** Generate an overview table in the form of
Number of threads
1 4 8 16 32 64 128
sysbench test
delete 121.52 144.77 117.70 115.15 100.48 75.39 66.56
mean value of runs
1 first run
2 second run
3 third run
STDEV
STDEV in % of mean
CPU utilization (usr/sys/wait/idle)
IO (read/write)
For HTML version additionally generate a graph with JPGraph.
* Get machine(s) and run the test on a weekly basis and for each release
comparing with the prior release.
* Email weekly reports and blog about it.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Progress (by Hakan): Benchmark suite for sysbench (100)
by worklog-noreply@askmonty.org 09 Mar '10
by worklog-noreply@askmonty.org 09 Mar '10
09 Mar '10
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Benchmark suite for sysbench
CREATION DATE..: Thu, 04 Mar 2010, 17:46
SUPERVISOR.....: Igor
IMPLEMENTOR....: Hakan
COPIES TO......:
CATEGORY.......: Other
TASK ID........: 100 (http://askmonty.org/worklog/?tid=100)
VERSION........: Benchmarks-3.0
STATUS.........: Assigned
PRIORITY.......: 60
WORKED HOURS...: 8
ESTIMATE.......: 32 (hours remain)
ORIG. ESTIMATE.: 40
PROGRESS NOTES:
-=-=(Hakan - Tue, 09 Mar 2010, 14:06)=-=-
Added:
** Set random seed of sysbench to have better comparison
** Restart mysqld from scratch for each run and copy away
DATA_DIR of the database for faster starts.
** Between each run, run sync and clear file system caches with
echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
** Write out mysqld and sysbench options for reference.
Worked 8 hours and estimate 32 hours remain (original estimate unchanged).
-=-=(Hakan - Mon, 08 Mar 2010, 12:27)=-=-
Low Level Design modified.
--- /tmp/wklog.100.old.21404 2010-03-08 12:27:08.000000000 +0000
+++ /tmp/wklog.100.new.21404 2010-03-08 12:27:08.000000000 +0000
@@ -36,6 +36,7 @@
DATA_DIR of the database for faster starts.
** Between each run, run sync and clear file system caches with
echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
+ ** Write out mysqld and sysbench options for reference.
* Analyze numbers
This is implemented in analyze-sysbench.php
-=-=(Guest - Thu, 04 Mar 2010, 18:15)=-=-
Low Level Design modified.
--- /tmp/wklog.100.old.2695 2010-03-04 18:15:46.000000000 +0000
+++ /tmp/wklog.100.new.2695 2010-03-04 18:15:46.000000000 +0000
@@ -1 +1,112 @@
+All scripts can be found at lp:mariadb-tools/sysbench
+* Run sysbench tests on a machine and collect numbers
+This is implemented in run-sysbench.sh. Currently it supports:
+ ** Optionally pull of latest source from Launchpad and compile
+ ** Starting the server
+ ** Running each sysbench test for $LOOP_COUNT times and
+ $RUN_TIME time.
+ ** Number of concurrent clients is hardcoded
+ ** Machine specific configuration like location of binaries and
+ directories needed are in separate config files located at conf/<hostname>.inc
+
+The main loop of run-sysbench.sh is:
+
+start_mysqld
+for SYSBENCH_TEST in $SYSBENCH_TESTS
+ for THREADS in $NUM_THREADS
+ while [ $k -lt $LOOP_COUNT ]
+ drop schema sbtest
+ create schema sbtest
+
+ $SYSBENCH $SYSBENCH_OPTIONS prepare
+ $SYSBENCH $SYSBENCH_OPTIONS run
+ done
+ done
+done
+
+Open items:
+ ** OProfile hook
+ ** iostat hook
+ ** sar -u (CPU utilization) hook
+ ** Crash detection
+ ** Error detection
+ ** Set random seed of sysbench to have better comparision
+ ** Restart mysqld from scratch for each run and copy away
+ DATA_DIR of the database for faster starts.
+ ** Between each run, run sync and clear file system caches with
+ echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
+
+* Analyze numbers
+This is implemented in analyze-sysbench.php
+
+Open items:
+ ** Read result files from
+ ${RESULT_DIR}/${TODAY}/${PRODUCT}/${SYSBENCH_TEST}/${THREADS}/results.txt
+
+ ** Collect OProfile, iostat, cpu utilization, and machine info
+ ** Detect errors and crashes.
+ ** Generate SQL INSERT strings for presentation usage
+
+The layout for storing the numbers is:
+ CREATE TABLE sysbench_run (
+ id int unsigned NOT NULL auto_increment,
+ host varchar(80), -- Hostname we ran the test on.
+ run_date date, -- The day we ran the test.
+ sysbench_version varchar(32), -- Version of sysbench we used.
+ test_name varchar(32), -- Name of the sysbench test.
+ run_time int unsigned, -- Run time in seconds.
+ runs int unsigned, -- Number of iterations of the test.
+ PRIMARY KEY (id),
+ KEY (host),
+ KEY (run_date
+ );
+
+ CREATE TABLE sysbench_comment (
+ id int unsigned NOT NULL auto_increment,
+ sysbench_run_id int unsigned NOT NULL, -- FK pointing to sysbench_run.
+ compile_info text, -- Compile options we used.
+ machine_info text, -- Details about the hardware.
+ sysbench_options text, -- The sysbench options we used.
+ PRIMARY KEY (id),
+ KEY (sysbench_run_id)
+ );
+
+ CREATE TABLE sysbench_result (
+ id int unsigned NOT NULL auto_increment,
+ sysbench_run_id int unsigned NOT NULL, -- FK pointing to sysbench_run.
+ concurrency int unsigned, -- Concurrency level we used.
+ result decimal(7,2), -- The actual result.
+ io varchar(80), -- The IO from iostat.
+ cpu varchar(80), -- CPU utilization.
+ profile text, -- Profiling information.
+ error text, -- Error messages and stack traces.
+ PRIMARY KEY (id),
+ KEY (sysbench_run_id
+ );
+
+* Generate a report out of the numbers
+This script will generate a HTML version for putting up on the web and a
+txt version for email usage.
+
+Open items:
+ ** Generate an overview table in the form of
+ Number of threads
+ 1 4 8 16 32 64 128
+sysbench test
+ delete 121.52 144.77 117.70 115.15 100.48 75.39 66.56
+ mean value of runs
+ 1 first run
+ 2 second run
+ 3 third run
+ STDEV
+ STDEV in % of mean
+ CPU utilization (usr/sys/wait/idle)
+ IO (read/write)
+
+For HTML version additionally generate a graph with JPGraph.
+
+* Get machine(s) and run the test on a weekly basis and for each release
+comparing with the prior release.
+
+* Email weekly reports and blog about it.
DESCRIPTION:
Create a benchmark suite for running sysbench
* Run sysbench tests on a machine and collect numbers
* Analyze numbers
* Generate a report out of the numbers
LOW-LEVEL DESIGN:
All scripts can be found at lp:mariadb-tools/sysbench
* Run sysbench tests on a machine and collect numbers
This is implemented in run-sysbench.sh. Currently it supports:
** Optionally pull of latest source from Launchpad and compile
** Starting the server
** Running each sysbench test for $LOOP_COUNT times and
$RUN_TIME time.
** Number of concurrent clients is hardcoded
** Machine specific configuration like location of binaries and
directories needed are in separate config files located at conf/<hostname>.inc
The main loop of run-sysbench.sh is:
start_mysqld
for SYSBENCH_TEST in $SYSBENCH_TESTS
for THREADS in $NUM_THREADS
while [ $k -lt $LOOP_COUNT ]
drop schema sbtest
create schema sbtest
$SYSBENCH $SYSBENCH_OPTIONS prepare
$SYSBENCH $SYSBENCH_OPTIONS run
done
done
done
Open items:
** OProfile hook
** iostat hook
** sar -u (CPU utilization) hook
** Crash detection
** Error detection
** Set random seed of sysbench to have better comparision
** Restart mysqld from scratch for each run and copy away
DATA_DIR of the database for faster starts.
** Between each run, run sync and clear file system caches with
echo 3 > /proc/sys/vm/drop_caches (http://linux.die.net/man/5/proc)
** Write out mysqld and sysbench options for reference.
* Analyze numbers
This is implemented in analyze-sysbench.php
Open items:
** Read result files from
${RESULT_DIR}/${TODAY}/${PRODUCT}/${SYSBENCH_TEST}/${THREADS}/results.txt
** Collect OProfile, iostat, cpu utilization, and machine info
** Detect errors and crashes.
** Generate SQL INSERT strings for presentation usage
The layout for storing the numbers is:
CREATE TABLE sysbench_run (
id int unsigned NOT NULL auto_increment,
host varchar(80), -- Hostname we ran the test on.
run_date date, -- The day we ran the test.
sysbench_version varchar(32), -- Version of sysbench we used.
test_name varchar(32), -- Name of the sysbench test.
run_time int unsigned, -- Run time in seconds.
runs int unsigned, -- Number of iterations of the test.
PRIMARY KEY (id),
KEY (host),
KEY (run_date
);
CREATE TABLE sysbench_comment (
id int unsigned NOT NULL auto_increment,
sysbench_run_id int unsigned NOT NULL, -- FK pointing to sysbench_run.
compile_info text, -- Compile options we used.
machine_info text, -- Details about the hardware.
sysbench_options text, -- The sysbench options we used.
PRIMARY KEY (id),
KEY (sysbench_run_id)
);
CREATE TABLE sysbench_result (
id int unsigned NOT NULL auto_increment,
sysbench_run_id int unsigned NOT NULL, -- FK pointing to sysbench_run.
concurrency int unsigned, -- Concurrency level we used.
result decimal(7,2), -- The actual result.
io varchar(80), -- The IO from iostat.
cpu varchar(80), -- CPU utilization.
profile text, -- Profiling information.
error text, -- Error messages and stack traces.
PRIMARY KEY (id),
KEY (sysbench_run_id
);
* Generate a report out of the numbers
This script will generate a HTML version for putting up on the web and a
txt version for email usage.
Open items:
** Generate an overview table in the form of
Number of threads
1 4 8 16 32 64 128
sysbench test
delete 121.52 144.77 117.70 115.15 100.48 75.39 66.56
mean value of runs
1 first run
2 second run
3 third run
STDEV
STDEV in % of mean
CPU utilization (usr/sys/wait/idle)
IO (read/write)
For HTML version additionally generate a graph with JPGraph.
* Get machine(s) and run the test on a weekly basis and for each release
comparing with the prior release.
* Email weekly reports and blog about it.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0