mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-20 10:12:15 +01:00
Only call cull_wedged_cpuworkers once every 60 seconds.
The function is over 10 or 20% on some of Moritz's profiles, depending on how you could. Since it's checking for a multi-hour timeout, this is safe to do. Fixes bug 4518.
This commit is contained in:
parent
5a02406ae0
commit
8e388bc39c
4
changes/bug4518
Normal file
4
changes/bug4518
Normal file
@ -0,0 +1,4 @@
|
||||
o Minor bugfixes (performance):
|
||||
- Avoid frequent calls to the fairly expensive cull_wedged_cpuworkers
|
||||
function. This was eating up hideously large amounts of time on some
|
||||
busy servers. Fixes bug 4518.
|
@ -446,9 +446,19 @@ assign_onionskin_to_cpuworker(connection_t *cpuworker,
|
||||
{
|
||||
char qbuf[1];
|
||||
char tag[TAG_LEN];
|
||||
time_t now = approx_time();
|
||||
static time_t last_culled_cpuworkers = 0;
|
||||
|
||||
cull_wedged_cpuworkers();
|
||||
spawn_enough_cpuworkers();
|
||||
/* Checking for wedged cpuworkers requires a linear search over all
|
||||
* connections, so let's do it only once a minute.
|
||||
*/
|
||||
#define CULL_CPUWORKERS_INTERVAL 60
|
||||
|
||||
if (last_culled_cpuworkers + CULL_CPUWORKERS_INTERVAL <= now) {
|
||||
cull_wedged_cpuworkers();
|
||||
spawn_enough_cpuworkers();
|
||||
last_culled_cpuworkers = now;
|
||||
}
|
||||
|
||||
if (1) {
|
||||
if (num_cpuworkers_busy == num_cpuworkers) {
|
||||
|
Loading…
Reference in New Issue
Block a user