)]}'
{"neutron/agent/l3/ha.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"c480c4c81584cc3f7e95bc66f4e67830608826ed","unresolved":false,"context_lines":[{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"KEEPALIVED_STATE_CHANGE_SERVER_BACKLOG \u003d 4096"},{"line_number":32,"context_line":"KEEPALIVED_STATE_CHANGE_SERVER_THREADS \u003d (common_utils.cpu_count() / 2)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"OPTS \u003d ["},{"line_number":35,"context_line":"    cfg.StrOpt(\u0027ha_confs_path\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_a6b7cef3","line":32,"range":{"start_line":32,"start_character":67,"end_line":32,"end_character":68},"updated":"2016-05-31 14:45:24.000000000","message":"Should we use // here?","commit_id":"deddfa3004aba5ae6e63cd606695296fa65cf267"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"64a71c74336280fd850f75c3eb201a7d12aca13b","unresolved":false,"context_lines":[{"line_number":81,"context_line":"    def run(self):"},{"line_number":82,"context_line":"        server \u003d agent_utils.UnixDomainWSGIServer("},{"line_number":83,"context_line":"            \u0027neutron-keepalived-state-change\u0027)"},{"line_number":84,"context_line":"        server.num_threads \u003d KEEPALIVED_STATE_CHANGE_SERVER_THREADS"},{"line_number":85,"context_line":"        server.start(KeepalivedStateChangeHandler(self.agent),"},{"line_number":86,"context_line":"                     self.get_keepalived_state_change_socket_path(self.conf),"},{"line_number":87,"context_line":"                     workers\u003d0,"}],"source_content_type":"text/x-python","patch_set":1,"id":"dab17558_29db5350","line":84,"range":{"start_line":84,"start_character":8,"end_line":84,"end_character":67},"updated":"2016-05-17 18:59:52.000000000","message":"So even though the num_threads is configurable via CONF.wsgi_default_pool_size as per: https://github.com/openstack/neutron/blob/master/neutron/wsgi.py#L119  we just override it here?\n\n\nIsn\u0027t this going to be misleading to admins/deployers? The config value will just be ignored for the l3 agent.","commit_id":"deddfa3004aba5ae6e63cd606695296fa65cf267"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a5af5ce0cd222fdc6bd8d4d8bcb648fc5d0a536b","unresolved":false,"context_lines":[{"line_number":81,"context_line":"    def run(self):"},{"line_number":82,"context_line":"        server \u003d agent_utils.UnixDomainWSGIServer("},{"line_number":83,"context_line":"            \u0027neutron-keepalived-state-change\u0027)"},{"line_number":84,"context_line":"        server.num_threads \u003d KEEPALIVED_STATE_CHANGE_SERVER_THREADS"},{"line_number":85,"context_line":"        server.start(KeepalivedStateChangeHandler(self.agent),"},{"line_number":86,"context_line":"                     self.get_keepalived_state_change_socket_path(self.conf),"},{"line_number":87,"context_line":"                     workers\u003d0,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_522610bb","line":84,"range":{"start_line":84,"start_character":8,"end_line":84,"end_character":67},"in_reply_to":"bab6814e_ef73e14b","updated":"2016-05-18 13:42:03.000000000","message":"We *can* introduce new options in backports. We can\u0027t change default behaviour though. So if it\u0027s backported, we should make sure the default value is as before the backport.","commit_id":"deddfa3004aba5ae6e63cd606695296fa65cf267"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"bac428be1f3907f54d91d8126d786e5a0491e4f9","unresolved":false,"context_lines":[{"line_number":81,"context_line":"    def run(self):"},{"line_number":82,"context_line":"        server \u003d agent_utils.UnixDomainWSGIServer("},{"line_number":83,"context_line":"            \u0027neutron-keepalived-state-change\u0027)"},{"line_number":84,"context_line":"        server.num_threads \u003d KEEPALIVED_STATE_CHANGE_SERVER_THREADS"},{"line_number":85,"context_line":"        server.start(KeepalivedStateChangeHandler(self.agent),"},{"line_number":86,"context_line":"                     self.get_keepalived_state_change_socket_path(self.conf),"},{"line_number":87,"context_line":"                     workers\u003d0,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_ef73e14b","line":84,"range":{"start_line":84,"start_character":8,"end_line":84,"end_character":67},"in_reply_to":"dab17558_29db5350","updated":"2016-05-18 13:38:03.000000000","message":"May be we need to use this as a backportable patch (to fix the bug), and then add a follow up patch with another configurable setting specifically for this.\n\nDoes that sound reasonable?.","commit_id":"deddfa3004aba5ae6e63cd606695296fa65cf267"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"f298bdfd5a92d8998251cf1fb057b35c6234380f","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    cfg.IntOpt(\u0027ha_vrrp_advert_int\u0027,"},{"line_number":46,"context_line":"               default\u003d2,"},{"line_number":47,"context_line":"               help\u003d_(\u0027The advertisement interval in seconds\u0027)),"},{"line_number":48,"context_line":"    cfg.IntOpt(\u0027ha_keepalived_state_change_server_threads\u0027,"},{"line_number":49,"context_line":"               default\u003dcommon_utils.cpu_count() // 2,"},{"line_number":50,"context_line":"               help\u003d_(\u0027Threads to be spawned at a time for \u0027"},{"line_number":51,"context_line":"                      \u0027keepalived server connection requests\u0027)),"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_ae978d46","line":48,"updated":"2016-05-20 18:30:09.000000000","message":"I can\u0027t say I\u0027m in favor of adding another config option for this. I\u0027d be more in favor of hard-coding it to cpu_count() // 2. If you do go for a new config option, it\u0027s because operators would want to make an educated choice as to the value that best suits their deployment. They can\u0027t do that if the help text is minimal as it is. I think if you want to add a config option, the help text should explain what the option is for, and why would you want it lower or higher than the default. It should justify its existence.","commit_id":"2565c4530b3cb4f80dad2825ea9a98abe1103e47"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"d7fbe3a14db226c2cdedde0f477dba01fd7b99bd","unresolved":false,"context_lines":[{"line_number":46,"context_line":"               default\u003d2,"},{"line_number":47,"context_line":"               help\u003d_(\u0027The advertisement interval in seconds\u0027)),"},{"line_number":48,"context_line":"    cfg.IntOpt(\u0027ha_keepalived_state_change_server_threads\u0027,"},{"line_number":49,"context_line":"               default\u003dcommon_utils.cpu_count() // 2,"},{"line_number":50,"context_line":"               help\u003d_(\u0027Threads to be spawned at a time for \u0027"},{"line_number":51,"context_line":"                      \u0027keepalived server connection requests.\u0027"},{"line_number":52,"context_line":"                      \u0027Bigger value is creating heavy cpu load on agent.\u0027)),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9abb7d3a_462ee2a5","line":49,"updated":"2016-05-31 14:47:05.000000000","message":"nit: extra / doesn\u0027t seem to matter though but could be confusing\n\u003e\u003e\u003e 2//2\n1\n\u003e\u003e\u003e 2/2\n1","commit_id":"6f300711b1d1b4b154e5bd0951872435ee7a3e6b"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"8052703c23c97728dc8327aa6e154e5126d98ba3","unresolved":false,"context_lines":[{"line_number":46,"context_line":"               default\u003d2,"},{"line_number":47,"context_line":"               help\u003d_(\u0027The advertisement interval in seconds\u0027)),"},{"line_number":48,"context_line":"    cfg.IntOpt(\u0027ha_keepalived_state_change_server_threads\u0027,"},{"line_number":49,"context_line":"               default\u003dcommon_utils.cpu_count() // 2,"},{"line_number":50,"context_line":"               help\u003d_(\u0027Threads to be spawned at a time for \u0027"},{"line_number":51,"context_line":"                      \u0027keepalived server connection requests.\u0027"},{"line_number":52,"context_line":"                      \u0027Bigger value is creating heavy cpu load on agent.\u0027)),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9abb7d3a_fa5686cc","line":49,"in_reply_to":"9abb7d3a_462ee2a5","updated":"2016-05-31 14:50:20.000000000","message":"-bash-4.2$ python3\nPython 3.4.3 (default, Jan 26 2016, 02:25:35) \n[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n\u003e\u003e\u003e 2//2\n1\n\u003e\u003e\u003e 2/2\n1.0","commit_id":"6f300711b1d1b4b154e5bd0951872435ee7a3e6b"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"aaa7d1e36459c9af207325e9b141cd418da93290","unresolved":false,"context_lines":[{"line_number":46,"context_line":"               default\u003d2,"},{"line_number":47,"context_line":"               help\u003d_(\u0027The advertisement interval in seconds\u0027)),"},{"line_number":48,"context_line":"    cfg.IntOpt(\u0027ha_keepalived_state_change_server_threads\u0027,"},{"line_number":49,"context_line":"               default\u003dcommon_utils.cpu_count() // 2,"},{"line_number":50,"context_line":"               help\u003d_(\u0027Threads to be spawned at a time for \u0027"},{"line_number":51,"context_line":"                      \u0027keepalived server connection requests.\u0027"},{"line_number":52,"context_line":"                      \u0027Bigger value is creating heavy cpu load on agent.\u0027)),"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_ad45ff17","line":49,"updated":"2016-08-29 05:31:23.000000000","message":"Note that 1//2 is 0. Does that work? I think you should add a test for it.","commit_id":"5cba733f2504e4578ec19cdabe5bbe71d22321a7"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"4369be37710e100107196263b43156e2abba587f","unresolved":false,"context_lines":[{"line_number":46,"context_line":"               default\u003d2,"},{"line_number":47,"context_line":"               help\u003d_(\u0027The advertisement interval in seconds\u0027)),"},{"line_number":48,"context_line":"    cfg.IntOpt(\u0027ha_keepalived_state_change_server_threads\u0027,"},{"line_number":49,"context_line":"               default\u003dcommon_utils.cpu_count() // 2,"},{"line_number":50,"context_line":"               help\u003d_(\u0027Threads to be spawned at a time for \u0027"},{"line_number":51,"context_line":"                      \u0027keepalived server connection requests.\u0027"},{"line_number":52,"context_line":"                      \u0027Bigger value is creating heavy cpu load on agent.\u0027)),"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_f256ed28","line":49,"in_reply_to":"fa7ab95a_ad45ff17","updated":"2016-08-29 13:09:29.000000000","message":"I was following [1]. But fixed in new patchset. Added test also.\n\n[1] https://github.com/openstack/neutron/blob/master/neutron/agent/metadata/config.py#L109","commit_id":"5cba733f2504e4578ec19cdabe5bbe71d22321a7"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"aaa7d1e36459c9af207325e9b141cd418da93290","unresolved":false,"context_lines":[{"line_number":47,"context_line":"               help\u003d_(\u0027The advertisement interval in seconds\u0027)),"},{"line_number":48,"context_line":"    cfg.IntOpt(\u0027ha_keepalived_state_change_server_threads\u0027,"},{"line_number":49,"context_line":"               default\u003dcommon_utils.cpu_count() // 2,"},{"line_number":50,"context_line":"               help\u003d_(\u0027Threads to be spawned at a time for \u0027"},{"line_number":51,"context_line":"                      \u0027keepalived server connection requests.\u0027"},{"line_number":52,"context_line":"                      \u0027Bigger value is creating heavy cpu load on agent.\u0027)),"},{"line_number":53,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_8ae90183","line":50,"range":{"start_line":50,"start_character":23,"end_line":50,"end_character":58},"updated":"2016-08-29 05:31:23.000000000","message":"\u0027Number of concurrent threads for \u0027","commit_id":"5cba733f2504e4578ec19cdabe5bbe71d22321a7"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"4369be37710e100107196263b43156e2abba587f","unresolved":false,"context_lines":[{"line_number":47,"context_line":"               help\u003d_(\u0027The advertisement interval in seconds\u0027)),"},{"line_number":48,"context_line":"    cfg.IntOpt(\u0027ha_keepalived_state_change_server_threads\u0027,"},{"line_number":49,"context_line":"               default\u003dcommon_utils.cpu_count() // 2,"},{"line_number":50,"context_line":"               help\u003d_(\u0027Threads to be spawned at a time for \u0027"},{"line_number":51,"context_line":"                      \u0027keepalived server connection requests.\u0027"},{"line_number":52,"context_line":"                      \u0027Bigger value is creating heavy cpu load on agent.\u0027)),"},{"line_number":53,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_923e81d8","line":50,"range":{"start_line":50,"start_character":23,"end_line":50,"end_character":58},"in_reply_to":"fa7ab95a_8ae90183","updated":"2016-08-29 13:09:29.000000000","message":"done","commit_id":"5cba733f2504e4578ec19cdabe5bbe71d22321a7"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"aaa7d1e36459c9af207325e9b141cd418da93290","unresolved":false,"context_lines":[{"line_number":49,"context_line":"               default\u003dcommon_utils.cpu_count() // 2,"},{"line_number":50,"context_line":"               help\u003d_(\u0027Threads to be spawned at a time for \u0027"},{"line_number":51,"context_line":"                      \u0027keepalived server connection requests.\u0027"},{"line_number":52,"context_line":"                      \u0027Bigger value is creating heavy cpu load on agent.\u0027)),"},{"line_number":53,"context_line":"]"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_0aac1133","line":52,"range":{"start_line":52,"start_character":23,"end_line":52,"end_character":72},"updated":"2016-08-29 05:31:23.000000000","message":"I am not sure this sentence is needed. If you want to keep it, reword it to something like \u0027More threads create a higher CPU load on the agent node.\u0027","commit_id":"5cba733f2504e4578ec19cdabe5bbe71d22321a7"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"4369be37710e100107196263b43156e2abba587f","unresolved":false,"context_lines":[{"line_number":49,"context_line":"               default\u003dcommon_utils.cpu_count() // 2,"},{"line_number":50,"context_line":"               help\u003d_(\u0027Threads to be spawned at a time for \u0027"},{"line_number":51,"context_line":"                      \u0027keepalived server connection requests.\u0027"},{"line_number":52,"context_line":"                      \u0027Bigger value is creating heavy cpu load on agent.\u0027)),"},{"line_number":53,"context_line":"]"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_f22d0da9","line":52,"range":{"start_line":52,"start_character":23,"end_line":52,"end_character":72},"in_reply_to":"fa7ab95a_0aac1133","updated":"2016-08-29 13:09:29.000000000","message":"done","commit_id":"5cba733f2504e4578ec19cdabe5bbe71d22321a7"}],"neutron/agent/linux/utils.py":[{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"f298bdfd5a92d8998251cf1fb057b35c6234380f","unresolved":false,"context_lines":[{"line_number":370,"context_line":"        self._socket \u003d None"},{"line_number":371,"context_line":"        self._launcher \u003d None"},{"line_number":372,"context_line":"        self._server \u003d None"},{"line_number":373,"context_line":"        if num_threads:"},{"line_number":374,"context_line":"            self.num_threads \u003d num_threads"},{"line_number":375,"context_line":"        super(UnixDomainWSGIServer, self).__init__(name, disable_ssl\u003dTrue)"},{"line_number":376,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_2e2efd42","line":373,"updated":"2016-05-20 18:30:09.000000000","message":"Shouldn\u0027t you pass num_threads to super.__init__ instead at line 375?","commit_id":"2565c4530b3cb4f80dad2825ea9a98abe1103e47"}],"neutron/agent/metadata/agent.py":[{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"64a71c74336280fd850f75c3eb201a7d12aca13b","unresolved":false,"context_lines":[{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    def run(self):"},{"line_number":298,"context_line":"        server \u003d agent_utils.UnixDomainWSGIServer(\u0027neutron-metadata-agent\u0027)"},{"line_number":299,"context_line":"        server.num_threads \u003d self.conf.metadata_workers"},{"line_number":300,"context_line":"        server.start(MetadataProxyHandler(self.conf),"},{"line_number":301,"context_line":"                     self.conf.metadata_proxy_socket,"},{"line_number":302,"context_line":"                     workers\u003dself.conf.metadata_workers,"}],"source_content_type":"text/x-python","patch_set":1,"id":"dab17558_696a7bb4","line":299,"range":{"start_line":299,"start_character":39,"end_line":299,"end_character":55},"updated":"2016-05-17 18:59:52.000000000","message":"As per the conf doc, metadata_workers are related to processes, not threads: https://github.com/openstack/neutron/blob/master/neutron/agent/metadata/config.py#L110\n\n\nTherefore using metadata_workers here seems misleading IMHO.\n\n\nDid you mean to use CONF.wsgi_default_pool_size here?\n\n\nAlso, IMO it would be cleaner to update UnixDominaWSGIServer\u0027s constructor to accept the num_threads as optional kwarg and pass onto its parent __init__() rather than injecting the num_threads after the fact, but perhaps that\u0027s a nit.","commit_id":"deddfa3004aba5ae6e63cd606695296fa65cf267"}],"neutron/agent/metadata/config.py":[{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"eadba9622206a99772d08788a116c1c29f8de3fd","unresolved":false,"context_lines":[{"line_number":109,"context_line":"               default\u003dutils.cpu_count() // 2,"},{"line_number":110,"context_line":"               help\u003d_(\u0027Number of separate worker processes for metadata \u0027"},{"line_number":111,"context_line":"                      \u0027server (defaults to half of the number of CPUs)\u0027)),"},{"line_number":112,"context_line":"    cfg.IntOpt(\u0027metadata_server_threads\u0027,"},{"line_number":113,"context_line":"               default\u003dutils.cpu_count() // 2,"},{"line_number":114,"context_line":"               help\u003d_(\u0027Number of of threads to be spawned at a time in each \u0027"},{"line_number":115,"context_line":"                      \u0027process for metadata server connection requests \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_2d61f805","line":112,"updated":"2016-05-20 12:17:28.000000000","message":"The way I see it there\u0027s an existing option that controls the value. The issue was that it was controlling both consumers of the WSGI server, keepalived and metadata. You added a separate option for keepalived, now you got two separate options for two separate consumers. Why add a third?","commit_id":"067469a4a98d4a26bf82fa3ccf002e1ec26826e2"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"09de9266ef29c2e3fa1ddc9d1c0d65a725b850bf","unresolved":false,"context_lines":[{"line_number":109,"context_line":"               default\u003dutils.cpu_count() // 2,"},{"line_number":110,"context_line":"               help\u003d_(\u0027Number of separate worker processes for metadata \u0027"},{"line_number":111,"context_line":"                      \u0027server (defaults to half of the number of CPUs)\u0027)),"},{"line_number":112,"context_line":"    cfg.IntOpt(\u0027metadata_server_threads\u0027,"},{"line_number":113,"context_line":"               default\u003dutils.cpu_count() // 2,"},{"line_number":114,"context_line":"               help\u003d_(\u0027Number of of threads to be spawned at a time in each \u0027"},{"line_number":115,"context_line":"                      \u0027process for metadata server connection requests \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_c8013a6c","line":112,"in_reply_to":"bab6814e_2d61f805","updated":"2016-05-20 12:35:00.000000000","message":"I see cpu heavy load when more num of threads spawned for keepalived state change server. But I thought if having separate config options for both servers will give admins more control to configure them.\n\nI will update it to have separate config option for keepalived state change server in this change and let metadata server use the current default configuration.","commit_id":"067469a4a98d4a26bf82fa3ccf002e1ec26826e2"}],"releasenotes/notes/keepalived-state-change-server-threads-9ed775e7533dd1a0.yaml":[{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"cefa1e98760f3ffab0c4d0b75bea25318a93e2d5","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    on agent. The default value is half of the number"},{"line_number":8,"context_line":"    of cpus present on the node. This allows operators"},{"line_number":9,"context_line":"    to tune num_threads according to their node\u0027s"},{"line_number":10,"context_line":"    hardware configuration."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"1ac06dbe_e82e30f9","line":10,"updated":"2016-08-24 19:16:38.000000000","message":"Can you specify the advantage of a higher value? You only presented the downside.","commit_id":"f9efd4b9f80af657890a6107ba2ecfffe2407ec6"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"9ea9e96e68e6ef3fde15b94b6098acba246f7ef6","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    on agent. The default value is half of the number"},{"line_number":8,"context_line":"    of cpus present on the node. This allows operators"},{"line_number":9,"context_line":"    to tune num_threads according to their node\u0027s"},{"line_number":10,"context_line":"    hardware configuration."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"1ac06dbe_27ed1626","line":10,"in_reply_to":"1ac06dbe_e82e30f9","updated":"2016-08-24 19:42:36.000000000","message":"thanks, done","commit_id":"f9efd4b9f80af657890a6107ba2ecfffe2407ec6"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"aaa7d1e36459c9af207325e9b141cd418da93290","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - Define \u0027ha_keepalived_state_change_server_threads\u0027"},{"line_number":4,"context_line":"    option to support configuration of threads to be"},{"line_number":5,"context_line":"    spawned at a time for keepalived server connection"},{"line_number":6,"context_line":"    requests. Bigger value is creating heavy cpu load"},{"line_number":7,"context_line":"    on agent. The default value is half of the number"},{"line_number":8,"context_line":"    of cpus present on the node. This allows operators"},{"line_number":9,"context_line":"    to tune num_threads according to their environment."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"fa7ab95a_ad241faf","line":6,"range":{"start_line":3,"start_character":4,"end_line":6,"end_character":13},"updated":"2016-08-29 05:31:23.000000000","message":"Remember that the operator is reading this too see what has changed in the release, so you must describe it like it has already been implemented. You can also use double back-ticks around the option so it looks nice when rendered.\n\n\u0027A new option ``ha_keepalived_state_change_server_threads`` has been added to configure the number of concurrent threads spawned for keepalived server connection requests.\u0027","commit_id":"5cba733f2504e4578ec19cdabe5bbe71d22321a7"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"4369be37710e100107196263b43156e2abba587f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - Define \u0027ha_keepalived_state_change_server_threads\u0027"},{"line_number":4,"context_line":"    option to support configuration of threads to be"},{"line_number":5,"context_line":"    spawned at a time for keepalived server connection"},{"line_number":6,"context_line":"    requests. Bigger value is creating heavy cpu load"},{"line_number":7,"context_line":"    on agent. The default value is half of the number"},{"line_number":8,"context_line":"    of cpus present on the node. This allows operators"},{"line_number":9,"context_line":"    to tune num_threads according to their environment."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"fa7ab95a_322db5fe","line":6,"range":{"start_line":3,"start_character":4,"end_line":6,"end_character":13},"in_reply_to":"fa7ab95a_ad241faf","updated":"2016-08-29 13:09:29.000000000","message":"done","commit_id":"5cba733f2504e4578ec19cdabe5bbe71d22321a7"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"aaa7d1e36459c9af207325e9b141cd418da93290","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - Define \u0027ha_keepalived_state_change_server_threads\u0027"},{"line_number":4,"context_line":"    option to support configuration of threads to be"},{"line_number":5,"context_line":"    spawned at a time for keepalived server connection"},{"line_number":6,"context_line":"    requests. Bigger value is creating heavy cpu load"},{"line_number":7,"context_line":"    on agent. The default value is half of the number"},{"line_number":8,"context_line":"    of cpus present on the node. This allows operators"},{"line_number":9,"context_line":"    to tune num_threads according to their environment."},{"line_number":10,"context_line":"    With higher values for this config, simultaneous"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"fa7ab95a_cd42433e","line":7,"range":{"start_line":6,"start_character":14,"end_line":7,"end_character":13},"updated":"2016-08-29 05:31:23.000000000","message":"\u0027Higher values increase the CPU load on the agent nodes.\u0027","commit_id":"5cba733f2504e4578ec19cdabe5bbe71d22321a7"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"4369be37710e100107196263b43156e2abba587f","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - Define \u0027ha_keepalived_state_change_server_threads\u0027"},{"line_number":4,"context_line":"    option to support configuration of threads to be"},{"line_number":5,"context_line":"    spawned at a time for keepalived server connection"},{"line_number":6,"context_line":"    requests. Bigger value is creating heavy cpu load"},{"line_number":7,"context_line":"    on agent. The default value is half of the number"},{"line_number":8,"context_line":"    of cpus present on the node. This allows operators"},{"line_number":9,"context_line":"    to tune num_threads according to their environment."},{"line_number":10,"context_line":"    With higher values for this config, simultaneous"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"fa7ab95a_52323960","line":7,"range":{"start_line":6,"start_character":14,"end_line":7,"end_character":13},"in_reply_to":"fa7ab95a_cd42433e","updated":"2016-08-29 13:09:29.000000000","message":"done","commit_id":"5cba733f2504e4578ec19cdabe5bbe71d22321a7"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"aaa7d1e36459c9af207325e9b141cd418da93290","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    spawned at a time for keepalived server connection"},{"line_number":6,"context_line":"    requests. Bigger value is creating heavy cpu load"},{"line_number":7,"context_line":"    on agent. The default value is half of the number"},{"line_number":8,"context_line":"    of cpus present on the node. This allows operators"},{"line_number":9,"context_line":"    to tune num_threads according to their environment."},{"line_number":10,"context_line":"    With higher values for this config, simultaneous"},{"line_number":11,"context_line":"    requests for multiple HA routers state change can"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"fa7ab95a_ed3d47bc","line":8,"range":{"start_line":8,"start_character":7,"end_line":8,"end_character":11},"updated":"2016-08-29 05:31:23.000000000","message":"CPUs","commit_id":"5cba733f2504e4578ec19cdabe5bbe71d22321a7"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"4369be37710e100107196263b43156e2abba587f","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    spawned at a time for keepalived server connection"},{"line_number":6,"context_line":"    requests. Bigger value is creating heavy cpu load"},{"line_number":7,"context_line":"    on agent. The default value is half of the number"},{"line_number":8,"context_line":"    of cpus present on the node. This allows operators"},{"line_number":9,"context_line":"    to tune num_threads according to their environment."},{"line_number":10,"context_line":"    With higher values for this config, simultaneous"},{"line_number":11,"context_line":"    requests for multiple HA routers state change can"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"fa7ab95a_720add7a","line":8,"range":{"start_line":8,"start_character":7,"end_line":8,"end_character":11},"in_reply_to":"fa7ab95a_ed3d47bc","updated":"2016-08-29 13:09:29.000000000","message":"done","commit_id":"5cba733f2504e4578ec19cdabe5bbe71d22321a7"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"aaa7d1e36459c9af207325e9b141cd418da93290","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    requests. Bigger value is creating heavy cpu load"},{"line_number":7,"context_line":"    on agent. The default value is half of the number"},{"line_number":8,"context_line":"    of cpus present on the node. This allows operators"},{"line_number":9,"context_line":"    to tune num_threads according to their environment."},{"line_number":10,"context_line":"    With higher values for this config, simultaneous"},{"line_number":11,"context_line":"    requests for multiple HA routers state change can"},{"line_number":12,"context_line":"    be handled faster. With the default value, all the"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"fa7ab95a_cd6963c0","line":9,"range":{"start_line":9,"start_character":12,"end_line":9,"end_character":36},"updated":"2016-08-29 05:31:23.000000000","message":"\u0027the number of threads to suit\u0027","commit_id":"5cba733f2504e4578ec19cdabe5bbe71d22321a7"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"4369be37710e100107196263b43156e2abba587f","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    requests. Bigger value is creating heavy cpu load"},{"line_number":7,"context_line":"    on agent. The default value is half of the number"},{"line_number":8,"context_line":"    of cpus present on the node. This allows operators"},{"line_number":9,"context_line":"    to tune num_threads according to their environment."},{"line_number":10,"context_line":"    With higher values for this config, simultaneous"},{"line_number":11,"context_line":"    requests for multiple HA routers state change can"},{"line_number":12,"context_line":"    be handled faster. With the default value, all the"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"fa7ab95a_327bf5f6","line":9,"range":{"start_line":9,"start_character":12,"end_line":9,"end_character":36},"in_reply_to":"fa7ab95a_cd6963c0","updated":"2016-08-29 13:09:29.000000000","message":"done","commit_id":"5cba733f2504e4578ec19cdabe5bbe71d22321a7"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"aaa7d1e36459c9af207325e9b141cd418da93290","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    on agent. The default value is half of the number"},{"line_number":8,"context_line":"    of cpus present on the node. This allows operators"},{"line_number":9,"context_line":"    to tune num_threads according to their environment."},{"line_number":10,"context_line":"    With higher values for this config, simultaneous"},{"line_number":11,"context_line":"    requests for multiple HA routers state change can"},{"line_number":12,"context_line":"    be handled faster. With the default value, all the"},{"line_number":13,"context_line":"    requests will still be handled as server is started"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"fa7ab95a_ed6467e6","line":10,"range":{"start_line":10,"start_character":4,"end_line":10,"end_character":38},"updated":"2016-08-29 05:31:23.000000000","message":"\u0027With more threads\u0027","commit_id":"5cba733f2504e4578ec19cdabe5bbe71d22321a7"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"4369be37710e100107196263b43156e2abba587f","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    on agent. The default value is half of the number"},{"line_number":8,"context_line":"    of cpus present on the node. This allows operators"},{"line_number":9,"context_line":"    to tune num_threads according to their environment."},{"line_number":10,"context_line":"    With higher values for this config, simultaneous"},{"line_number":11,"context_line":"    requests for multiple HA routers state change can"},{"line_number":12,"context_line":"    be handled faster. With the default value, all the"},{"line_number":13,"context_line":"    requests will still be handled as server is started"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"fa7ab95a_d26c8937","line":10,"range":{"start_line":10,"start_character":4,"end_line":10,"end_character":38},"in_reply_to":"fa7ab95a_ed6467e6","updated":"2016-08-29 13:09:29.000000000","message":"done","commit_id":"5cba733f2504e4578ec19cdabe5bbe71d22321a7"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"aaa7d1e36459c9af207325e9b141cd418da93290","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    to tune num_threads according to their environment."},{"line_number":10,"context_line":"    With higher values for this config, simultaneous"},{"line_number":11,"context_line":"    requests for multiple HA routers state change can"},{"line_number":12,"context_line":"    be handled faster. With the default value, all the"},{"line_number":13,"context_line":"    requests will still be handled as server is started"},{"line_number":14,"context_line":"    with a backlog of size 4096."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"fa7ab95a_4dd1d356","line":14,"range":{"start_line":12,"start_character":23,"end_line":14,"end_character":32},"updated":"2016-08-29 05:31:23.000000000","message":"I must be dumb, because I cannot see how the default value (which can be anything from 0? or 1 to 32 or more) can guarantee anything? What if there are a hundreds of other (nova/cinder/etc) threads running high priority tasks? Maybe I am mis-understanding what you are trying to say here?","commit_id":"5cba733f2504e4578ec19cdabe5bbe71d22321a7"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"b9fe1f87e821604f6a7d2e174902ff7ce52416b2","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    requests for multiple HA routers state change can"},{"line_number":12,"context_line":"    be handled faster. With the default value, all the"},{"line_number":13,"context_line":"    requests will still be handled as server is started"},{"line_number":14,"context_line":"    with a backlog of size 4096."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"1ac06dbe_471132af","line":14,"updated":"2016-08-24 19:50:20.000000000","message":"The backlog is also configurable amount. Anyway I would remove the last sentence.","commit_id":"5cba733f2504e4578ec19cdabe5bbe71d22321a7"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"db49742d132ad945791765a21c86d82e5924ac40","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    requests for multiple HA routers state change can"},{"line_number":12,"context_line":"    be handled faster. With the default value, all the"},{"line_number":13,"context_line":"    requests will still be handled as server is started"},{"line_number":14,"context_line":"    with a backlog of size 4096."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"1ac06dbe_4aa017a6","line":14,"in_reply_to":"1ac06dbe_471132af","updated":"2016-08-24 20:01:36.000000000","message":"backlog is hard coded [1] for keepalived state change server and not configurable.\n\n[1] https://github.com/openstack/neutron/blob/master/neutron/agent/l3/ha.py#L86","commit_id":"5cba733f2504e4578ec19cdabe5bbe71d22321a7"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"4369be37710e100107196263b43156e2abba587f","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    to tune num_threads according to their environment."},{"line_number":10,"context_line":"    With higher values for this config, simultaneous"},{"line_number":11,"context_line":"    requests for multiple HA routers state change can"},{"line_number":12,"context_line":"    be handled faster. With the default value, all the"},{"line_number":13,"context_line":"    requests will still be handled as server is started"},{"line_number":14,"context_line":"    with a backlog of size 4096."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"fa7ab95a_5e8c1b35","line":14,"range":{"start_line":12,"start_character":23,"end_line":14,"end_character":32},"in_reply_to":"fa7ab95a_4dd1d356","updated":"2016-08-29 13:09:29.000000000","message":"\"What if there are a hundreds of other (nova/cinder/etc) threads running high priority tasks?\" Are these threads concurrently running i.e in ready state waiting for CPU time? If so and at the same time if CPUs have to simultaneously spawn 1000 more \"state change monitor\" processes, it can make the node unresponsive.\n\nIf there are 1000 HA routers, after this change also, 1000 keepalived state change monitor process will be running(and no loss of requests).\n \nWithout this change, if the CPUs get simultaneous 1000 requests, they spawn 1000 threads and each thread will do CPU intensive task of creating a new \"keepalived state change monitor\" process at same time. This creates heavy load on CPUs. At least this change allows each CPU to run only one concurrent thread(which spawns a state change monitor process) at a time, still servicing all requests i.e at the end we can see 1000 keepalived state change monitor process running.\n\nAnd it also allows users to configure num_threads according to their setup.","commit_id":"5cba733f2504e4578ec19cdabe5bbe71d22321a7"}]}
