)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"0b8d3050db0071f80e570cb300ac4880acc8fb17","unresolved":false,"context_lines":[{"line_number":1305,"context_line":"            # checking that instance was not already evacuated to other host"},{"line_number":1306,"context_line":"            self._destroy_evacuated_instances(context)"},{"line_number":1307,"context_line":"            init_pool \u003d eventlet.GreenPool()"},{"line_number":1308,"context_line":"            for instance in instances:"},{"line_number":1309,"context_line":"                init_pool.spawn_n(self._init_instance, context, instance)"},{"line_number":1310,"context_line":"            init_pool.waitall()"},{"line_number":1311,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba15a1d1_10e738b1","line":1308,"updated":"2015-09-15 18:09:07.000000000","message":"what if we have thousands of instances running? Could this be an issue with the amount of threads that we use? An example of this would be the VMware driver.","commit_id":"ec3e568fa0b8bfe8db1e86a06888da0f75fd4a40"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"89381329f1e9ed83c60092740ad6f8af751f7888","unresolved":false,"context_lines":[{"line_number":1305,"context_line":"            # checking that instance was not already evacuated to other host"},{"line_number":1306,"context_line":"            self._destroy_evacuated_instances(context)"},{"line_number":1307,"context_line":"            init_pool \u003d eventlet.GreenPool()"},{"line_number":1308,"context_line":"            for instance in instances:"},{"line_number":1309,"context_line":"                init_pool.spawn_n(self._init_instance, context, instance)"},{"line_number":1310,"context_line":"            init_pool.waitall()"},{"line_number":1311,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba15a1d1_3fa31251","line":1308,"in_reply_to":"ba15a1d1_10e738b1","updated":"2015-09-16 10:07:36.000000000","message":"The default size of Green pool is 1000, so the number of threads is limited by it, of course, we can change the size to 100 or other value, and control the number of concurrent threads under a reasonable scope in next patch.\n\nActually, the issue about nova-compute launch slowly just happen on VMware driver, think about the following case:\n\n1. 200 active instances run in one nova-compute host that map to one vCenter Cluster, batch delete them, all of them are in \"deleting\" task_state.\n\n2. nova-compute process stop and restart when all instances is in \"deleting\" task_state.\n\n3. nova-compute start to init 200 deleting instances one by one. The workflow of VMware driver is power-off instance, then wait task finish, then delete the instance.\n\n4. After all the deleting instances are handled, nova-compute is set to \"up\" state, continue to work.\n\nstep 3 will spend lots of time on serial init_instance. In my performance test environment, the nova-compute spend about 15 minutes to finish init_instance.\n\nIn other drivers, like: libvirt, nova-compute manage less instances than VMware driver (maybe less than 50 instances), so these drivers have less chance to face the issue, but the patch also have effect to them, and help to accelerate the init_instance().","commit_id":"ec3e568fa0b8bfe8db1e86a06888da0f75fd4a40"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"b56e75eb5dcd8b17da4c4c21101ff552d8e81664","unresolved":false,"context_lines":[{"line_number":1304,"context_line":"        try:"},{"line_number":1305,"context_line":"            # checking that instance was not already evacuated to other host"},{"line_number":1306,"context_line":"            self._destroy_evacuated_instances(context)"},{"line_number":1307,"context_line":"            init_pool \u003d eventlet.GreenPool(size\u003d200)"},{"line_number":1308,"context_line":"            for instance in instances:"},{"line_number":1309,"context_line":"                init_pool.spawn_n(self._init_instance, context, instance)"},{"line_number":1310,"context_line":"            init_pool.waitall()"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_2c2ce497","line":1307,"updated":"2015-09-18 11:52:06.000000000","message":"seems 200 is maximum number? can we \nget how many instances we are having such as \nlen(instances) as GreenPool(size\u003dlen)?","commit_id":"c09e4e0afa1eed504927246b619703c1df6ff0ac"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"69080e6fd71dc5e2e946e8e4b50d932c17fc9c42","unresolved":false,"context_lines":[{"line_number":1304,"context_line":"        try:"},{"line_number":1305,"context_line":"            # checking that instance was not already evacuated to other host"},{"line_number":1306,"context_line":"            self._destroy_evacuated_instances(context)"},{"line_number":1307,"context_line":"            init_pool \u003d eventlet.GreenPool(size\u003d200)"},{"line_number":1308,"context_line":"            for instance in instances:"},{"line_number":1309,"context_line":"                init_pool.spawn_n(self._init_instance, context, instance)"},{"line_number":1310,"context_line":"            init_pool.waitall()"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_df5dac7a","line":1307,"in_reply_to":"ba15a1d1_2c2ce497","updated":"2015-09-19 03:21:58.000000000","message":"Yes, 200 is max number, garyk is worried about too many threads are running for init_instance() when vCenter driver is enabled, you know, maybe there are thousands of instances on one compute node, so I use a fixed value as limitation.","commit_id":"c09e4e0afa1eed504927246b619703c1df6ff0ac"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"add621777a5ba951d93f9d7503aa95e6173fe1c8","unresolved":false,"context_lines":[{"line_number":1305,"context_line":"            # checking that instance was not already evacuated to other host"},{"line_number":1306,"context_line":"            self._destroy_evacuated_instances(context)"},{"line_number":1307,"context_line":"            # To avoid too many threads running, set GreenPool size to 200."},{"line_number":1308,"context_line":"            init_pool \u003d eventlet.GreenPool(size\u003d200)"},{"line_number":1309,"context_line":"            for instance in instances:"},{"line_number":1310,"context_line":"                init_pool.spawn_n(self._init_instance, context, instance)"},{"line_number":1311,"context_line":"            init_pool.waitall()"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_8af12298","line":1308,"updated":"2015-09-21 07:12:37.000000000","message":"i think that we should consider having a configuration variable for this.","commit_id":"dd339ac3fce4fa9529e5dce09cf189ea06d503ae"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"cd6cc3233081c58fa4cc1d004464d82f2b300ffa","unresolved":false,"context_lines":[{"line_number":1305,"context_line":"            # checking that instance was not already evacuated to other host"},{"line_number":1306,"context_line":"            self._destroy_evacuated_instances(context)"},{"line_number":1307,"context_line":"            # To avoid too many threads running, set GreenPool size to 200."},{"line_number":1308,"context_line":"            init_pool \u003d eventlet.GreenPool(size\u003d200)"},{"line_number":1309,"context_line":"            for instance in instances:"},{"line_number":1310,"context_line":"                init_pool.spawn_n(self._init_instance, context, instance)"},{"line_number":1311,"context_line":"            init_pool.waitall()"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_1be8d47b","line":1308,"in_reply_to":"ba15a1d1_8af12298","updated":"2015-09-22 03:33:08.000000000","message":"I\u0027m not inclined to export the internal value to user/operator, and that is difficult to guide users which value is suitable to configure.","commit_id":"dd339ac3fce4fa9529e5dce09cf189ea06d503ae"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"440889205927153c6575a9338846602d8bb1b17b","unresolved":false,"context_lines":[{"line_number":1305,"context_line":"            # checking that instance was not already evacuated to other host"},{"line_number":1306,"context_line":"            self._destroy_evacuated_instances(context)"},{"line_number":1307,"context_line":"            # To avoid too many threads running, set GreenPool size to 200."},{"line_number":1308,"context_line":"            init_pool \u003d eventlet.GreenPool(size\u003d200)"},{"line_number":1309,"context_line":"            for instance in instances:"},{"line_number":1310,"context_line":"                init_pool.spawn_n(self._init_instance, context, instance)"},{"line_number":1311,"context_line":"            init_pool.waitall()"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_1df6b3d7","line":1308,"in_reply_to":"ba15a1d1_8af12298","updated":"2015-09-21 11:21:39.000000000","message":"what\u0027s the benefit to compute node? resource utilization?","commit_id":"dd339ac3fce4fa9529e5dce09cf189ea06d503ae"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"add621777a5ba951d93f9d7503aa95e6173fe1c8","unresolved":false,"context_lines":[{"line_number":1306,"context_line":"            self._destroy_evacuated_instances(context)"},{"line_number":1307,"context_line":"            # To avoid too many threads running, set GreenPool size to 200."},{"line_number":1308,"context_line":"            init_pool \u003d eventlet.GreenPool(size\u003d200)"},{"line_number":1309,"context_line":"            for instance in instances:"},{"line_number":1310,"context_line":"                init_pool.spawn_n(self._init_instance, context, instance)"},{"line_number":1311,"context_line":"            init_pool.waitall()"},{"line_number":1312,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_6a2feef6","line":1309,"updated":"2015-09-21 07:12:37.000000000","message":"what happens if there are 201 instances? will the spawn hang until a previous thread is finished?","commit_id":"dd339ac3fce4fa9529e5dce09cf189ea06d503ae"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"440889205927153c6575a9338846602d8bb1b17b","unresolved":false,"context_lines":[{"line_number":1306,"context_line":"            self._destroy_evacuated_instances(context)"},{"line_number":1307,"context_line":"            # To avoid too many threads running, set GreenPool size to 200."},{"line_number":1308,"context_line":"            init_pool \u003d eventlet.GreenPool(size\u003d200)"},{"line_number":1309,"context_line":"            for instance in instances:"},{"line_number":1310,"context_line":"                init_pool.spawn_n(self._init_instance, context, instance)"},{"line_number":1311,"context_line":"            init_pool.waitall()"},{"line_number":1312,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_bd6b0785","line":1309,"in_reply_to":"ba15a1d1_6a2feef6","updated":"2015-09-21 11:21:39.000000000","message":"I think most possible is 1st instance finished its init","commit_id":"dd339ac3fce4fa9529e5dce09cf189ea06d503ae"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"61a3663d153dc1d683c2facde0846dc5c7ef076f","unresolved":false,"context_lines":[{"line_number":1306,"context_line":"            self._destroy_evacuated_instances(context)"},{"line_number":1307,"context_line":"            # To avoid too many threads running, set GreenPool size to 200."},{"line_number":1308,"context_line":"            init_pool \u003d eventlet.GreenPool(size\u003d200)"},{"line_number":1309,"context_line":"            for instance in instances:"},{"line_number":1310,"context_line":"                init_pool.spawn_n(self._init_instance, context, instance)"},{"line_number":1311,"context_line":"            init_pool.waitall()"},{"line_number":1312,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_36f60dfa","line":1309,"in_reply_to":"ba15a1d1_7b7c70eb","updated":"2015-09-22 03:48:28.000000000","message":"I think we don\u0027t have to be too focused on the exact number of this limit, though we set it to 400 or more there will still be scenarios that there are 401 instances, the last one still have to wait for the 1st one to be finish, same thing will happen for limit 1000 and 1001 isntances. I think the point here is to find the suitable limit for cpu and thats it. And no matter what the limit is, it will be much faster than the current process.","commit_id":"dd339ac3fce4fa9529e5dce09cf189ea06d503ae"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"cd6cc3233081c58fa4cc1d004464d82f2b300ffa","unresolved":false,"context_lines":[{"line_number":1306,"context_line":"            self._destroy_evacuated_instances(context)"},{"line_number":1307,"context_line":"            # To avoid too many threads running, set GreenPool size to 200."},{"line_number":1308,"context_line":"            init_pool \u003d eventlet.GreenPool(size\u003d200)"},{"line_number":1309,"context_line":"            for instance in instances:"},{"line_number":1310,"context_line":"                init_pool.spawn_n(self._init_instance, context, instance)"},{"line_number":1311,"context_line":"            init_pool.waitall()"},{"line_number":1312,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_7b7c70eb","line":1309,"in_reply_to":"ba15a1d1_bd6b0785","updated":"2015-09-22 03:33:08.000000000","message":"200 is max number of running thread, so if there are 201 instances, 200 instances start to init at the same time, #201 instance wait until one thread finish to init instance, then #201 instance start.","commit_id":"dd339ac3fce4fa9529e5dce09cf189ea06d503ae"}]}
