Re: Merging hammer in master: conflict on gmock

2015-03-10 Thread Danny Al-Gaaf
Am 10.03.2015 um 09:02 schrieb Loic Dachary:
 Hi Danny,
 
 On 10/03/2015 06:59, Danny Al-Gaaf wrote:
 Am 10.03.2015 um 00:06 schrieb Loic Dachary:
[...]
 
 Do you know what changes have been done in hammer in src/gmock
 ?
 
 It seems as if there was no change to src/gmock in hammer that
 is not already in master.
 
 After the set of commands you suggest, how could we make sure
 nothing was trashed or unintentionally included ? I can't think of
 a sure method from the top of my head.

Since these commands only trash/ignore the changes to src/gmock from
the hammer branch. And I guess there will be nothing for this
directory we need to merge back to master.

In fact the merge conflict is not about commits AFAICS but about the
change in master from inline to submodule code.

One possibility would always be to extract the patches from hammer
(git checkout hammer  git format-patch master), and check after the
merge if one is missing (e.g. run 'git am' until you have a patch that
can be applied).

I know this is not ideal ... IMO git is missing an automated way to
handle these kind of merge conflict.

Danny
--
To unsubscribe from this list: send the line unsubscribe ceph-devel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: conditions for removing experimental feature marks

2015-03-10 Thread Miyamae, Takeshi
Dear Loic,

I really apologize that our reply is too late.
Since removing experimental flag from SHEC at v0.94 is our immediate hope, we 
should
have started any actions for that earlier.

By the way, you mean we must add just the same workaround as 10887 for SHEC
if our target is Hammer.
Is my understanding correct ?

 Running teuthology locally is non trivial, maybe we can provide you with 
 access to the
 community lab so that you can run teuthology suites against the existing 
 teuthology cluster
 (i.e. http://pulpito.ceph.com/). Would you like me to ask ?

Thank you for your proposal.
It would be greatly helpful if we were allowed to use it !

Best regards,
Takeshi Miyamae

-Original Message-
From: Loic Dachary [mailto:l...@dachary.org] 
Sent: Monday, February 16, 2015 6:17 PM
To: Miyamae, Takeshi/宮前 剛; ceph-devel@vger.kernel.org
Cc: Shiozawa, Kensuke/塩沢 賢輔; Nakao, Takanori/中尾 鷹詔
Subject: Re: conditions for removing experimental feature marks

Hi,

On 16/02/2015 08:37, Miyamae, Takeshi wrote:
 Dear Loic,
 
 Thank you for your help on the pull request of SHEC last week.
 We believe that marking experimental feature on SHEC was inevitable 
 and the way to restrict the feature is proper.
 
 By the way, could you let us know what are the conditions for removing 
 experimental feature marks in the future?
 Are additional thorough tests required?

The next step is to run integration tests with the shec plugin. The integration 
tests have shown that the shec plugin does not disrupt anything. Now we should 
check if it works properly under stress and upgrades. I created two tickets for 
that purpose:

http://tracker.ceph.com/issues/10886 : integration / theuthology integration / 
theuthology thrasher tests for the shec erasure code plugin
http://tracker.ceph.com/issues/10887 : erasure-code: allow upgrades for shec 
plugins

It would be fantastic if you could work on http://tracker.ceph.com/issues/7291 
: it would make the integration of new erasure code plugins easier. I realize 
that it is infrastructure work not directly of interest to the shec plugin 
implementation.

Running teuthology locally is non trivial, maybe we can provide you with access 
to the community lab so that you can run teuthology suites against the existing 
teuthology cluster (i.e. http://pulpito.ceph.com/). Would you like me to ask ? 

Cheers

 Best regards,
 Takeshi Miyamae
 

--
Loïc Dachary, Artisan Logiciel Libre



Re: conditions for removing experimental feature marks

2015-03-10 Thread Loic Dachary
Hi !

On 10/03/2015 11:35, Miyamae, Takeshi wrote:
 Dear Loic,
 
 I really apologize that our reply is too late.
 Since removing experimental flag from SHEC at v0.94 is our immediate hope, we 
 should
 have started any actions for that earlier.

No worries, it's never too late to do good :-)

 By the way, you mean we must add just the same workaround as 10887 for SHEC
 if our target is Hammer.
 Is my understanding correct ?

What is needed is integration tests running during a few weeks and showing the 
plugin behaves well. 

 Running teuthology locally is non trivial, maybe we can provide you with 
 access to the
 community lab so that you can run teuthology suites against the existing 
 teuthology cluster
 (i.e. http://pulpito.ceph.com/). Would you like me to ask ?
 
 Thank you for your proposal.
 It would be greatly helpful if we were allowed to use it !

Could you please connect to irc.oftc.net#sepia ? This is the IRC channel where 
lab related matters are discussed. We can figure out the details there. 

In the meantime you can try teuthology and write a single test quite easily, on 
your local machine. The tricky part comes where we want to run suites with 
large number of jobs. You can adapt the instructions from 
http://dachary.org/?p=2204 to your local environment. All you need really is 
the ability to run two virtual machines.

Cheers

 
 Best regards,
 Takeshi Miyamae
 
 -Original Message-
 From: Loic Dachary [mailto:l...@dachary.org] 
 Sent: Monday, February 16, 2015 6:17 PM
 To: Miyamae, Takeshi/宮前 剛; ceph-devel@vger.kernel.org
 Cc: Shiozawa, Kensuke/塩沢 賢輔; Nakao, Takanori/中尾 鷹詔
 Subject: Re: conditions for removing experimental feature marks
 
 Hi,
 
 On 16/02/2015 08:37, Miyamae, Takeshi wrote:
 Dear Loic,

 Thank you for your help on the pull request of SHEC last week.
 We believe that marking experimental feature on SHEC was inevitable 
 and the way to restrict the feature is proper.

 By the way, could you let us know what are the conditions for removing 
 experimental feature marks in the future?
 Are additional thorough tests required?
 
 The next step is to run integration tests with the shec plugin. The 
 integration tests have shown that the shec plugin does not disrupt anything. 
 Now we should check if it works properly under stress and upgrades. I created 
 two tickets for that purpose:
 
 http://tracker.ceph.com/issues/10886 : integration / theuthology integration 
 / theuthology thrasher tests for the shec erasure code plugin
 http://tracker.ceph.com/issues/10887 : erasure-code: allow upgrades for shec 
 plugins
 
 It would be fantastic if you could work on 
 http://tracker.ceph.com/issues/7291 : it would make the integration of new 
 erasure code plugins easier. I realize that it is infrastructure work not 
 directly of interest to the shec plugin implementation.
 
 Running teuthology locally is non trivial, maybe we can provide you with 
 access to the community lab so that you can run teuthology suites against the 
 existing teuthology cluster (i.e. http://pulpito.ceph.com/). Would you like 
 me to ask ? 
 
 Cheers
 
 Best regards,
 Takeshi Miyamae

 
 --
 Loïc Dachary, Artisan Logiciel Libre
 
 N�r��y���b�X��ǧv�^�)޺{.n�+���z�]z���{ay�ʇڙ�,j��f���h���z��w���
 ���j:+v���w�j�mzZ+�ݢj��!tml=
 

-- 
Loïc Dachary, Artisan Logiciel Libre



signature.asc
Description: OpenPGP digital signature


Re: FileStore performance: coalescing operations

2015-03-10 Thread Ning Yao
Can we also consider to coalesce two OP_SETATTR transaction to a
single OP_SETATTRS transaction?
Regards
Ning Yao


2015-03-05 15:04 GMT+08:00 Haomai Wang haomaiw...@gmail.com:
 I think the performance improvement can be refer to
 https://github.com/ceph/ceph/pull/2972 which I did a simple benchmark
 comparison.

 This coalescing should get a lighter improvement but I think obviously
 it should be better.

 On Thu, Mar 5, 2015 at 8:10 AM, Sage Weil s...@newdream.net wrote:
 On Tue, 3 Mar 2015, Sage Weil wrote:
 I think we should try to avoid the dups in the first place in the upper
 layers before resorting to deduping in the FileStore.

 I took a stab at this:

 https://github.com/ceph/ceph/pull/3878

 Here's what the txns look like now:

 {
 ops: [
 {
 op_num: 0,
 op_name: omap_setkeys,
 collection: 0.2_head,
 oid: 2\/\/head\/\/0,
 attr_lens: {
 05.0002: 178,
 _epoch: 4,
 _info: 729,
 can_rollback_to: 12,
 rollback_info_trimmed_to: 12
 }
 },
 {
 op_num: 1,
 op_name: write,
 collection: 0.2_head,
 oid: 8b08fa52\/benchmark_data_maetl_15609_object5\/head\/\/0,
 length: 123,
 offset: 0,
 bufferlist length: 123
 },
 {
 op_num: 2,
 op_name: setattr,
 collection: 0.2_head,
 oid: 8b08fa52\/benchmark_data_maetl_15609_object5\/head\/\/0,
 name: _,
 length: 269
 },
 {
 op_num: 3,
 op_name: setattr,
 collection: 0.2_head,
 oid: 8b08fa52\/benchmark_data_maetl_15609_object5\/head\/\/0,
 name: snapset,
 length: 31
 }
 ]
 }

 Care to give that a spin and see if it give syou a similar (or better)
 improvement?

 sage
 --
 To unsubscribe from this list: send the line unsubscribe ceph-devel in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html



 --
 Best Regards,

 Wheat
 --
 To unsubscribe from this list: send the line unsubscribe ceph-devel in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line unsubscribe ceph-devel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


ceph v0.80.9 debian source packages???

2015-03-10 Thread Valery Tschopp

Hi guys,

The last trusty version 0.80.9 have been pushed in the deb 
http://ceph.com/debian-firefly/ trusty main repository yesterday.


The last packages have the version 0.80.9-1trusty, but I can not find 
the corresponding source packages in 
http://gitbuilder.ceph.com/ceph-deb-trusty-x86_64-basic/ref/v0.80.9


Where can I find the correct ceph_0.80.9-1trusty.dsc and 
ceph_0.80.9-1trusty.tar.gz source packages?


Regards,
Valery
--
SWITCH
--
Valery Tschopp, Software Engineer, Peta Solutions
Werdstrasse 2, P.O. Box, 8021 Zurich, Switzerland
email: valery.tsch...@switch.ch phone: +41 44 268 1544




smime.p7s
Description: S/MIME Cryptographic Signature


[PATCH V6 1/5] Build support for BlkKin (LTTng + Zipkin) tracing

2015-03-10 Thread Andrew Shewmaker
 * Adds --with-blkin to autoconf (default without)
 * Adds BLKIN_LIBS to necessary automake files
 * Adds documentation for testing BlkKin tracing
 * Adds ztrace initialization

Signed-off-by: Andrew Shewmaker ags...@gmail.com
Signed-off-by: Marios-Evaggelos Kogias marioskog...@gmail.com
Signed-off-by: Chendi.Xue chendi@intel.com
---
 configure.ac |   11 +++
 do_autogen.sh|5 +
 doc/dev/blkin.rst|  168 +++
 src/Makefile-env.am  |6 +
 src/Makefile.am  |   14 +++
 src/ceph_mds.cc  |2 
 src/ceph_mon.cc  |2 
 src/ceph_osd.cc  |2 
 src/librados/Makefile.am |9 ++
 src/librbd/Makefile.am   |   10 ++
 src/mon/Makefile.am  |   11 ++-
 src/msg/Makefile.am  |8 ++
 src/os/Makefile.am   |8 ++
 src/osd/Makefile.am  |9 ++
 src/osdc/Makefile.am |9 ++
 15 files changed, 271 insertions(+), 3 deletions(-)
 create mode 100644 doc/dev/blkin.rst

diff --git a/configure.ac b/configure.ac
index 05f0cf9..78d431d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -333,6 +333,17 @@ if test x$enable_coverage != xno; then
 fi
 AC_SUBST(GCOV_PREFIX_STRIP, `echo $(pwd)/src | tr -dc / | wc -c`)
 
+# blkin (lttng+zipkin) tracing?
+AC_ARG_WITH([blkin],
+   [AS_HELP_STRING([--with-blkin], [blkin (lttng + zipkin) tracing])],
+   [],
+   [with_blkin=no])
+have_blkin=no
+AS_IF([test x$with_blkin == xyes],
+[PKG_CHECK_MODULES([BLKIN], [blkin], [have_blkin=yes])])
+AM_CONDITIONAL(WITH_BLKIN, test x$have_blkin == xyes)
+AM_COND_IF([WITH_BLKIN], [AC_DEFINE([WITH_BLKIN], [1], [Defined if using 
BlkKin])])
+
 # radosgw?
 AC_ARG_WITH([radosgw],
 [AS_HELP_STRING([--with-radosgw], [build RADOS gateway])],
diff --git a/do_autogen.sh b/do_autogen.sh
index 7df1c93..0e50654 100755
--- a/do_autogen.sh
+++ b/do_autogen.sh
@@ -5,6 +5,7 @@ usage() {
 do_autogen.sh: make a ceph build by running autogen, etc.
 
 -h:  this help message
+-b   blkin tracing
 -d level   debug build
  level 0: no debug
  level 1: -g
@@ -32,9 +33,11 @@ debug_level=0
 verbose=0
 profile=0
 CONFIGURE_FLAGS=--disable-static --with-lttng
-while getopts  d:e:hHrTPJLjpcvO: flag
+while getopts  bd:e:hHrTPJLjpcvO: flag
 do
 case $flag in
+b) CONFIGURE_FLAGS=$CONFIGURE_FLAGS --with-blkin;;
+
 d) debug_level=$OPTARG;;
 
 O) CFLAGS=${CFLAGS} -O$OPTARG;;
diff --git a/doc/dev/blkin.rst b/doc/dev/blkin.rst
new file mode 100644
index 000..bf14142
--- /dev/null
+++ b/doc/dev/blkin.rst
@@ -0,0 +1,168 @@
+=
+ Tracing Ceph With BlkKin
+=
+
+Ceph can use Blkin, a library created by Marios Kogias and others,
+which enables tracking a specific request from the time it enters
+the system at higher levels till it is finally served by RADOS.
+
+In general, Blkin implements the Dapper_ tracing semantics
+in order to show the causal relationships between the different
+processing phases that an IO request may trigger. The goal is an
+end-to-end visualisation of the request's route in the system,
+accompanied by information concerning latencies in each processing
+phase. Thanks to LTTng this can happen with a minimal overhead and
+in realtime. The LTTng traces can then be visualized with Twitter's
+Zipkin_.
+
+.. _Dapper: 
http://static.googleusercontent.com/media/research.google.com/el//pubs/archive/36356.pdf
+.. _Zipkin: http://twitter.github.io/zipkin/
+
+
+Installing Blkin
+
+
+You can install Markos Kogias' upstream Blkin_ by hand.::
+
+  cd blkin/
+  make  make install
+
+ or build
+distribution packages using DistroReadyBlkin_, which also comes
+with pkgconfig support. If you choose the latter, then you must
+generate the configure and make files first.::
+
+  cd blkin
+  autoreconf -i
+
+.. _Blkin: https://github.com/marioskogias/blkin
+.. _DistroReadyBlkin: https://github.com/agshew/blkin
+
+
+Configuring Ceph with Blkin
+===
+
+If you built and installed Blkin by hand, rather than building and
+installing packages, then set these variables before configuring
+Ceph.::
+
+  export BLKIN_CFLAGS=-Iblkin/
+  export BLKIN_LIBS=-lzipkin-cpp
+
+Since there are separate lttng and blkin changes to Ceph, you may
+want to configure with something like::
+
+  ./configure --with-blkin --without-lttng --with-debug
+
+
+Testing Blkin
+=
+
+It's easy to test Ceph's Blkin tracing. Let's assume you don't have
+Ceph already running, and you compiled Ceph with Blkin support but
+you did't install it. Then launch Ceph with the ``vstart.sh`` script
+in Ceph's src directgory so you can see the possible tracepoints.::
+
+  cd src
+  OSD=3 MON=3 RGW=1 ./vstart.sh -n
+  lttng list --userspace
+
+You'll see something like the following:::
+
+  UST events:
+  

[no subject]

2015-03-10 Thread Andrew Shewmaker
The following patches are based on the work of Marios Kogias, first
posted in August. http://www.spinics.net/lists/ceph-devel/msg19890.html
This patch is against HEAD as of March 10th,
commit 5d5b510810e96503b9323b010149f7bd5b45db7c.
It can also be found at https://github.com/agshew/ceph/tree/wip-blkin-v6

Thanks to Josh Durgin again for comments on the V5 patchset.

I think the blkin patchset is looking pretty good at this point.


Outstanding issues:

1) librados will need more general blkin tracing
currently it only has aio_read_traced() and aio_write_traced() calls

2) some work will need to be done filtering blkin events/keyvalues


To Do:

 1. push a wip-blkin branch to github.com/ceph and take advantage of gitbuilder 
test/qa
 2. submit a pull request
 3. add Andreas' tracepoints https://github.com/ceph/ceph/pull/2877 using Blkin
and investigate how easy it is to select the level of tracing detail


Changes since V5:

  * put MOSDOp encode(features) statement back that was accidentally left out 
in V5
  * moved OSD daemonize call back to original spot
  * initialized blkin in ceph-mds (and moved all initializations to first patch)
  * updated aio_read_traced() and aio_write_traced() to match non-traced 
versions
  * improved blkin wrapper readability by removing unnecessary stringification

Changes since V4:

  * removed messenger_end trace event
In Pipe::reader(), when message is enqueued, it will be destroyed.
Naive pointer checks don't work here. You can't depend on
pointers being set to null on destruction. It may be possible to wrap
trace event with m-get() and m-put() to keep it around, or put this
trace event in dispatch paths, but just removing trace event for now
in order to move forward.
  * removed mutex in aio_*_traced() methods
A mutex was carried forward from Marios' original patch while rebasing
when it should have been removed.
  * removed Message::trace_end_after_span
Message::trace_end_after_span did not ever appear to be true, so
it has been removed
  * added asserts for master trace and endpoint checks
Tried to use asserts in more places, but they prevented execution.
Tried to use douts and ldouts instead, but they didn't work.
  * added parens around macro pointer args
parens make it safer to use pointers passed as arguments in a macro

Changes since V2:

  * WITH_BLKIN added to makefile vars when necessary
  * added Blkin build instructions
  * added Zipkin build instructions
  * Blkin wrapper macros do not stringify args any longer.
The macro wrappers will be more flexible/robust if they don't
turn arguments into strings.
  * added missing blkin_trace_info struct prototype to librados.h
  * TrackedOp trace creation methods are virtual, implemented in OpRequest
  * avoid faults due to non-existent traces
Check if osd_trace exists when creating a pg_trace, etc.
Return true only if trace creation was successful.
Use dout() if trace_osd, trace_pg, etc. fail, in order to ease debugging.
  * create trace_osd in ms_fast_dispatch

Changes since V1:
  * split build changes into separate patch
  * conditional build support for blkin (default off)
  * blkin is not a Ceph repo submodule
build and install packages from https://github.com/agshew/blkin.git
Note: rpms don't support babeltrace plugins for use with Zipkin
  * removal of debugging in Message::init_trace_info()

With this patchset Ceph can use Blkin, a library created by
Marios Kogias and others, which enables tracking a specific request
from the time it enters the system at higher levels till it is finally
served by RADOS.

In general, Blkin implements the tracing semantics described in the Dapper
paper 
http://static.googleusercontent.com/media/research.google.com/el/pubs/archive/36356.pdf
in order to trace the causal relationships between the different
processing phases that an IO request may trigger. The goal is an end-to-end
visualisation of the request's route in the system, accompanied by information
concerning latencies in each processing phase. Thanks to LTTng this can happen
with a minimal overhead and in realtime. In order to visualize the results Blkin
was integrated with Twitter's Zipkin http://twitter.github.io/zipkin/
(which is a tracing system entirely based on Dapper).

A short document describing how to test Blkin tracing in Ceph with Zipkin
is in doc/dev/trace.rst
--
To unsubscribe from this list: send the line unsubscribe ceph-devel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH V6 3/5] OSD support for blkin (LTTng + Zipkin) tracing

2015-03-10 Thread Andrew Shewmaker
 * Adds tracing for OSDs and Placement Groups, specifically:
   messages for OSD operations, FileJournal, FileStore,
   ECBackend, replication, and traced versions of Objecter
   read/write (only basic read/write functions).
 * Moves global_init_daemonize() earlier in ceph_osd.c:main

Signed-off-by: Marios-Evaggelos Kogias marioskog...@gmail.com
Signed-off-by: Filippos Giannakos philipg...@grnet.gr
Signed-off-by: Andrew Shewmaker ags...@gmail.com
Signed-off-by: Chendi.Xue chendi@intel.com
---
 20 files changed, 323 insertions(+), 14 deletions(-)
 messages/MOSDOp.h |   13 
 messages/MOSDOpReply.h|   13 
 messages/MOSDSubOp.h  |   11 ++
 messages/MOSDSubOpReply.h |   12 +++
 os/FileJournal.cc |   14 ++--
 os/FileJournal.h  |6 +++
 os/FileStore.cc   |   20 
 os/FileStore.h|1 
 osd/ECBackend.cc  |8 +++-
 osd/OSD.cc|   21 +
 osd/OSD.h |1 
 osd/OpRequest.cc  |   74 ++
 osd/OpRequest.h   |9 +
 osd/PG.cc |2 +
 osd/PG.h  |1 
 osd/ReplicatedBackend.cc  |   19 +--
 osd/ReplicatedPG.cc   |   35 +
 osdc/Objecter.cc  |7 
 osdc/Objecter.h   |   63 ++-
 19 files changed, 319 insertions(+), 11 deletions(-)

diff --git a/src/messages/MOSDOp.h b/src/messages/MOSDOp.h
index 5b88f31..388c9b9 100644
--- a/src/messages/MOSDOp.h
+++ b/src/messages/MOSDOp.h
@@ -32,7 +32,11 @@ class OSD;
 
 class MOSDOp : public Message {
 
+#ifdef WITH_BLKIN
+  static const int HEAD_VERSION = 6;
+#else
   static const int HEAD_VERSION = 5;
+#endif
   static const int COMPAT_VERSION = 3;
 
 private:
@@ -185,6 +189,7 @@ public:
 
   // marshalling
   virtual void encode_payload(uint64_t features) {
+BLKIN_GET_MASTER(mt);
 
 OSDOp::merge_osd_op_vector_in_data(ops, data);
 
@@ -261,11 +266,14 @@ struct ceph_osd_request_head {
 
   ::encode(retry_attempt, payload);
   ::encode(features, payload);
+
+  BLKIN_MSG_ENCODE_TRACE();
 }
   }
 
   virtual void decode_payload() {
 bufferlist::iterator p = payload.begin();
+BLKIN_MSG_DO_INIT_TRACE();
 
 if (header.version  2) {
   // old decode
@@ -348,6 +356,8 @@ struct ceph_osd_request_head {
::decode(features, p);
   else
features = 0;
+
+  BLKIN_MSG_DECODE_TRACE(6);
 }
 
 OSDOp::split_osd_op_vector_in_data(ops, data);
@@ -390,6 +400,9 @@ struct ceph_osd_request_head {
 out   e  osdmap_epoch;
 out  );
   }
+
+  BLKIN_MSG_INFO_DECL(MOSDOp)
+  BLKIN_MSG_END_DECL(MOSDOp)
 };
 
 
diff --git a/src/messages/MOSDOpReply.h b/src/messages/MOSDOpReply.h
index b2d5155..64f01c1 100644
--- a/src/messages/MOSDOpReply.h
+++ b/src/messages/MOSDOpReply.h
@@ -32,7 +32,11 @@
 
 class MOSDOpReply : public Message {
 
+#ifdef WITH_BLKIN
+  static const int HEAD_VERSION = 7;
+#else
   static const int HEAD_VERSION = 6;
+#endif
   static const int COMPAT_VERSION = 2;
 
   object_t oid;
@@ -143,6 +147,7 @@ public:
   if (ignore_out_data)
ops[i].outdata.clear();
 }
+BLKIN_MSG_CHECK_SPAN();
   }
 private:
   ~MOSDOpReply() {}
@@ -150,6 +155,8 @@ private:
 public:
   virtual void encode_payload(uint64_t features) {
 
+BLKIN_GET_MASTER(mt);
+
 OSDOp::merge_osd_op_vector_out_data(ops, data);
 
 if ((features  CEPH_FEATURE_PGID64) == 0) {
@@ -189,10 +196,13 @@ public:
   ::encode(replay_version, payload);
   ::encode(user_version, payload);
   ::encode(redirect, payload);
+
+  BLKIN_MSG_ENCODE_TRACE();
 }
   }
   virtual void decode_payload() {
 bufferlist::iterator p = payload.begin();
+BLKIN_MSG_DO_INIT_TRACE();
 if (header.version  2) {
   ceph_osd_reply_head head;
   ::decode(head, p);
@@ -244,6 +254,8 @@ public:
 
   if (header.version = 6)
::decode(redirect, p);
+
+  BLKIN_MSG_DECODE_TRACE(7);
 }
   }
 
@@ -270,6 +282,7 @@ public:
 out  );
   }
 
+  BLKIN_MSG_END_DECL(MOSDOpReply)
 };
 
 
diff --git a/src/messages/MOSDSubOp.h b/src/messages/MOSDSubOp.h
index 544dfcf..96f48a9 100644
--- a/src/messages/MOSDSubOp.h
+++ b/src/messages/MOSDSubOp.h
@@ -25,8 +25,13 @@
 
 class MOSDSubOp : public Message {
 
+#ifdef WITH_BLKIN
+  static const int HEAD_VERSION = 12;
+#else
   static const int HEAD_VERSION = 11;
   static const int COMPAT_VERSION = 7;
+#endif
+  static const int COMPAT_VERSION = 1;
 
 public:
   epoch_t map_epoch;
@@ -103,6 +108,7 @@ public:
 //version =7
 assert (header.version = 7);
 bufferlist::iterator p = payload.begin();
+BLKIN_MSG_DO_INIT_TRACE();
 ::decode(map_epoch, p);
 ::decode(reqid, p);
 ::decode(pgid.pgid, p);
@@ -170,6 +176,7 @@ public:
 } else {
   pg_trim_rollback_to = pg_trim_to;
 }
+BLKIN_MSG_DECODE_TRACE(12);
   }
 
   virtual void 

[PATCH V6 2/5] Initial support for blkin (LTTng + Zipkin) tracing

2015-03-10 Thread Andrew Shewmaker
 * Adds conditional build support.
 * Adds BLKIN_* macro wrappers to reduce need for ifdef WITH_BLKIN.
 * Adds blkin header include.
 * Adds message infrastructure for blkin tracing.
 * Adds blkin trace events and keyvals to OpTracker.
 * Adds osd, pg, journal, and filestore blkin traces to OpTracker/OpRequest.

These changes are Marios', with the following exceptions:
 * split out initial support for Marios' additional tracing changes
 * conditional build and BLKIN_* macro wrappers
 * blkin include path is blkin/ztracer.hpp
 * only Message.h includes blkin, as others include Message.h
 * commented code has been removed
 * unused lname var/code in SimpleMessenger has been removed
 * excluded messenger_trace because it appears not to be used
 * braces added to conditionals to match recommended coding style
   note: did not change member variable names to use m_ prefix
 since member vars in same class did not
 * Ref suffix added to TrackedOp shared_ptr vars to be consistent
   note: did not add -Ref suffix to ZTrace*Ref vars in Message
 * TrackedOp trace creation methods are virtual, implemented in OpRequest
 * avoid faults due to non-existent traces
   Check if osd_trace exists when creating a pg_trace, etc.
   Return true only if trace creation was successful.
   Use dout() if trace_osd, trace_pg, etc. fail, in order to ease debugging.

Signed-off-by: Marios-Evaggelos Kogias marioskog...@gmail.com
Signed-off-by: Filippos Giannakos philipg...@grnet.gr
Signed-off-by: Andrew Shewmaker ags...@gmail.com
Signed-off-by: Chendi.Xue chendi@intel.com
---
 src/common/TrackedOp.cc   |  82 ++
 src/common/TrackedOp.h|  26 ++
 src/common/blkin_wrapper.h| 171 ++
 src/msg/Message.cc|  76 +
 src/msg/Message.h |  25 ++
 src/msg/msg_types.cc  |  23 -
 src/msg/msg_types.h   |   1 +
 src/msg/simple/Pipe.cc|  31 +++
 src/msg/simple/Pipe.h |   4 +
 src/msg/simple/SimpleMessenger.cc |   1 +
 10 files changed, 437 insertions(+), 3 deletions(-)
 create mode 100644 src/common/blkin_wrapper.h

diff --git a/src/common/TrackedOp.cc b/src/common/TrackedOp.cc
index 32dbc53..611911f 100644
--- a/src/common/TrackedOp.cc
+++ b/src/common/TrackedOp.cc
@@ -293,8 +293,22 @@ void OpTracker::_mark_event(TrackedOp *op, const string 
evt,
  
 }
 
+#ifdef WITH_BLKIN
+void OpTracker::trace_event(TrackedOp *op, TrackedOpTraceRef t, const string 
evt, TrackedOpEndpointRef ep)
+{
+  t-event(evt, ep);
+}
+
+void OpTracker::trace_keyval(TrackedOp *op, TrackedOpTraceRef t, const string 
key,
+const string val, TrackedOpEndpointRef ep)
+{
+  t-keyval(key, val, ep);
+}
+#endif
+
 void OpTracker::RemoveOnDelete::operator()(TrackedOp *op) {
   op-mark_event(done);
+  BLKIN_OP_TRACE_EVENT(op, osd, span_ended);
   if (!tracker-tracking_enabled) {
 op-_unregistered();
 delete op;
@@ -332,3 +346,71 @@ void TrackedOp::dump(utime_t now, Formatter *f) const
 f-close_section();
   }
 }
+
+#ifdef WITH_BLKIN
+void TrackedOp::trace_osd(string event)
+{
+  if (!osd_trace) {
+dout(5)  trace_osd failed, osd_trace doesn't exist, event:   event 
 dendl;
+return;
+  }
+
+  tracker-trace_event(this, osd_trace, event, osd_trace-get_endpoint());
+}
+
+void TrackedOp::trace_osd(string key, string val)
+{
+  if (!osd_trace) {
+dout(5)  trace_osd failed, osd_trace doesn't exist, key:   key   
val:   val  dendl;
+return;
+  }
+
+  tracker-trace_keyval(this, osd_trace, key, val, osd_trace-get_endpoint());
+}
+
+void TrackedOp::trace_pg(string event)
+{
+  if (!pg_trace) {
+dout(5)  trace_pg failed, pg_trace doesn't exist, event:   event  
dendl;
+return;
+  } else if (!osd_trace) {
+dout(5)  trace_pg failed, osd_trace doesn't exist, event:   event  
dendl;
+return;
+  }
+
+  tracker-trace_event(this, osd_trace, event, pg_trace-get_endpoint());
+}
+
+void TrackedOp::get_pg_trace_info(struct blkin_trace_info *info)
+{
+  if (!pg_trace) {
+dout(5)  get_pg_trace failed, pg_trace doesn't exist  dendl;
+return;
+  } else if (!osd_trace) {
+dout(5)  get_pg_trace failed, osd_trace doesn't exist  dendl;
+return;
+  }
+
+  osd_trace-get_trace_info(info);
+}
+
+void TrackedOp::trace_journal(string event)
+{
+  if (!journal_trace) {
+dout(5)  trace_journal failed, journal_trace doesn't exist, event:   
event  dendl;
+return;
+  }
+
+  tracker-trace_event(this, journal_trace, event, 
journal_trace-get_endpoint());
+}
+
+void TrackedOp::trace_filestore(string event)
+{
+  if (!filestore_trace) {
+dout(5)  trace_filestore failed, filestore_trace doesn't exist, event: 
  event  dendl;
+return;
+  }
+
+  tracker-trace_event(this, filestore_trace, event, 
filestore_trace-get_endpoint());
+}
+#endif // WITH_BLKIN
diff --git a/src/common/TrackedOp.h b/src/common/TrackedOp.h
index 42d1eaf..fc861f7 

[PATCH V6 4/5] Rados support for blkin (LTTng + Zipkin) tracing

2015-03-10 Thread Andrew Shewmaker
 * Adds traced versions of Rados aio_read/write

Signed-off-by: Marios-Evaggelos Kogias marioskog...@gmail.com
Signed-off-by: Filippos Giannakos philipg...@grnet.gr
Signed-off-by: Andrew Shewmaker ags...@gmail.com
Signed-off-by: Chendi.Xue chendi@intel.com
---
 include/rados/librados.h |   13 ++
 librados/IoCtxImpl.cc|   91 +++
 librados/IoCtxImpl.h |   12 ++
 librados/RadosClient.cc  |1 
 librados/librados.cc |   30 +++
 5 files changed, 147 insertions(+)

diff --git a/src/include/rados/librados.h b/src/include/rados/librados.h
index 15a225b..aa0416e 100644
--- a/src/include/rados/librados.h
+++ b/src/include/rados/librados.h
@@ -1736,6 +1736,13 @@ CEPH_RADOS_API int rados_aio_write(rados_ioctx_t io, 
const char *oid,
   rados_completion_t completion,
   const char *buf, size_t len, uint64_t off);
 
+#ifdef WITH_BLKIN
+struct blkin_trace_info;
+int rados_aio_write_traced(rados_ioctx_t io, const char *oid,
+rados_completion_t completion,
+const char *buf, size_t len, uint64_t off,
+struct blkin_trace_info *info);
+#endif
 /**
  * Asychronously append data to an object
  *
@@ -1818,6 +1825,12 @@ CEPH_RADOS_API int rados_aio_read(rados_ioctx_t io, 
const char *oid,
  rados_completion_t completion,
  char *buf, size_t len, uint64_t off);
 
+#ifdef WTIH_BLKIN
+int rados_aio_read_traced(rados_ioctx_t io, const char *oid,
+rados_completion_t completion,
+char *buf, size_t len, uint64_t off,
+struct blkin_trace_info *info);
+#endif
 /**
  * Block until all pending writes in an io context are safe
  *
diff --git a/src/librados/IoCtxImpl.cc b/src/librados/IoCtxImpl.cc
index 5ef56c0..cfff8a6 100644
--- a/src/librados/IoCtxImpl.cc
+++ b/src/librados/IoCtxImpl.cc
@@ -31,6 +31,7 @@ librados::IoCtxImpl::IoCtxImpl() :
   aio_write_seq(0), 
cached_pool_names_lock(librados::IoCtxImpl::cached_pool_names_lock),
   objecter(NULL)
 {
+BLKIN_MSG_END(ioctx_endpoint, 0.0.0.0, 0, ioctx);
 }
 
 librados::IoCtxImpl::IoCtxImpl(RadosClient *c, Objecter *objecter,
@@ -42,6 +43,7 @@ librados::IoCtxImpl::IoCtxImpl(RadosClient *c, Objecter 
*objecter,
 aio_write_seq(0), 
cached_pool_names_lock(librados::IoCtxImpl::cached_pool_names_lock),
 objecter(objecter)
 {
+BLKIN_MSG_END(ioctx_endpoint, 0.0.0.0, 0, ioctx);
 }
 
 void librados::IoCtxImpl::set_snap_read(snapid_t s)
@@ -516,6 +518,7 @@ int librados::IoCtxImpl::operate(const object_t oid, 
::ObjectOperation *o,
   Objecter::Op *objecter_op = objecter-prepare_mutate_op(oid, oloc,
  *o, snapc, ut, flags,
  NULL, oncommit, ver);
+  BLKIN_OP_SET_TRACE(objecter_op, o-trace);
   objecter-op_submit(objecter_op);
 
   mylock.Lock();
@@ -645,6 +648,48 @@ int librados::IoCtxImpl::aio_read(const object_t oid, 
AioCompletionImpl *c,
   return 0;
 }
 
+#ifdef WITH_BLKIN
+int librados::IoCtxImpl::aio_read_traced(const object_t oid, AioCompletionImpl 
*c,
+char *buf, size_t len, uint64_t off,
+uint64_t snapid,
+struct blkin_trace_info *info)
+{
+  if (len  (size_t) INT_MAX)
+return -EDOM;
+
+  /*handle trace*/
+  ZTracer::ZTraceRef trace;
+  trace = ZTracer::create_ZTrace(librados, ioctx_endpoint, info, true);
+  if (!trace) {
+ldout(client-cct, 5)  librados read trace could not be created  
dendl;
+return -1;
+  }
+
+  trace-event(librados accept);
+  Context *onack = new C_aio_Ack(c);
+
+  c-is_read = true;
+  c-io = this;
+  c-bl.clear();
+  c-bl.push_back(buffer::create_static(len, buf));
+  c-blp = c-bl;
+
+  c-tid = objecter-read(oid, oloc,
+off, len, snapid, c-bl, 0,
+onack, c-objver);
+
+  trace-event(send to objecter);
+  struct blkin_trace_info *child_info = (struct blkin_trace_info *)
+  malloc(sizeof(struct blkin_trace_info));
+  trace-get_trace_info(child_info);
+  objecter-read_traced(oid, oloc,
+off, len, snapid, c-bl, 0,
+onack, child_info, c-objver);
+
+  return 0;
+}
+#endif // WITH_BLKIN
+
 class C_ObjectOperation : public Context {
 public:
   ::ObjectOperation m_ops;
@@ -705,6 +750,52 @@ int librados::IoCtxImpl::aio_write(const object_t oid, 
AioCompletionImpl *c,
   return 0;
 }
 
+#ifdef WITH_BLKIN
+int librados::IoCtxImpl::aio_write_traced(const object_t oid, 
AioCompletionImpl *c,
+ const bufferlist bl, size_t len,
+ uint64_t off, struct blkin_trace_info 
*info)
+{
+  utime_t ut = ceph_clock_now(client-cct);
+  ldout(client-cct, 20)  aio_write_traced   oid off  ~  
len   snapc=  snapc   snap_seq=  snap_seq  dendl;
+
+ 

[PATCH V6 5/5] Rados example for blkin (LTTng + Zipkin) tracing

2015-03-10 Thread Andrew Shewmaker
This code is Marios', with the following exceptions:
 * split out example from other tracing changes
 * changed name of example
 * whitespace issues have been fixed
 * Makefile cleans up the new example

Signed-off-by: Marios-Evaggelos Kogias marioskog...@gmail.com
Signed-off-by: Filippos Giannakos philipg...@grnet.gr
Signed-off-by: Andrew Shewmaker ags...@gmail.com
---
 Makefile  |9 
 hello_blkin.c |  107 ++
 2 files changed, 116 insertions(+)
 create mode 100644 examples/librados/hello_blkin.c

diff --git a/examples/librados/Makefile b/examples/librados/Makefile
index 190cca2..f8d8e1d 100644
--- a/examples/librados/Makefile
+++ b/examples/librados/Makefile
@@ -1,4 +1,8 @@
+ifdef WITH_BLKIN
+all: librados_hello_world librados_hello_world_c librados_hello_blkin
+else
 all: librados_hello_world librados_hello_world_c
+endif
 
 librados_hello_world: hello_world.cc
g++ -g -c hello_world.cc -o hello_world.o $(CFLAGS)
@@ -8,6 +12,11 @@ librados_hello_world_c: hello_world_c.c
cc -g -c hello_world_c.c -o hello_world_c.o $(CFLAGS)
cc -g hello_world_c.o -lrados -o librados_hello_world_c $(LDFLAGS)
 
+librados_hello_blkin: hello_blkin.c
+   cc -g -c hello_blkin.c -o hello_blkin.o $(CFLAGS)
+   cc -g hello_blkin.o -lrados -lblkin-front -o librados_hello_blkin 
$(LDFLAGS)
+
 clean:
rm hello_world.o librados_hello_world
rm hello_world_c.o librados_hello_world_c
+   rm hello_blkin.o librados_hello_blkin
diff --git a/examples/librados/hello_blkin.c b/examples/librados/hello_blkin.c
new file mode 100644
index 000..1bc1c50
--- /dev/null
+++ b/examples/librados/hello_blkin.c
@@ -0,0 +1,107 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#include stdio.h
+#include rados/librados.h
+#include stdlib.h
+#include blkin-front.h
+
+#define POOL data
+
+const char *object_name = hello_world_object;
+const char *object_val = hello world!;
+
+rados_ioctx_t *connect_to_rados()
+{
+  rados_t rados;
+  rados_ioctx_t *ioctx = malloc(sizeof(rados_ioctx_t));
+
+  if (rados_create(rados, NULL)  0) {
+return NULL;
+  }
+  if (rados_conf_read_file(rados, NULL)  0){
+return NULL;
+  }
+  if (rados_connect(rados)  0) {
+printf(Could not connect\n);
+rados_shutdown(rados);
+return NULL;
+  }
+  if (rados_pool_lookup(rados, POOL)  0) {
+printf(Could not find pool\n);
+rados_shutdown(rados);
+return NULL;
+  }
+  if (rados_ioctx_create(rados, POOL, ioctx)  0){
+rados_shutdown(rados);
+return NULL;
+  }
+  return ioctx;
+}
+
+void end_read(rados_completion_t c, void *arg)
+{
+  fprintf(stderr, just read\n);
+}
+
+void end_write(rados_completion_t c, void *arg)
+{
+  fprintf(stderr, just wrote\n);
+}
+
+int main()
+{
+  int r, i;
+  char temp[12];
+  rados_completion_t compl;
+  rados_ioctx_t *rados_ctx;
+  /*initialize lib*/
+  r = blkin_init();
+  if (r  0) {
+fprintf(stderr, Could not initialize blkin\n);
+exit(1);
+  }
+  /*initialize endpoint*/
+  struct blkin_endpoint endp;
+  blkin_init_endpoint(endp, 10.0.0.1, 5000, rados client);
+  struct blkin_trace trace;
+  blkin_init_new_trace(trace, client, endp);
+  BLKIN_TIMESTAMP(trace, endp, start);
+
+  //connect
+  rados_ctx = connect_to_rados();
+  if (rados_ctx == NULL){
+printf(Connect return NULL\n);
+exit(1);
+  }
+  printf(connected\n);
+
+  //write an object
+  r = rados_aio_create_completion(NULL, end_write, end_write, compl);
+  if (r0) {
+printf(could not create completion\n);
+exit(1);
+  }
+  printf(created completion\n);
+  r = rados_aio_write_traced(*rados_ctx, object_name, compl, object_val, 12,
+  0, trace.info);
+
+  rados_aio_wait_for_complete(compl);
+  printf(completed\n);
+
+  //read an object
+  r = rados_aio_create_completion(NULL, end_read, end_read, compl);
+  if (r0) {
+printf(could not create completion\n);
+exit(1);
+  }
+  printf(created completion\n);
+  r = rados_aio_read_traced(*rados_ctx, object_name, compl, temp, 12, 0,
+  trace.info);
+  rados_aio_wait_for_complete(compl);
+  printf(I read:\n);
+  for (i=0;i12;i++)
+printf(%c,temp[i]);
+  printf(completed\n);
+  BLKIN_TIMESTAMP(trace, endp, Span ended);
+}
--
To unsubscribe from this list: send the line unsubscribe ceph-devel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: wip-auth

2015-03-10 Thread Blinick, Stephen L
Hi -- was running some baselines on 0.93 and wanted to check, will wip-auth 
changes go into Hamer or in a later release?   (Sorry if I missed the 
discussion in one of the perf meetings last month)

Thanks,

Stephen

-Original Message-
From: ceph-devel-ow...@vger.kernel.org 
[mailto:ceph-devel-ow...@vger.kernel.org] On Behalf Of Mark Nelson
Sent: Wednesday, February 4, 2015 4:25 PM
To: Sage Weil; Andreas Bluemle
Cc: Blinick, Stephen L; ceph-devel@vger.kernel.org
Subject: Re: wip-auth

Hi All,

I completed some tests with wip-auth to the memstore on ubuntu earlier today.  
Basic gist of it is that the improvements in wip-auth help but don't quite get 
us to what can be achieved with auth disabled.  RHEL7 (without auth) continues 
to do very well in latency bound situations. 
Next up will be to see if how much this matters when testing against on SSDs.

Here are the results:

sync 4k object writes
=

CephOS  AuthAvg Lat (ms)Avg IOPS

master  Ubuntu 14.04Yes 0.991007
Wip-authUbuntu 14.04Yes 0.811237
master  Ubuntu 14.04No  0.641549
Wip-authUbuntu 14.04No  0.651563
master  RHEL7   No  0.323158

sync 4k object reads


CephOS  AuthAvg Lat (ms)Avg IOPS

master  Ubuntu 14.04Yes 0.591695
Wip-authUbuntu 14.04Yes 0.412409
master  Ubuntu 14.04No  0.293425
Wip-authUbuntu 14.04No  0.293474
master  RHEL7   No  0.175853

256 concurrent 4k object writes
===

CephOS  AuthAvg Lat (ms)Avg IOPS

master  Ubuntu 14.04Yes 40.39   6339
Wip-authUbuntu 14.04Yes 26.22   9763
master  Ubuntu 14.04No  17.46   14662
Wip-authUbuntu 14.04No  17.34   14759
master  RHEL7   No  14.93   17139

256 concurrent 4k object reads
==

CephOS  AuthAvg Lat (ms)Avg IOPS

master  Ubuntu 14.04Yes 31.47   8134
Wip-authUbuntu 14.04Yes 19.81   12922
master  Ubuntu 14.04No  12.82   19968
Wip-authUbuntu 14.04No  12.75   20080
master  RHEL7   No  12.04   21257

Mark

On 01/30/2015 03:08 PM, Sage Weil wrote:
 Hi Andreas,

 It looks like that was a stale sha1, but the newer one was also 
 broken.  I've retested and it's working for me now.  See latest 
 wip-auth,
 sha1 0c21a7875059bef80842756dfb003f47cc2d66a6.

 Thanks!
 sage

 On Fri, 30 Jan 2015, Andreas Bluemle wrote:

 Hi Sage,

 I tried to integrate wip-auth into my 0.91 build environment.

 I had not been able to start the cluster successfully: ceph-mon 
 crashes with a segmentation fault in CryptoKey::encrypt() (see 
 attachment).

 This happens when linking with libnss or libcryptopp (version 5.6.2).

 I created the patch to add wip-auth based on github pull request 3523 
 and was able to use this patch directly with 0.91 with only a minor 
 adaptation for common/ceph_context.h:
 the 0.91 version of ceph_context.h did not know anything about the 
 experimental class CephContextObs.

 wip-auth commit ID is 1a0507a2940f6edcc2bf9533cfa6c210b0b41933.

 As my build environment is rpm, I had to modify the invocation of the 
 configure script in the spec file instead of the do_autogen.sh 
 script.


 Best Regards

 Andreas Bluemle


 On Tue, 27 Jan 2015 09:18:45 -0800 (PST) Sage Weil sw...@redhat.com 
 wrote:

 I spent some time focusing on just CryptoKey::encrypt().  I 
 benchmarked 100,000 encrypts of 128 bytes and got, at baseline,

   cryptopp: 10 encoded in 0.655651
   libnss  : 10 encoded in 1.288786

 Ouch!  With a (fixed) version of my earlier patch that avoids 
 uselessly copying the input buffer:

   10 encoded in 1.231977

 With a patch that puts the key structures in CryptoKey instead of 
 recreating them each time:

   10 encoded in 0.396208  -- ~70% improvement over original

 This is pushed to wip-auth.  There's also a patch that caches key 
 structs for crypopp.. it now takes

   10 encoded in 0.440758  -- ~33% improvement over original

 (Not that almost anybody will ever care; we use libnss by default 
 for both rpm and deb distros.)

 So, yay, nss is now a bit faster.  What I'm not completely certain 
 about is whether the structures I've preserved are truly stateless 

RE: wip-auth

2015-03-10 Thread Sage Weil
On Tue, 10 Mar 2015, Blinick, Stephen L wrote:
 Hi -- was running some baselines on 0.93 and wanted to check, will 
 wip-auth changes go into Hamer or in a later release?  (Sorry if I 
 missed the discussion in one of the perf meetings last month)

It will go in after hammer.  We can backport as needed.

sage

 
 Thanks,
 
 Stephen
 
 -Original Message-
 From: ceph-devel-ow...@vger.kernel.org 
 [mailto:ceph-devel-ow...@vger.kernel.org] On Behalf Of Mark Nelson
 Sent: Wednesday, February 4, 2015 4:25 PM
 To: Sage Weil; Andreas Bluemle
 Cc: Blinick, Stephen L; ceph-devel@vger.kernel.org
 Subject: Re: wip-auth
 
 Hi All,
 
 I completed some tests with wip-auth to the memstore on ubuntu earlier today. 
  Basic gist of it is that the improvements in wip-auth help but don't quite 
 get us to what can be achieved with auth disabled.  RHEL7 (without auth) 
 continues to do very well in latency bound situations. 
 Next up will be to see if how much this matters when testing against on SSDs.
 
 Here are the results:
 
 sync 4k object writes
 =
 
 Ceph  OS  AuthAvg Lat (ms)Avg IOPS
 
 masterUbuntu 14.04Yes 0.991007
 Wip-auth  Ubuntu 14.04Yes 0.811237
 masterUbuntu 14.04No  0.641549
 Wip-auth  Ubuntu 14.04No  0.651563
 masterRHEL7   No  0.323158
 
 sync 4k object reads
 
 
 Ceph  OS  AuthAvg Lat (ms)Avg IOPS
 
 masterUbuntu 14.04Yes 0.591695
 Wip-auth  Ubuntu 14.04Yes 0.412409
 masterUbuntu 14.04No  0.293425
 Wip-auth  Ubuntu 14.04No  0.293474
 masterRHEL7   No  0.175853
 
 256 concurrent 4k object writes
 ===
 
 Ceph  OS  AuthAvg Lat (ms)Avg IOPS
 
 masterUbuntu 14.04Yes 40.39   6339
 Wip-auth  Ubuntu 14.04Yes 26.22   9763
 masterUbuntu 14.04No  17.46   14662
 Wip-auth  Ubuntu 14.04No  17.34   14759
 masterRHEL7   No  14.93   17139
 
 256 concurrent 4k object reads
 ==
 
 Ceph  OS  AuthAvg Lat (ms)Avg IOPS
 
 masterUbuntu 14.04Yes 31.47   8134
 Wip-auth  Ubuntu 14.04Yes 19.81   12922
 masterUbuntu 14.04No  12.82   19968
 Wip-auth  Ubuntu 14.04No  12.75   20080
 masterRHEL7   No  12.04   21257
 
 Mark
 
 On 01/30/2015 03:08 PM, Sage Weil wrote:
  Hi Andreas,
 
  It looks like that was a stale sha1, but the newer one was also 
  broken.  I've retested and it's working for me now.  See latest 
  wip-auth,
  sha1 0c21a7875059bef80842756dfb003f47cc2d66a6.
 
  Thanks!
  sage
 
  On Fri, 30 Jan 2015, Andreas Bluemle wrote:
 
  Hi Sage,
 
  I tried to integrate wip-auth into my 0.91 build environment.
 
  I had not been able to start the cluster successfully: ceph-mon 
  crashes with a segmentation fault in CryptoKey::encrypt() (see 
  attachment).
 
  This happens when linking with libnss or libcryptopp (version 5.6.2).
 
  I created the patch to add wip-auth based on github pull request 3523 
  and was able to use this patch directly with 0.91 with only a minor 
  adaptation for common/ceph_context.h:
  the 0.91 version of ceph_context.h did not know anything about the 
  experimental class CephContextObs.
 
  wip-auth commit ID is 1a0507a2940f6edcc2bf9533cfa6c210b0b41933.
 
  As my build environment is rpm, I had to modify the invocation of the 
  configure script in the spec file instead of the do_autogen.sh 
  script.
 
 
  Best Regards
 
  Andreas Bluemle
 
 
  On Tue, 27 Jan 2015 09:18:45 -0800 (PST) Sage Weil sw...@redhat.com 
  wrote:
 
  I spent some time focusing on just CryptoKey::encrypt().  I 
  benchmarked 100,000 encrypts of 128 bytes and got, at baseline,
 
cryptopp: 10 encoded in 0.655651
libnss  : 10 encoded in 1.288786
 
  Ouch!  With a (fixed) version of my earlier patch that avoids 
  uselessly copying the input buffer:
 
10 encoded in 1.231977
 
  With a patch that puts the key structures in CryptoKey instead of 
  recreating them each time:
 
10 encoded in 0.396208  -- ~70% improvement over original
 
  This is pushed to wip-auth.  There's also a patch that caches key 
  structs for crypopp.. it now takes
 
10 

Re: teuthology-lock and choosing a kernel

2015-03-10 Thread Ilya Dryomov
On Tue, Mar 10, 2015 at 1:32 AM, Loic Dachary l...@dachary.org wrote:
 Hi Andrew,

 I successfully installed a 3.19 kernel (details at 
 http://dachary.org/?p=3594). It turns out that the loop module is compiled in 
 and defaults to having zero partitions allowed by default. Since I was 
 looking for a solution to have /dev/loop useable for tests, I rebooted with 
 /boot/grub/grub.conf as

 [ubuntu@vpm083 src]$ cat /boot/grub/grub.conf
 default=0
 timeout=5
 splashimage=(hd0,0)/boot/grub/splash.xpm.gz
 hiddenmenu
 title rhel-6.5-cloudinit (3.19.0-ceph-00029-gaf5b96e)
 root (hd0,0)
 kernel /boot/vmlinuz-3.19.0-ceph-00029-gaf5b96e ro 
 root=LABEL=79d3d2d4  loop.max_part=16
 initrd /boot/initramfs-3.19.0-ceph-00029-gaf5b96e.img


 and that works fine. Do you know if I could do that from the yaml file 
 directly ? Alternatively I could use a kernel that does not have the loop 
 module compiled in and modprobe it with loop.max_part=16, but it's unclear to 
 me what kernels are available and what their names are.

I think you can run a set of commands from yaml (see exec stanza), so
you can sort of script it (GRUB_CMDLINE_LINUX=, etc), but that's never
going to be reliable.

Basically the only kernel available right now is the testing flavor.
debug flavor is some random config and has been unused for a while.
I can try changing testing config to do CONFIG_BLK_DEV_LOOP=m if you
don't find a good way to workaround it.

https://lists.ubuntu.com/archives/kernel-team/2009-September/007364.html
is apparently the reason it's compiled in (our config is a somewhat old
and slightly stripped down Ubuntu config).

Thanks,

Ilya
--
To unsubscribe from this list: send the line unsubscribe ceph-devel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: teuthology-lock and choosing a kernel

2015-03-10 Thread Loic Dachary
Hi Ilya,

On 10/03/2015 08:19, Ilya Dryomov wrote:
 On Tue, Mar 10, 2015 at 1:32 AM, Loic Dachary l...@dachary.org wrote:
 Hi Andrew,

 I successfully installed a 3.19 kernel (details at 
 http://dachary.org/?p=3594). It turns out that the loop module is compiled 
 in and defaults to having zero partitions allowed by default. Since I was 
 looking for a solution to have /dev/loop useable for tests, I rebooted with 
 /boot/grub/grub.conf as

 [ubuntu@vpm083 src]$ cat /boot/grub/grub.conf
 default=0
 timeout=5
 splashimage=(hd0,0)/boot/grub/splash.xpm.gz
 hiddenmenu
 title rhel-6.5-cloudinit (3.19.0-ceph-00029-gaf5b96e)
 root (hd0,0)
 kernel /boot/vmlinuz-3.19.0-ceph-00029-gaf5b96e ro 
 root=LABEL=79d3d2d4  loop.max_part=16
 initrd /boot/initramfs-3.19.0-ceph-00029-gaf5b96e.img


 and that works fine. Do you know if I could do that from the yaml file 
 directly ? Alternatively I could use a kernel that does not have the loop 
 module compiled in and modprobe it with loop.max_part=16, but it's unclear 
 to me what kernels are available and what their names are.
 
 I think you can run a set of commands from yaml (see exec stanza), so
 you can sort of script it (GRUB_CMDLINE_LINUX=, etc), but that's never
 going to be reliable.
 
 Basically the only kernel available right now is the testing flavor.
 debug flavor is some random config and has been unused for a while.
 I can try changing testing config to do CONFIG_BLK_DEV_LOOP=m if you
 don't find a good way to workaround it.
 
 https://lists.ubuntu.com/archives/kernel-team/2009-September/007364.html
 is apparently the reason it's compiled in (our config is a somewhat old
 and slightly stripped down Ubuntu config).

Thanks for exploring the history so far back ;-) I hope to find an easier path 
but its comforting to know where we stand.

Cheers

-- 
Loïc Dachary, Artisan Logiciel Libre



signature.asc
Description: OpenPGP digital signature


Re: giant integration branch for v0.87.1 ready for QE / fix for 10433/8011 ? osd/ReplicatedPG.cc: 5545: FAILED assert(soid scrubber.start || soid = scrubber.end)

2015-03-10 Thread Laurent GUERBY
Hi,

Any reason why the complete fix for 8011/10433 was
not included in giant 0.87.1?

Missing fix:
http://workbench.dachary.org/ceph/ceph/commit/9b26de3f3653d38dcdfc5b97874089f19d2a59d7

Issues:
http://tracker.ceph.com/issues/8011
http://tracker.ceph.com/issues/10433#note-7

Thanks in advance,

Sincerely,

Laurent

On Fri, 2015-02-20 at 16:49 -0500, Yuri Weinstein wrote:
 Team leads,
 
 Please review QE validation results summary in 
 http://tracker.ceph.com/issues/10501
 
 Loic - this RC looks ready for release (in my opinion) ! 
 
 Thx
 YuriW
 
 - Original Message -
 From: Yuri Weinstein ywein...@redhat.com
 To: Loic Dachary l...@dachary.org
 Cc: Ceph Development ceph-devel@vger.kernel.org
 Sent: Monday, February 16, 2015 9:33:44 AM
 Subject: Re: giant integration branch for v0.87.1 ready for QE
 
 I have completed suites execution on giant branch (v0.87.1 RC)
 
 All results are summarized in http://tracker.ceph.com/issues/10501 under QE 
 VALIDATION section.
 Some suites had to be run more then ones due to environment noise.
 
 Two suites are being re-run now - upgrade:firefly-x and powecycle.
 
 Next steps:
 -  the team leads to review/confirm results
 -  Loic - can you review and triage issues as needed.
 -  two suites require results analysis:
multimds
rados (two known tickets, but need more checking) ## 10209, 9891
krbd (two new tickets, but need more checking) ## 10889, 10890
 
 
 Thx
 YuriW
 
 - Original Message -
 From: Loic Dachary l...@dachary.org
 To: Yuri Weinstein ywein...@redhat.com
 Cc: Ceph Development ceph-devel@vger.kernel.org
 Sent: Wednesday, February 11, 2015 7:30:06 AM
 Subject: Re: giant integration branch for v0.87.1 ready for QE
 
 Hi Yuri,
 
 The giant-backports pull requests were merged into 
 https://github.com/ceph/ceph/tree/giant which is not ready for testing.
 
 For the record, the head is 
 https://github.com/ceph/ceph/commit/78c71b9200da5e7d832ec58765478404d31ae6b5
 
 Cheers
 
 On 10/02/2015 18:20, Loic Dachary wrote:
  Hi Yuri,
  
  The giant integration branch for v0.87.1 as found at 
  https://github.com/ceph/ceph/commits/giant-backports has been approved by 
  Yehuda, Josh and Sam and is ready for QE. 
  
  For the record, the head is 
  https://github.com/ceph/ceph/commit/6b08a729540c61f3c8b15c5a3ce9382634bf800c
  
  Cheers
  
 


--
To unsubscribe from this list: send the line unsubscribe ceph-devel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Merging hammer in master: conflict on gmock

2015-03-10 Thread Loic Dachary
Hi Danny,

On 10/03/2015 06:59, Danny Al-Gaaf wrote:
 Am 10.03.2015 um 00:06 schrieb Loic Dachary:


 On 09/03/2015 18:31, Danny Al-Gaaf wrote:
 Hi Loic,

 this one is a tricky one. I didn't find a smooth/automatic
 solution yet.

 This seems to work:

 git checkout master git merge --no-ff origin/hammer git
 mergetool - for the conflict: select 'local' for src/gmock (this
 should keep the changes im master and ignore changes from
 hammer)

 Do you know what changes have been done in hammer in src/gmock ?
 
 It seems as if there was no change to src/gmock in hammer that is not
 already in master.

After the set of commands you suggest, how could we make sure nothing was 
trashed or unintentionally included ? I can't think of a sure method from the 
top of my head.

Cheers

 Danny
 
 --
 To unsubscribe from this list: send the line unsubscribe ceph-devel in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
 

-- 
Loïc Dachary, Artisan Logiciel Libre



signature.asc
Description: OpenPGP digital signature


Re: giant integration branch for v0.87.1 ready for QE / fix for 10433/8011 ? osd/ReplicatedPG.cc: 5545: FAILED assert(soid scrubber.start || soid = scrubber.end)

2015-03-10 Thread Loic Dachary
Hi Laurent,

http://tracker.ceph.com/issues/8011 is now marked with a higher priority for 
backporting (I'm using the Severity field for that purpose). Please let me 
know if other backports need more attention.

Cheers

On 10/03/2015 07:56, Laurent GUERBY wrote:
 Hi,
 
 Any reason why the complete fix for 8011/10433 was
 not included in giant 0.87.1?
 
 Missing fix:
 http://workbench.dachary.org/ceph/ceph/commit/9b26de3f3653d38dcdfc5b97874089f19d2a59d7
 
 Issues:
 http://tracker.ceph.com/issues/8011
 http://tracker.ceph.com/issues/10433#note-7
 
 Thanks in advance,
 
 Sincerely,
 
 Laurent
 
 On Fri, 2015-02-20 at 16:49 -0500, Yuri Weinstein wrote:
 Team leads,

 Please review QE validation results summary in 
 http://tracker.ceph.com/issues/10501

 Loic - this RC looks ready for release (in my opinion) ! 

 Thx
 YuriW

 - Original Message -
 From: Yuri Weinstein ywein...@redhat.com
 To: Loic Dachary l...@dachary.org
 Cc: Ceph Development ceph-devel@vger.kernel.org
 Sent: Monday, February 16, 2015 9:33:44 AM
 Subject: Re: giant integration branch for v0.87.1 ready for QE

 I have completed suites execution on giant branch (v0.87.1 RC)

 All results are summarized in http://tracker.ceph.com/issues/10501 under QE 
 VALIDATION section.
 Some suites had to be run more then ones due to environment noise.

 Two suites are being re-run now - upgrade:firefly-x and powecycle.

 Next steps:
 -  the team leads to review/confirm results
 -  Loic - can you review and triage issues as needed.
 -  two suites require results analysis:
multimds
rados (two known tickets, but need more checking) ## 10209, 9891
krbd (two new tickets, but need more checking) ## 10889, 10890


 Thx
 YuriW

 - Original Message -
 From: Loic Dachary l...@dachary.org
 To: Yuri Weinstein ywein...@redhat.com
 Cc: Ceph Development ceph-devel@vger.kernel.org
 Sent: Wednesday, February 11, 2015 7:30:06 AM
 Subject: Re: giant integration branch for v0.87.1 ready for QE

 Hi Yuri,

 The giant-backports pull requests were merged into 
 https://github.com/ceph/ceph/tree/giant which is not ready for testing.

 For the record, the head is 
 https://github.com/ceph/ceph/commit/78c71b9200da5e7d832ec58765478404d31ae6b5

 Cheers

 On 10/02/2015 18:20, Loic Dachary wrote:
 Hi Yuri,

 The giant integration branch for v0.87.1 as found at 
 https://github.com/ceph/ceph/commits/giant-backports has been approved by 
 Yehuda, Josh and Sam and is ready for QE. 

 For the record, the head is 
 https://github.com/ceph/ceph/commit/6b08a729540c61f3c8b15c5a3ce9382634bf800c

 Cheers


 
 

-- 
Loïc Dachary, Artisan Logiciel Libre



signature.asc
Description: OpenPGP digital signature