]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Feature] Use rdtsc where possible
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 26 Oct 2017 14:52:11 +0000 (15:52 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 26 Oct 2017 14:52:42 +0000 (15:52 +0100)
15 files changed:
CMakeLists.txt
config.h.in
src/client/rspamc.c
src/client/rspamdclient.c
src/libserver/protocol.c
src/libserver/re_cache.c
src/libserver/symbols_cache.c
src/libserver/task.c
src/libutil/expression.c
src/libutil/util.c
src/libutil/util.h
src/lua/lua_util.c
test/rspamd_cryptobox_test.c
test/rspamd_http_test.c
test/rspamd_radix_test.c

index 2deefa15fbabcbcfef3c805fbeb3b23b9d7dea52..0acfefb75883bc55fb1cc1e2fc3f8215592c442a 100644 (file)
@@ -1120,6 +1120,23 @@ ELSE()
        MESSAGE(STATUS "atomic builtins are supported")
 ENDIF()
 
+CHECK_C_SOURCE_RUNS("
+#include <x86intrin.h>
+int main(int argc, char **argv) {
+        unsigned l;
+        if (__builtin_ia32_rdtscp(&l)) {
+                return 0;
+        }
+        return -1;
+}
+" HAVE_RDTSCP)
+
+IF(NOT HAVE_RDTSCP)
+       MESSAGE(STATUS "rdtscp intrinsic is -NOT- supported")
+ELSE()
+       MESSAGE(STATUS "rdtscp intrinsic is supported")
+ENDIF()
+
 IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
        # In linux, we need to mount /run/shm to test which could be unavailable
        # on a build system. On the other hand, we know that linux has stupid
index ef2bb1097fb2d859344b20023210690a86917033..6f8d3c48ca5bd96d4de57b7409256988e25f2a81 100644 (file)
@@ -71,6 +71,7 @@
 #cmakedefine HAVE_POSIX_FALLOCATE 1
 #cmakedefine HAVE_PTHREAD_PROCESS_SHARED 1
 #cmakedefine HAVE_PWD_H          1
+#cmakedefine HAVE_RDTSCP         1
 #cmakedefine HAVE_READPASSPHRASE_H  1
 #cmakedefine HAVE_SA_SIGINFO     1
 #cmakedefine HAVE_SANE_SHMEM     1
index bd199fda39a57df79ae4ef763e2b58544adcaa88..08c23a1b8f9f4f891f6b82dbbcbaa231e4848967 100644 (file)
@@ -1481,7 +1481,7 @@ rspamc_client_cb (struct rspamd_client_connection *conn,
        struct rspamc_callback_data *cbdata = (struct rspamc_callback_data *)ud;
        struct rspamc_command *cmd;
        FILE *out = stdout;
-       gdouble finish = rspamd_get_ticks (), diff;
+       gdouble finish = rspamd_get_ticks (FALSE), diff;
        const gchar *body;
        gsize body_len;
 
index 7ea09618366ce0aff490d8d5515b2c649874af84..4a58b3628ef3de63f7e9072810b45fb9c425b566 100644 (file)
@@ -114,7 +114,7 @@ rspamd_client_finish_handler (struct rspamd_http_connection *conn,
 
        if (!c->req_sent) {
                c->req_sent = TRUE;
-               c->send_time = rspamd_get_ticks ();
+               c->send_time = rspamd_get_ticks (FALSE);
                rspamd_http_connection_reset (c->http_conn);
                rspamd_http_connection_read_message (c->http_conn,
                        c->req,
@@ -435,7 +435,7 @@ rspamd_client_command (struct rspamd_client_connection *conn,
        req->msg->url = rspamd_fstring_append (req->msg->url, command, strlen (command));
 
        conn->req = req;
-       conn->start_time = rspamd_get_ticks ();
+       conn->start_time = rspamd_get_ticks (FALSE);
 
        if (compressed) {
                rspamd_http_connection_write_message (conn->http_conn, req->msg, NULL,
index 6180adccbf7c241f9c988bbb84b88a9358d48b66..d8973dea6daf9b73f1ec2b5db6fc593353842679 100644 (file)
@@ -1126,7 +1126,7 @@ rspamd_protocol_write_ucl (struct rspamd_task *task,
                                cached, rspamd_protocol_cached_dtor);
 
                /* We also set scan time here */
-               task->time_real_finish = rspamd_get_ticks ();
+               task->time_real_finish = rspamd_get_ticks (FALSE);
                task->time_virtual_finish = rspamd_get_virtual_ticks ();
        }
 
index c51caff8ff49ab1559d2bd6f834ca076440f3e4f..d34cc6824b6564b946dde111f72b13b0f235e2c6 100644 (file)
@@ -508,7 +508,7 @@ rspamd_re_cache_process_pcre (struct rspamd_re_runtime *rt,
                pr = rspamd_random_double_fast ();
 
                if (pr > 0.9) {
-                       t1 = rspamd_get_ticks ();
+                       t1 = rspamd_get_ticks (TRUE);
                }
 
                while (rspamd_regexp_search (re,
@@ -536,7 +536,7 @@ rspamd_re_cache_process_pcre (struct rspamd_re_runtime *rt,
                }
 
                if (pr > 0.9) {
-                       t2 = rspamd_get_ticks ();
+                       t2 = rspamd_get_ticks (TRUE);
 
                        if (t2 - t1 > slow_time) {
                                msg_info_task ("regexp '%16s' took %.2f seconds to execute",
index de0a806fa283c2163bf083c92dd61adf79750643..ece7895dab0e35036b1708a1c53713be6d93f437 100644 (file)
@@ -1270,7 +1270,7 @@ rspamd_symbols_cache_check_symbol (struct rspamd_task *task,
        struct rspamd_task **ptask;
        lua_State *L;
        gboolean check = TRUE;
-       const gdouble slow_diff_limit = 1e5;
+       const gdouble slow_diff_limit = 1e7;
 
        if (item->func) {
 
@@ -1309,10 +1309,10 @@ rspamd_symbols_cache_check_symbol (struct rspamd_task *task,
                                        rspamd_symbols_cache_watcher_cb,
                                        item);
                        msg_debug_task ("execute %s, %d", item->symbol, item->id);
-                       t1 = rspamd_get_ticks ();
+                       t1 = rspamd_get_ticks (TRUE);
                        item->func (task, item->user_data);
-                       t2 = rspamd_get_ticks ();
-                       diff = (t2 - t1) * 1e6;
+                       t2 = rspamd_get_ticks (TRUE);
+                       diff = (t2 - t1);
 
                        if (G_UNLIKELY (RSPAMD_TASK_IS_PROFILING (task))) {
                                rspamd_task_profile_set (task, item->symbol, diff);
@@ -1323,8 +1323,8 @@ rspamd_symbols_cache_check_symbol (struct rspamd_task *task,
                        }
 
                        if (diff > slow_diff_limit) {
-                               msg_info_task ("slow rule: %s: %d ms", item->symbol,
-                                               (gint)(diff / 1000.));
+                               msg_info_task ("slow rule: %s: %.0f ticks", item->symbol,
+                                               diff);
                        }
 
                        if (rspamd_worker_is_normal (task->worker)) {
@@ -2038,7 +2038,7 @@ rspamd_symbols_cache_resort_cb (gint fd, short what, gpointer ud)
        cache = cbdata->cache;
        /* Plan new event */
        tm = rspamd_time_jitter (cache->reload_time, 0);
-       cur_ticks = rspamd_get_ticks ();
+       cur_ticks = rspamd_get_ticks (TRUE);
        msg_debug_cache ("resort symbols cache, next reload in %.2f seconds", tm);
        g_assert (cache != NULL);
        evtimer_set (&cbdata->resort_ev, rspamd_symbols_cache_resort_cb, cbdata);
@@ -2138,7 +2138,7 @@ rspamd_symbols_cache_start_refresh (struct symbols_cache * cache,
        struct rspamd_cache_refresh_cbdata *cbdata;
 
        cbdata = rspamd_mempool_alloc0 (cache->static_pool, sizeof (*cbdata));
-       cbdata->last_resort = rspamd_get_ticks ();
+       cbdata->last_resort = rspamd_get_ticks (TRUE);
        cbdata->ev_base = ev_base;
        cbdata->w = w;
        cbdata->cache = cache;
index 04ce2b7599db29186047436e1f84e61c476a4024..8bb8ecaa081f2de72ced29efcaea12643fa1f02b 100644 (file)
@@ -80,7 +80,7 @@ rspamd_task_new (struct rspamd_worker *worker, struct rspamd_config *cfg,
        }
 
        gettimeofday (&new_task->tv, NULL);
-       new_task->time_real = rspamd_get_ticks ();
+       new_task->time_real = rspamd_get_ticks (FALSE);
        new_task->time_virtual = rspamd_get_virtual_ticks ();
 
        if (pool == NULL) {
index b49935cb440053228901fc72f26fbb8f7e562a8e..dae574da56fb08638b33c6ef18946270e71bccde 100644 (file)
@@ -1007,7 +1007,7 @@ rspamd_ast_process_node (struct rspamd_expression *expr, gint flags, GNode *node
                         */
                        if ((expr->evals & 0x1F) == (GPOINTER_TO_UINT (node) >> 4 & 0x1F)) {
                                calc_ticks = TRUE;
-                               t1 = rspamd_get_ticks ();
+                               t1 = rspamd_get_ticks (TRUE);
                        }
 
                        elt->value = expr->subr->process (data, elt->p.atom);
@@ -1021,7 +1021,7 @@ rspamd_ast_process_node (struct rspamd_expression *expr, gint flags, GNode *node
                        }
 
                        if (calc_ticks) {
-                               t2 = rspamd_get_ticks ();
+                               t2 = rspamd_get_ticks (TRUE);
                                elt->p.atom->avg_ticks += ((t2 - t1) - elt->p.atom->avg_ticks) /
                                                (expr->evals);
                        }
index f2d9d41b0fb705b312eeac9c82e7a0e1f24d910e..f022b4689cb99176fe6ee9329ef3370aa7511ce3 100644 (file)
@@ -70,6 +70,9 @@
 #ifdef HAVE_SYS_RESOURCE_H
 #include <sys/resource.h>
 #endif
+#ifdef HAVE_RDTSCP
+#include <x86intrin.h>
+#endif
 #include <math.h> /* for pow */
 
 #include "cryptobox.h"
@@ -1761,24 +1764,36 @@ restart:
 }
 
 gdouble
-rspamd_get_ticks (void)
+rspamd_get_ticks (gboolean rdtsc_ok)
 {
        gdouble res;
 
+#ifdef HAVE_RDTSCP
+       guint tmp;
+       guint64 r64;
+
+       if (rdtsc_ok) {
+               r64 = __builtin_ia32_rdtscp (&tmp);
+               /* Preserve lower 52 bits */
+               res = r64 & ((1ULL << 53) - 1);
+               return res;
+       }
+
+#endif
 #ifdef HAVE_CLOCK_GETTIME
        struct timespec ts;
        gint clk_id = CLOCK_MONOTONIC;
 
-#ifdef CLOCK_MONOTONIC_FAST
+# ifdef CLOCK_MONOTONIC_FAST
        clk_id = CLOCK_MONOTONIC_FAST;
-#endif
-#ifdef CLOCK_MONOTONIC_COARSE
+# endif
+# ifdef CLOCK_MONOTONIC_COARSE
        clk_id = CLOCK_MONOTONIC_COARSE;
-#endif
+# endif
        clock_gettime (clk_id, &ts);
 
        res = (double)ts.tv_sec + ts.tv_nsec / 1000000000.;
-#elif defined(__APPLE__)
+# elif defined(__APPLE__)
        res = mach_absolute_time () / 1000000000.;
 #else
        struct timeval tv;
index d8a1eae6087bdcba4083d9efae5a1a5fca32e235..ab677210e043b10c452d8055007aac01ee83d722 100644 (file)
@@ -295,7 +295,7 @@ gint rspamd_read_passphrase (gchar *buf, gint size, gint rwflag, gpointer key);
  * Portably return the current clock ticks as seconds
  * @return
  */
-gdouble rspamd_get_ticks (void);
+gdouble rspamd_get_ticks (gboolean rdtsc_ok);
 
 /**
  * Portably return the current virtual clock ticks as seconds
index 538c8d9f7f6f920c7d401ecaa32bb991819f38cb..b2041c7045220b366dc1d8e20baededb72ef5121 100644 (file)
@@ -1439,8 +1439,13 @@ static gint
 lua_util_get_ticks (lua_State *L)
 {
        gdouble ticks;
+       gboolean rdtsc = FALSE;
 
-       ticks = rspamd_get_ticks ();
+       if (lua_isboolean (L, 1)) {
+               rdtsc = lua_toboolean (L, 1);
+       }
+
+       ticks = rspamd_get_ticks (rdtsc);
        lua_pushnumber (L, ticks);
 
        return 1;
index b7cbe2a1668641fcc5aba92b9d4416ecd3ce6c52..b0d02160aa3ad8730f8d6d50dbf4cf7831100857 100644 (file)
@@ -174,89 +174,89 @@ rspamd_cryptobox_test_func (void)
        seg = g_slice_alloc0 (sizeof (*seg) * max_seg * 10);
 
        /* Test baseline */
-       t1 = rspamd_get_ticks ();
+       t1 = rspamd_get_ticks (TRUE);
        rspamd_cryptobox_encrypt_nm_inplace (begin, end - begin, nonce, key, mac,
                        mode);
-       t2 = rspamd_get_ticks ();
+       t2 = rspamd_get_ticks (TRUE);
        check_result (key, nonce, mac, begin, end);
 
-       msg_info ("baseline encryption: %.6f", t2 - t1);
+       msg_info ("baseline encryption: %.0f", t2 - t1);
 
        mode = RSPAMD_CRYPTOBOX_MODE_NIST;
-       t1 = rspamd_get_ticks ();
+       t1 = rspamd_get_ticks (TRUE);
        rspamd_cryptobox_encrypt_nm_inplace (begin,
                        end - begin,
                        nonce,
                        key,
                        mac,
                        mode);
-       t2 = rspamd_get_ticks ();
+       t2 = rspamd_get_ticks (TRUE);
        check_result (key, nonce, mac, begin, end);
 
-       msg_info ("openssl baseline encryption: %.6f", t2 - t1);
+       msg_info ("openssl baseline encryption: %.0f", t2 - t1);
        mode = RSPAMD_CRYPTOBOX_MODE_25519;
 
 start:
        /* A single chunk as vector */
        seg[0].data = begin;
        seg[0].len = end - begin;
-       t1 = rspamd_get_ticks ();
+       t1 = rspamd_get_ticks (TRUE);
        rspamd_cryptobox_encryptv_nm_inplace (seg, 1, nonce, key, mac, mode);
-       t2 = rspamd_get_ticks ();
+       t2 = rspamd_get_ticks (TRUE);
 
        check_result (key, nonce, mac, begin, end);
 
-       msg_info ("bulk encryption: %.6f", t2 - t1);
+       msg_info ("bulk encryption: %.0f", t2 - t1);
 
        /* Two chunks as vector */
        seg[0].data = begin;
        seg[0].len = (end - begin) / 2;
        seg[1].data = begin + seg[0].len;
        seg[1].len = (end - begin) - seg[0].len;
-       t1 = rspamd_get_ticks ();
+       t1 = rspamd_get_ticks (TRUE);
        rspamd_cryptobox_encryptv_nm_inplace (seg, 2, nonce, key, mac, mode);
-       t2 = rspamd_get_ticks ();
+       t2 = rspamd_get_ticks (TRUE);
 
        check_result (key, nonce, mac, begin, end);
 
-       msg_info ("2 equal chunks encryption: %.6f", t2 - t1);
+       msg_info ("2 equal chunks encryption: %.0f", t2 - t1);
 
        seg[0].data = begin;
        seg[0].len = 1;
        seg[1].data = begin + seg[0].len;
        seg[1].len = (end - begin) - seg[0].len;
-       t1 = rspamd_get_ticks ();
+       t1 = rspamd_get_ticks (TRUE);
        rspamd_cryptobox_encryptv_nm_inplace (seg, 2, nonce, key, mac, mode);
-       t2 = rspamd_get_ticks ();
+       t2 = rspamd_get_ticks (TRUE);
 
        check_result (key, nonce, mac, begin, end);
 
-       msg_info ("small and large chunks encryption: %.6f", t2 - t1);
+       msg_info ("small and large chunks encryption: %.0f", t2 - t1);
 
        seg[0].data = begin;
        seg[0].len = (end - begin) - 3;
        seg[1].data = begin + seg[0].len;
        seg[1].len = (end - begin) - seg[0].len;
-       t1 = rspamd_get_ticks ();
+       t1 = rspamd_get_ticks (TRUE);
        rspamd_cryptobox_encryptv_nm_inplace (seg, 2, nonce, key, mac, mode);
-       t2 = rspamd_get_ticks ();
+       t2 = rspamd_get_ticks (TRUE);
 
        check_result (key, nonce, mac, begin, end);
 
-       msg_info ("large and small chunks encryption: %.6f", t2 - t1);
+       msg_info ("large and small chunks encryption: %.0f", t2 - t1);
 
        /* Random two chunks as vector */
        seg[0].data = begin;
        seg[0].len = ottery_rand_range (end - begin - 1) + 1;
        seg[1].data = begin + seg[0].len;
        seg[1].len = (end - begin) - seg[0].len;
-       t1 = rspamd_get_ticks ();
+       t1 = rspamd_get_ticks (TRUE);
        rspamd_cryptobox_encryptv_nm_inplace (seg, 2, nonce, key, mac, mode);
-       t2 = rspamd_get_ticks ();
+       t2 = rspamd_get_ticks (TRUE);
 
        check_result (key, nonce, mac, begin, end);
 
-       msg_info ("random 2 chunks encryption: %.6f", t2 - t1);
+       msg_info ("random 2 chunks encryption: %.0f", t2 - t1);
 
        /* 3 specific chunks */
        seg[0].data = begin;
@@ -265,47 +265,47 @@ start:
        seg[1].len = 2049;
        seg[2].data = begin + seg[0].len + seg[1].len;
        seg[2].len = (end - begin) - seg[0].len - seg[1].len;
-       t1 = rspamd_get_ticks ();
+       t1 = rspamd_get_ticks (TRUE);
        rspamd_cryptobox_encryptv_nm_inplace (seg, 3, nonce, key, mac, mode);
-       t2 = rspamd_get_ticks ();
+       t2 = rspamd_get_ticks (TRUE);
 
        check_result (key, nonce, mac, begin, end);
 
-       msg_info ("small, medium and large chunks encryption: %.6f", t2 - t1);
+       msg_info ("small, medium and large chunks encryption: %.0f", t2 - t1);
 
        cnt = create_random_split (seg, max_seg, begin, end);
-       t1 = rspamd_get_ticks ();
+       t1 = rspamd_get_ticks (TRUE);
        rspamd_cryptobox_encryptv_nm_inplace (seg, cnt, nonce, key, mac, mode);
-       t2 = rspamd_get_ticks ();
+       t2 = rspamd_get_ticks (TRUE);
 
        check_result (key, nonce, mac, begin, end);
 
-       msg_info ("random split of %d chunks encryption: %.6f", cnt, t2 - t1);
+       msg_info ("random split of %d chunks encryption: %.0f", cnt, t2 - t1);
 
        cnt = create_realistic_split (seg, max_seg, begin, end);
-       t1 = rspamd_get_ticks ();
+       t1 = rspamd_get_ticks (TRUE);
        rspamd_cryptobox_encryptv_nm_inplace (seg, cnt, nonce, key, mac, mode);
-       t2 = rspamd_get_ticks ();
+       t2 = rspamd_get_ticks (TRUE);
 
        check_result (key, nonce, mac, begin, end);
 
-       msg_info ("realistic split of %d chunks encryption: %.6f", cnt, t2 - t1);
+       msg_info ("realistic split of %d chunks encryption: %.0f", cnt, t2 - t1);
 
        cnt = create_constrainted_split (seg, max_seg + 1, 32, begin, end);
-       t1 = rspamd_get_ticks ();
+       t1 = rspamd_get_ticks (TRUE);
        rspamd_cryptobox_encryptv_nm_inplace (seg, cnt, nonce, key, mac, mode);
-       t2 = rspamd_get_ticks ();
+       t2 = rspamd_get_ticks (TRUE);
 
        check_result (key, nonce, mac, begin, end);
 
-       msg_info ("constrainted split of %d chunks encryption: %.6f", cnt, t2 - t1);
+       msg_info ("constrainted split of %d chunks encryption: %.0f", cnt, t2 - t1);
 
        for (i = 0; i < random_fuzz_cnt; i ++) {
                ms = ottery_rand_range (i % max_seg * 2) + 1;
                cnt = create_random_split (seg, ms, begin, end);
-               t1 = rspamd_get_ticks ();
+               t1 = rspamd_get_ticks (TRUE);
                rspamd_cryptobox_encryptv_nm_inplace (seg, cnt, nonce, key, mac, mode);
-               t2 = rspamd_get_ticks ();
+               t2 = rspamd_get_ticks (TRUE);
 
                check_result (key, nonce, mac, begin, end);
 
@@ -316,9 +316,9 @@ start:
        for (i = 0; i < random_fuzz_cnt; i ++) {
                ms = ottery_rand_range (i % max_seg * 2) + 1;
                cnt = create_realistic_split (seg, ms, begin, end);
-               t1 = rspamd_get_ticks ();
+               t1 = rspamd_get_ticks (TRUE);
                rspamd_cryptobox_encryptv_nm_inplace (seg, cnt, nonce, key, mac, mode);
-               t2 = rspamd_get_ticks ();
+               t2 = rspamd_get_ticks (TRUE);
 
                check_result (key, nonce, mac, begin, end);
 
@@ -329,9 +329,9 @@ start:
        for (i = 0; i < random_fuzz_cnt; i ++) {
                ms = ottery_rand_range (i % max_seg * 10) + 1;
                cnt = create_constrainted_split (seg, ms, i, begin, end);
-               t1 = rspamd_get_ticks ();
+               t1 = rspamd_get_ticks (TRUE);
                rspamd_cryptobox_encryptv_nm_inplace (seg, cnt, nonce, key, mac, mode);
-               t2 = rspamd_get_ticks ();
+               t2 = rspamd_get_ticks (TRUE);
 
                check_result (key, nonce, mac, begin, end);
 
index 19ee50ea12be1c822ffca94f87c416f8485338ba..e70c396aaba15411ec6ffc6758488b8d5d837396 100644 (file)
@@ -134,7 +134,7 @@ rspamd_client_finish (struct rspamd_http_connection *conn,
 {
        struct client_cbdata *cb = conn->ud;
 
-       *(cb->lat) = rspamd_get_ticks () * 1000. - cb->ts;
+       *(cb->lat) = rspamd_get_ticks (FALSE) * 1000. - cb->ts;
        close (conn->fd);
        rspamd_http_connection_unref (conn);
        g_free (cb);
@@ -175,7 +175,7 @@ rspamd_http_client_func (const gchar *path, rspamd_inet_addr_t *addr,
        }
 
        cb = g_malloc (sizeof (*cb));
-       cb->ts = rspamd_get_ticks () * 1000.;
+       cb->ts = rspamd_get_ticks (FALSE) * 1000.;
        cb->lat = latency;
        rspamd_http_connection_write_message (conn, msg, NULL, NULL, cb,
                        fd, NULL, ev_base);
@@ -319,9 +319,9 @@ rspamd_http_test_func (void)
                        rspamd_http_client_func (filepath + sizeof ("/tmp") - 1, addr,
                                        NULL, NULL, c, ev_base, &latency[i * pconns + j]);
                }
-               ts1 = rspamd_get_ticks ();
+               ts1 = rspamd_get_ticks (FALSE);
                event_base_loop (ev_base, 0);
-               ts2 = rspamd_get_ticks ();
+               ts2 = rspamd_get_ticks (FALSE);
                diff = (ts2 - ts1) * 1000.0;
                total_diff += diff;
        }
@@ -355,9 +355,9 @@ rspamd_http_test_func (void)
                        rspamd_http_client_func (filepath + sizeof ("/tmp") - 1, addr,
                                        client_key, peer_key, c, ev_base, &latency[i * pconns + j]);
                }
-               ts1 = rspamd_get_ticks ();
+               ts1 = rspamd_get_ticks (FALSE);
                event_base_loop (ev_base, 0);
-               ts2 = rspamd_get_ticks ();
+               ts2 = rspamd_get_ticks (FALSE);
                diff = (ts2 - ts1) * 1000.0;
                total_diff += diff;
        }
@@ -385,9 +385,9 @@ rspamd_http_test_func (void)
                        rspamd_http_client_func (filepath + sizeof ("/tmp") - 1, addr,
                                        client_key, peer_key, c, ev_base, &latency[i * pconns + j]);
                }
-               ts1 = rspamd_get_ticks ();
+               ts1 = rspamd_get_ticks (FALSE);
                event_base_loop (ev_base, 0);
-               ts2 = rspamd_get_ticks ();
+               ts2 = rspamd_get_ticks (FALSE);
                diff = (ts2 - ts1) * 1000.0;
                total_diff += diff;
        }
@@ -434,9 +434,9 @@ rspamd_http_test_func (void)
                                        ev_base,
                                        &latency[i * pconns + j]);
                }
-               ts1 = rspamd_get_ticks ();
+               ts1 = rspamd_get_ticks (FALSE);
                event_base_loop (ev_base, 0);
-               ts2 = rspamd_get_ticks ();
+               ts2 = rspamd_get_ticks (FALSE);
                diff = (ts2 - ts1) * 1000.0;
                total_diff += diff;
        }
@@ -472,9 +472,9 @@ rspamd_http_test_func (void)
                                        ev_base,
                                        &latency[i * pconns + j]);
                }
-               ts1 = rspamd_get_ticks ();
+               ts1 = rspamd_get_ticks (FALSE);
                event_base_loop (ev_base, 0);
-               ts2 = rspamd_get_ticks ();
+               ts2 = rspamd_get_ticks (FALSE);
                diff = (ts2 - ts1) * 1000.0;
                total_diff += diff;
        }
index 0f114bf805274303e2ef1acc3ce4b43b56b28fa5..b3a18539978f24ca47c863b1534b2b3923352b02 100644 (file)
@@ -242,17 +242,17 @@ rspamd_radix_test_func (void)
        btrie = btrie_init (pool);
        msg_info ("btrie performance (%z elts)", nelts);
 
-       ts1 = rspamd_get_ticks ();
+       ts1 = rspamd_get_ticks (TRUE);
        for (i = 0; i < nelts; i ++) {
                btrie_add_prefix (btrie, addrs[i].addr6,
                                addrs[i].mask6, GSIZE_TO_POINTER (i + 1));
        }
-       ts2 = rspamd_get_ticks ();
+       ts2 = rspamd_get_ticks (TRUE);
        diff = (ts2 - ts1) * 1000.0;
 
-       msg_info ("Added %hz elements in %.6f ms", nelts, diff);
+       msg_info ("Added %hz elements in %.0f ticks", nelts, diff);
 
-       ts1 = rspamd_get_ticks ();
+       ts1 = rspamd_get_ticks (TRUE);
        for (lc = 0; lc < lookup_cycles && all_good; lc ++) {
                for (i = 0; i < nelts / lookup_divisor; i ++) {
                        check = ottery_rand_range (nelts - 1);
@@ -272,26 +272,26 @@ rspamd_radix_test_func (void)
                }
        }
        g_assert (all_good);
-       ts2 = rspamd_get_ticks ();
+       ts2 = rspamd_get_ticks (TRUE);
        diff = (ts2 - ts1) * 1000.0;
 
-       msg_info ("Checked %hz elements in %.6f ms",
+       msg_info ("Checked %hz elements in %.0f ticks",
                        nelts * lookup_cycles / lookup_divisor, diff);
 
        msg_info ("new radix performance (%z elts)", nelts);
-       ts1 = rspamd_get_ticks ();
+       ts1 = rspamd_get_ticks (TRUE);
 
        for (i = 0; i < nelts; i ++) {
                radix_insert_compressed (comp_tree, addrs[i].addr6, sizeof (addrs[i].addr6),
                                128 - addrs[i].mask6, i + 1);
        }
 
-       ts2 = rspamd_get_ticks ();
+       ts2 = rspamd_get_ticks (TRUE);
        diff = (ts2 - ts1) * 1000.0;
 
-       msg_info ("Added %hz elements in %.6f ms", nelts, diff);
+       msg_info ("Added %hz elements in %.0f ticks", nelts, diff);
 
-       ts1 = rspamd_get_ticks ();
+       ts1 = rspamd_get_ticks (TRUE);
        for (lc = 0; lc < lookup_cycles && all_good; lc ++) {
                for (i = 0; i < nelts / lookup_divisor; i ++) {
                        check = ottery_rand_range (nelts - 1);
@@ -324,10 +324,10 @@ rspamd_radix_test_func (void)
 #endif
 
        g_assert (all_good);
-       ts2 = rspamd_get_ticks ();
+       ts2 = rspamd_get_ticks (TRUE);
        diff = (ts2 - ts1) * 1000.0;
 
-       msg_info ("Checked %hz elements in %.6f ms",
+       msg_info ("Checked %hz elements in %.0f ticks",
                        nelts * lookup_cycles / lookup_divisor, diff);
        radix_destroy_compressed (comp_tree);