gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnunet] branch master updated: add minimal scheduler benchmark


From: gnunet
Subject: [gnunet] branch master updated: add minimal scheduler benchmark
Date: Tue, 04 Feb 2020 18:49:06 +0100

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository gnunet.

The following commit(s) were added to refs/heads/master by this push:
     new 4caa0d290 add minimal scheduler benchmark
4caa0d290 is described below

commit 4caa0d2907082868e32a77c5a8ebf85c527497ca
Author: Christian Grothoff <address@hidden>
AuthorDate: Tue Feb 4 18:45:19 2020 +0100

    add minimal scheduler benchmark
---
 src/util/Makefile.am      |   8 +++-
 src/util/perf_scheduler.c | 103 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 110 insertions(+), 1 deletion(-)

diff --git a/src/util/Makefile.am b/src/util/Makefile.am
index fc8f424dc..60b845414 100644
--- a/src/util/Makefile.am
+++ b/src/util/Makefile.am
@@ -245,7 +245,8 @@ if HAVE_BENCHMARKS
   perf_crypto_paillier \
   perf_crypto_symmetric \
   perf_crypto_asymmetric \
-  perf_malloc
+  perf_malloc \
+  perf_scheduler
 endif
 
 if HAVE_SSH_KEY
@@ -608,6 +609,11 @@ perf_malloc_SOURCES = \
 perf_malloc_LDADD = \
  libgnunetutil.la
 
+perf_scheduler_SOURCES = \
+ perf_scheduler.c
+perf_scheduler_LDADD = \
+ libgnunetutil.la
+
 
 EXTRA_DIST = \
   test_client_data.conf \
diff --git a/src/util/perf_scheduler.c b/src/util/perf_scheduler.c
new file mode 100644
index 000000000..3ea76e24c
--- /dev/null
+++ b/src/util/perf_scheduler.c
@@ -0,0 +1,103 @@
+/*
+     This file is part of GNUnet.
+     Copyright (C) 2020 GNUnet e.V.
+
+     GNUnet is free software: you can redistribute it and/or modify it
+     under the terms of the GNU Affero General Public License as published
+     by the Free Software Foundation, either version 3 of the License,
+     or (at your option) any later version.
+
+     GNUnet is distributed in the hope that it will be useful, but
+     WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+     Affero General Public License for more details.
+
+     You should have received a copy of the GNU Affero General Public License
+     along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+     SPDX-License-Identifier: AGPL3.0-or-later
+ */
+/**
+ * @author Christian Grothoff
+ * @file util/perf_scheduler.c
+ * @brief measure performance of scheduler functions
+ */
+#include "platform.h"
+#include "gnunet_util_lib.h"
+#include <gauger.h>
+
+#define RUNS (1024 * 1024)
+
+static struct GNUNET_SCHEDULER_Task *task;
+
+
+static void
+run (void *cls)
+{
+  uint64_t *count = cls;
+
+  task = NULL;
+  (*count)++;
+  if (*count >= RUNS)
+  {
+    GNUNET_SCHEDULER_shutdown ();
+    return;
+  }
+  task = GNUNET_SCHEDULER_add_now (&run,
+                                   count);
+}
+
+
+static void
+do_shutdown (void *cls)
+{
+  if (NULL != task)
+    GNUNET_SCHEDULER_cancel (task);
+}
+
+
+static void
+first (void *cls)
+{
+  uint64_t *count = cls;
+
+  (*count)++;
+  task = GNUNET_SCHEDULER_add_now (&run,
+                                   count);
+  GNUNET_SCHEDULER_add_shutdown (&do_shutdown,
+                                 NULL);
+}
+
+
+static uint64_t
+perf_scheduler ()
+{
+  uint64_t count = 0;
+
+  GNUNET_SCHEDULER_run (&first,
+                        &count);
+  return count;
+}
+
+
+int
+main (int argc, char *argv[])
+{
+  struct GNUNET_TIME_Absolute start;
+  uint64_t tasks;
+
+  start = GNUNET_TIME_absolute_get ();
+  tasks = perf_scheduler ();
+  printf ("Scheduler perf took %s\n",
+          GNUNET_STRINGS_relative_time_to_string (
+            GNUNET_TIME_absolute_get_duration (start),
+            GNUNET_YES));
+  GAUGER ("UTIL", "Scheduler",
+          tasks / 1024 / (1
+                       + GNUNET_TIME_absolute_get_duration
+                         (start).rel_value_us / 1000LL), "tasks/ms");
+  return 0;
+}
+
+
+/* end of perf_scheduler.c */

-- 
To stop receiving notification emails like this one, please contact
address@hidden.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]