)]}'
{"nova/compute/resource_tracker.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"ce963057392e72e9ea5d68746a2948a2b3bba817","unresolved":false,"context_lines":[{"line_number":882,"context_line":"        for key1 in bucket:"},{"line_number":883,"context_line":"            for key2 in bucket[key1]:"},{"line_number":884,"context_line":"                reserved_huge_pages_mb +\u003d key2 * bucket[key1][key2]"},{"line_number":885,"context_line":"        return reserved_huge_pages_mb / 1024"},{"line_number":886,"context_line":""},{"line_number":887,"context_line":"    def _update_usage_from_instances(self, context, instances):"},{"line_number":888,"context_line":"        \"\"\"Calculate resource usage based on instance utilization.  This is"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_0defedb1","line":885,"updated":"2016-06-17 11:05:44.000000000","message":"You should use the module \u0027units\u0027","commit_id":"617208953b79722737e0dc4ca708750d8d516788"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"ce963057392e72e9ea5d68746a2948a2b3bba817","unresolved":false,"context_lines":[{"line_number":894,"context_line":""},{"line_number":895,"context_line":"        # set some initial values, reserve room for host/hypervisor:"},{"line_number":896,"context_line":"        self.compute_node.local_gb_used \u003d CONF.reserved_host_disk_mb / 1024"},{"line_number":897,"context_line":"        self.compute_node.memory_mb_used \u003d\\"},{"line_number":898,"context_line":"            CONF.reserved_host_memory_mb + self._get_reserved_huge_pages_mb()"},{"line_number":899,"context_line":"        self.compute_node.vcpus_used \u003d 0"},{"line_number":900,"context_line":"        self.compute_node.free_ram_mb \u003d (self.compute_node.memory_mb -"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_b837f9e1","line":897,"updated":"2016-06-17 11:05:44.000000000","message":"Hum, we need to verify something but the variable here should only reflect small pages, right ?","commit_id":"617208953b79722737e0dc4ca708750d8d516788"},{"author":{"_account_id":17288,"name":"liuxiuli","email":"liu.lixiu@zte.com.cn","username":"liu-lixiu"},"change_message_id":"5663572a9a424656634eeae59fe611dee8f70f1b","unresolved":false,"context_lines":[{"line_number":894,"context_line":""},{"line_number":895,"context_line":"        # set some initial values, reserve room for host/hypervisor:"},{"line_number":896,"context_line":"        self.compute_node.local_gb_used \u003d CONF.reserved_host_disk_mb / 1024"},{"line_number":897,"context_line":"        self.compute_node.memory_mb_used \u003d\\"},{"line_number":898,"context_line":"            CONF.reserved_host_memory_mb + self._get_reserved_huge_pages_mb()"},{"line_number":899,"context_line":"        self.compute_node.vcpus_used \u003d 0"},{"line_number":900,"context_line":"        self.compute_node.free_ram_mb \u003d (self.compute_node.memory_mb -"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a9d85d2_7eafafe3","line":897,"in_reply_to":"7aa08908_b837f9e1","updated":"2016-06-20 06:48:43.000000000","message":"No, memory_mb_used equals to all mem which is used by instances and all mem which is reserved. Because memory_mb_used also includes the huge page mem which instance used.","commit_id":"617208953b79722737e0dc4ca708750d8d516788"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1f84a674df1664e53d5c93bfa9b9de48fa13ec8f","unresolved":false,"context_lines":[{"line_number":880,"context_line":"        \"\"\"Get sum of reserved_huge_pages.\"\"\""},{"line_number":881,"context_line":"        reserved_huge_pages_mb \u003d 0"},{"line_number":882,"context_line":"        bucket \u003d hardware.numa_get_reserved_huge_pages()"},{"line_number":883,"context_line":"        for key1 in bucket:"},{"line_number":884,"context_line":"            for key2 in bucket[key1]:"},{"line_number":885,"context_line":"                reserved_huge_pages_mb +\u003d key2 * bucket[key1][key2]"},{"line_number":886,"context_line":"        return reserved_huge_pages_mb * units.Ki / units.Mi"},{"line_number":887,"context_line":""},{"line_number":888,"context_line":"    def _update_usage_from_instances(self, context, instances):"},{"line_number":889,"context_line":"        \"\"\"Calculate resource usage based on instance utilization.  This is"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a9d85d2_97ab5089","line":886,"range":{"start_line":883,"start_character":1,"end_line":886,"end_character":1},"updated":"2016-06-20 13:59:06.000000000","message":"It would be more readable if you use descriptive names like page_size num_of_pages etc.","commit_id":"f2f68e20fc50ca8181675b870a2b740a4a488937"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1f84a674df1664e53d5c93bfa9b9de48fa13ec8f","unresolved":false,"context_lines":[{"line_number":896,"context_line":"        # set some initial values, reserve room for host/hypervisor:"},{"line_number":897,"context_line":"        self.compute_node.local_gb_used \u003d CONF.reserved_host_disk_mb / 1024"},{"line_number":898,"context_line":"        self.compute_node.memory_mb_used \u003d\\"},{"line_number":899,"context_line":"            CONF.reserved_host_memory_mb + self._get_reserved_huge_pages_mb()"},{"line_number":900,"context_line":"        self.compute_node.vcpus_used \u003d 0"},{"line_number":901,"context_line":"        self.compute_node.free_ram_mb \u003d (self.compute_node.memory_mb -"},{"line_number":902,"context_line":"                                         self.compute_node.memory_mb_used)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a9d85d2_b7d80cf1","line":899,"updated":"2016-06-20 13:59:06.000000000","message":"Is it safe to mix the memory_mb_used with the huge page reservation? If an instance does not use huge pages then the scheduler still checks if there is enough memory based on free_ram_mb and that will be a lot smaller after this patch.","commit_id":"f2f68e20fc50ca8181675b870a2b740a4a488937"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"271f4b84ddaf2b67c071674aea787947700c5c1b","unresolved":false,"context_lines":[{"line_number":896,"context_line":"        # set some initial values, reserve room for host/hypervisor:"},{"line_number":897,"context_line":"        self.compute_node.local_gb_used \u003d CONF.reserved_host_disk_mb / 1024"},{"line_number":898,"context_line":"        self.compute_node.memory_mb_used \u003d\\"},{"line_number":899,"context_line":"            CONF.reserved_host_memory_mb + self._get_reserved_huge_pages_mb()"},{"line_number":900,"context_line":"        self.compute_node.vcpus_used \u003d 0"},{"line_number":901,"context_line":"        self.compute_node.free_ram_mb \u003d (self.compute_node.memory_mb -"},{"line_number":902,"context_line":"                                         self.compute_node.memory_mb_used)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a9d85d2_cb95f6e4","line":899,"in_reply_to":"5a9d85d2_0221aab4","updated":"2016-06-21 13:22:54.000000000","message":"Imagine the following situation:\nWe have a compute node that has 10G memory in 1G huge pages, and 10G memory in 4k small pages. Also 5 pieces of 1G huge pages are reserved via CONF.reserved_huge_pages.\n\nNow we want to boot an instance that needs 10G 4k pages. Based on the above setup our compute has that amount of free 4k pages so we shall be able to select this compute.\n\nHowever I think your code modification will set the compute_node.free_ram_mb to (10G - 5G) \u003d 5G Then the RamFilter (https://github.com/openstack/nova/blob/master/nova/scheduler/filters/ram_filter.py#L34) will check this free_ram_mb to decide if the your instance fits to the host or not, and as 10G \u003c 5G it won\u0027t select this host. Which is not want we expect.","commit_id":"f2f68e20fc50ca8181675b870a2b740a4a488937"},{"author":{"_account_id":17288,"name":"liuxiuli","email":"liu.lixiu@zte.com.cn","username":"liu-lixiu"},"change_message_id":"a44d2544b4613be81ef44c37f5eb9e728a9e176a","unresolved":false,"context_lines":[{"line_number":896,"context_line":"        # set some initial values, reserve room for host/hypervisor:"},{"line_number":897,"context_line":"        self.compute_node.local_gb_used \u003d CONF.reserved_host_disk_mb / 1024"},{"line_number":898,"context_line":"        self.compute_node.memory_mb_used \u003d\\"},{"line_number":899,"context_line":"            CONF.reserved_host_memory_mb + self._get_reserved_huge_pages_mb()"},{"line_number":900,"context_line":"        self.compute_node.vcpus_used \u003d 0"},{"line_number":901,"context_line":"        self.compute_node.free_ram_mb \u003d (self.compute_node.memory_mb -"},{"line_number":902,"context_line":"                                         self.compute_node.memory_mb_used)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a9d85d2_0221aab4","line":899,"in_reply_to":"5a9d85d2_b7d80cf1","updated":"2016-06-21 11:12:48.000000000","message":"Thank you for your opinion. I think that CONF.reserved_huge_pages is used to reserve huge pages to the later instances built by huge pages. If we don\u0027t build this instance in a compute node, we do not config CONF.reserved_huge_pages. But if a system process uses huge pages, these pages will not be used to build instance, we should overcome this by CONF.reserved_huge_pages.","commit_id":"f2f68e20fc50ca8181675b870a2b740a4a488937"},{"author":{"_account_id":17898,"name":"Jinquan Ni","email":"ni.jinquan@zte.com.cn","username":"jinquanni"},"change_message_id":"954f57ba3c5f118e52f15d4fd02b5d62e407441a","unresolved":false,"context_lines":[{"line_number":897,"context_line":"        # set some initial values, reserve room for host/hypervisor:"},{"line_number":898,"context_line":"        self.compute_node.local_gb_used \u003d CONF.reserved_host_disk_mb / 1024"},{"line_number":899,"context_line":"        self.compute_node.memory_mb_used \u003d\\"},{"line_number":900,"context_line":"            CONF.reserved_host_memory_mb + self._get_reserved_huge_pages_mb()"},{"line_number":901,"context_line":"        self.compute_node.vcpus_used \u003d 0"},{"line_number":902,"context_line":"        self.compute_node.free_ram_mb \u003d (self.compute_node.memory_mb -"},{"line_number":903,"context_line":"                                         self.compute_node.memory_mb_used)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_1cde2e3f","line":900,"range":{"start_line":900,"start_character":17,"end_line":900,"end_character":40},"updated":"2016-06-21 11:57:42.000000000","message":"Nit: you better use () to avoid use \u0027\\\u0027 like line 902.","commit_id":"f5c6fa79656720baee286f827ba828f251aac1d5"}]}
