[CalendarServer-changes] [6121] CalendarServer/trunk/contrib/performance

source_changes at macosforge.org source_changes at macosforge.org
Wed Aug 18 16:35:21 PDT 2010


Revision: 6121
          http://trac.macosforge.org/projects/calendarserver/changeset/6121
Author:   exarkun at twistedmatrix.com
Date:     2010-08-18 16:35:20 -0700 (Wed, 18 Aug 2010)
Log Message:
-----------
Split the SQL observer into a separate file for independent use

Modified Paths:
--------------
    CalendarServer/trunk/contrib/performance/benchmark.py
    CalendarServer/trunk/contrib/performance/io_measure.d

Added Paths:
-----------
    CalendarServer/trunk/contrib/performance/sql_measure.d

Modified: CalendarServer/trunk/contrib/performance/benchmark.py
===================================================================
--- CalendarServer/trunk/contrib/performance/benchmark.py	2010-08-18 22:45:07 UTC (rev 6120)
+++ CalendarServer/trunk/contrib/performance/benchmark.py	2010-08-18 23:35:20 UTC (rev 6121)
@@ -1,4 +1,5 @@
 import sys
+from os.path import dirname
 
 from signal import SIGINT
 from pickle import dump
@@ -149,11 +150,20 @@
         self.dtraces[pid] = reactor.spawnProcess(
             IOMeasureConsumer(started, stopped),
             "/usr/sbin/dtrace",
-            ["/usr/sbin/dtrace", "-q", "-p", str(pid), "-s",
-             "io_measure.d"])
+            ["/usr/sbin/dtrace", 
+             # process preprocessor macros
+             "-C",
+             # search for include targets in the source directory containing this file
+             "-I", dirname(__file__),
+             # suppress most implicitly generated output (which would mess up our parser)
+             "-q",
+             # make this pid the target
+             "-p", str(pid),
+             # load this script
+             "-s", "io_measure.d"])
         def eintr(reason):
             reason.trap(DTraceBug)
-            print 'Dtrace startup failed (', reason.getErrorMessage(), '), retrying.'
+            print 'Dtrace startup failed (', reason.getErrorMessage().strip(), '), retrying.'
             return self._startDTrace(pid)
         started.addErrback(eintr)
         stopped.addCallback(self._cleanup, pid)

Modified: CalendarServer/trunk/contrib/performance/io_measure.d
===================================================================
--- CalendarServer/trunk/contrib/performance/io_measure.d	2010-08-18 22:45:07 UTC (rev 6120)
+++ CalendarServer/trunk/contrib/performance/io_measure.d	2010-08-18 23:35:20 UTC (rev 6121)
@@ -1,11 +1,12 @@
 
 /*
- * Report current timestamp (nanoseconds) of io and SQLite3 events.
+ * Trace information about I/O and SQL events.
  */
 
 #pragma D option switchrate=10hz
-#pragma D option strsize=1024
 
+#include "sql_measure.d"
+
 dtrace:::BEGIN
 {
 	/* Let the watcher know things are alright.
@@ -28,63 +29,3 @@
 {
 	printf("B_WRITE %d\n\1", args[0]->b_bcount);
 }
-
-/*
- * SQLite3 stuff
- */
-
-pid$target:_sqlite3.so:_pysqlite_query_execute:entry
-{
-	self->executing = 1;
-	self->sql = "";
-	printf("EXECUTE ENTRY %d\n\1", timestamp);
-}
-
-pid$target:_sqlite3.so:_pysqlite_query_execute:return
-{
-	self->executing = 0;
-	printf("EXECUTE SQL %s\n\1", self->sql);
-	printf("EXECUTE RETURN %d\n\1", timestamp);
-}
-
-pid$target::PyString_AsString:return
-/self->executing/
-{
-	self->sql = copyinstr(arg1);
-	self->executing = 0;
-}
-
-pid$target:_sqlite3.so:pysqlite_cursor_iternext:entry
-{
-	printf("ITERNEXT ENTRY %d\n\1", timestamp);
-}
-
-pid$target:_sqlite3.so:pysqlite_cursor_iternext:return
-{
-	printf("ITERNEXT RETURN %d\n\1", timestamp);
-}
-
-/*
- * PyGreSQL stuff
- */
-
-pid$target::PQexec:entry
-{
-	printf("EXECUTE ENTRY %d\n\1", timestamp);
-	printf("EXECUTE SQL %s\n\1", copyinstr(arg1));
-}
-
-pid$target::PQexec:return
-{
-	printf("EXECUTE RETURN %d\n\1", timestamp);
-}
-
-pid$target::pgsource_fetch:entry
-{
-	printf("ITERNEXT ENTRY %d\n\1", timestamp);
-}
-
-pid$target::pgsource_fetch:return
-{
-	printf("ITERNEXT RETURN %d\n\1", timestamp);
-}

Copied: CalendarServer/trunk/contrib/performance/sql_measure.d (from rev 6095, CalendarServer/trunk/contrib/performance/io_measure.d)
===================================================================
--- CalendarServer/trunk/contrib/performance/sql_measure.d	                        (rev 0)
+++ CalendarServer/trunk/contrib/performance/sql_measure.d	2010-08-18 23:35:20 UTC (rev 6121)
@@ -0,0 +1,65 @@
+
+/*
+ * Make almost all query strings fit.
+ */
+#pragma D option strsize=1024
+
+/*
+ * SQLite3 stuff
+ */
+
+pid$target:_sqlite3.so:_pysqlite_query_execute:entry
+{
+	self->executing = 1;
+	self->sql = "";
+	printf("EXECUTE ENTRY %d\n\1", timestamp);
+}
+
+pid$target:_sqlite3.so:_pysqlite_query_execute:return
+{
+	self->executing = 0;
+	printf("EXECUTE SQL %s\n\1", self->sql);
+	printf("EXECUTE RETURN %d\n\1", timestamp);
+}
+
+pid$target::PyString_AsString:return
+/self->executing/
+{
+	self->sql = copyinstr(arg1);
+	self->executing = 0;
+}
+
+pid$target:_sqlite3.so:pysqlite_cursor_iternext:entry
+{
+	printf("ITERNEXT ENTRY %d\n\1", timestamp);
+}
+
+pid$target:_sqlite3.so:pysqlite_cursor_iternext:return
+{
+	printf("ITERNEXT RETURN %d\n\1", timestamp);
+}
+
+/*
+ * PyGreSQL stuff
+ */
+
+pid$target::PQexec:entry
+{
+	printf("EXECUTE ENTRY %d\n\1", timestamp);
+	printf("EXECUTE SQL %s\n\1", copyinstr(arg1));
+}
+
+pid$target::PQexec:return
+{
+	printf("EXECUTE RETURN %d\n\1", timestamp);
+}
+
+pid$target::pgsource_fetch:entry
+{
+	printf("ITERNEXT ENTRY %d\n\1", timestamp);
+}
+
+pid$target::pgsource_fetch:return
+{
+	printf("ITERNEXT RETURN %d\n\1", timestamp);
+}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20100818/319d692f/attachment.html>


More information about the calendarserver-changes mailing list