1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
--- synapse/app/_base.py.orig 2017-10-02 12:52:03 UTC
+++ synapse/app/_base.py
@@ -15,7 +15,6 @@
import gc
import logging
-import affinity
from daemonize import Daemonize
from synapse.util import PreserveLoggingContext
from synapse.util.rlimit import change_resource_limit
@@ -41,8 +40,7 @@ def start_worker_reactor(appname, config
config.gc_thresholds,
config.worker_pid_file,
config.worker_daemonize,
- config.worker_cpu_affinity,
- logger,
+ logger
)
@@ -52,7 +50,6 @@ def start_reactor(
gc_thresholds,
pid_file,
daemonize,
- cpu_affinity,
logger,
):
""" Run the reactor in the main process
@@ -66,7 +63,6 @@ def start_reactor(
gc_thresholds:
pid_file (str): name of pid file to write to if daemonize is True
daemonize (bool): true to run the reactor in a background process
- cpu_affinity (int|None): cpu affinity mask
logger (logging.Logger): logger instance to pass to Daemonize
"""
@@ -77,9 +73,6 @@ def start_reactor(
# between the sentinel and `run` logcontexts.
with PreserveLoggingContext():
logger.info("Running")
- if cpu_affinity is not None:
- logger.info("Setting CPU affinity to %s" % cpu_affinity)
- affinity.set_process_affinity_mask(0, cpu_affinity)
change_resource_limit(soft_file_limit)
if gc_thresholds:
gc.set_threshold(*gc_thresholds)
--- synapse/app/homeserver.py.orig 2017-10-02 12:52:03 UTC
+++ synapse/app/homeserver.py
@@ -442,7 +442,6 @@ def run(hs):
hs.config.gc_thresholds,
hs.config.pid_file,
hs.config.daemonize,
- hs.config.cpu_affinity,
logger,
)
--- synapse/config/server.py.orig 2017-10-02 12:52:03 UTC
+++ synapse/config/server.py
@@ -30,7 +30,6 @@ class ServerConfig(Config):
self.user_agent_suffix = config.get("user_agent_suffix")
self.use_frozen_dicts = config.get("use_frozen_dicts", False)
self.public_baseurl = config.get("public_baseurl")
- self.cpu_affinity = config.get("cpu_affinity")
# Whether to send federation traffic out in this process. This only
# applies to some federation traffic, and so shouldn't be used to
@@ -155,27 +154,6 @@ class ServerConfig(Config):
# When running as a daemon, the file to store the pid in
pid_file: %(pid_file)s
- # CPU affinity mask. Setting this restricts the CPUs on which the
- # process will be scheduled. It is represented as a bitmask, with the
- # lowest order bit corresponding to the first logical CPU and the
- # highest order bit corresponding to the last logical CPU. Not all CPUs
- # may exist on a given system but a mask may specify more CPUs than are
- # present.
- #
- # For example:
- # 0x00000001 is processor #0,
- # 0x00000003 is processors #0 and #1,
- # 0xFFFFFFFF is all processors (#0 through #31).
- #
- # Pinning a Python process to a single CPU is desirable, because Python
- # is inherently single-threaded due to the GIL, and can suffer a
- # 30-40%% slowdown due to cache blow-out and thread context switching
- # if the scheduler happens to schedule the underlying threads across
- # different cores. See
- # https://www.mirantis.com/blog/improve-performance-python-programs-restricting-single-cpu/.
- #
- # cpu_affinity: 0xFFFFFFFF
-
# Whether to serve a web client from the HTTP/HTTPS root resource.
web_client: True
--- synapse/config/workers.py.orig 2017-10-02 12:52:03 UTC
+++ synapse/config/workers.py
@@ -33,7 +33,6 @@ class WorkerConfig(Config):
self.worker_name = config.get("worker_name", self.worker_app)
self.worker_main_http_uri = config.get("worker_main_http_uri", None)
- self.worker_cpu_affinity = config.get("worker_cpu_affinity")
if self.worker_listeners:
for listener in self.worker_listeners:
--- synapse/python_dependencies.py.orig 2017-10-02 12:52:03 UTC
+++ synapse/python_dependencies.py
@@ -40,7 +40,6 @@ REQUIREMENTS = {
"pymacaroons-pynacl": ["pymacaroons"],
"msgpack-python>=0.3.0": ["msgpack"],
"phonenumbers>=8.2.0": ["phonenumbers"],
- "affinity": ["affinity"],
}
CONDITIONAL_REQUIREMENTS = {
"web_client": {
|