[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.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnunet] branch master updated: add minimal scheduler benchmark,
gnunet <=