2
0
mirror of https://github.com/openvswitch/ovs synced 2025-10-21 14:49:41 +00:00

timeval: Enable caching the current time even on x86-64.

With CFM enabled on 1000 tunnels, this reduced CPU use from about 30% to
about 22%.

Bug #15171.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
This commit is contained in:
Ben Pfaff
2013-03-05 16:12:21 -08:00
parent fe19569ac5
commit 3d6702a2e6

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2008, 2009, 2010, 2011, 2012 Nicira, Inc.
* Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -45,18 +45,12 @@ BUILD_ASSERT_DECL(TYPE_IS_SIGNED(time_t));
* much time will be wasted in signal handlers and calls to clock_gettime(). */
#define TIME_UPDATE_INTERVAL 100
/* True on systems (particularly x86-64 Linux) where clock_gettime() is
* inexpensive. On these systems, we don't bother caching the current time.
* Instead, we consult clock_gettime() directly when needed.
*
* False on systems where clock_gettime() is relatively expensive. On these
* systems, we cache the current time and set up a periodic SIGALRM to remind
* us to update it.
*
* Also false on systems (e.g. ESX) that don't support setting up timers based
* on a monotonically increasing clock. */
/* True on systems that support a monotonic clock. Compared to just getting
* the value of a variable, clock_gettime() is somewhat expensive, even on
* systems that try hard to optimize it (such as x86-64 Linux), so it's
* worthwhile to minimize calls via caching. */
#ifndef CACHE_TIME
#if defined ESX || (defined __x86_64__ && defined LINUX_DATAPATH)
#if defined ESX
#define CACHE_TIME 0
#else
#define CACHE_TIME 1