)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b56f6e18e8fc68968ff26be77ff6d686d51c1c9d","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"The unit-tests has been updated to pass correct NUMACell mempages"},{"line_number":18,"context_line":"information since the check is not done based on the pages available"},{"line_number":19,"context_line":"on host. Also that the test \u0027test_host_usage_contiguous\u0027 to reflect to"},{"line_number":20,"context_line":"correct update of pages availalbes on hist based on instance usage."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Closes-bug: #1594529"},{"line_number":23,"context_line":"Change-Id: I5f5c621f2f0fa1bc18ee9a97d17085107a5dee53"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"5f7c97a3_027cc61d","line":20,"range":{"start_line":19,"start_character":9,"end_line":20,"end_character":67},"updated":"2018-07-10 10:26:43.000000000","message":"Not sure what you meant by this. Can you reword?","commit_id":"4e708e89541f44ab40645eaa143f53b2a95750ed"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6bcf48fb4986decea66c9d56b82c0c9936c18409","unresolved":false,"context_lines":[{"line_number":15,"context_line":"available may also include some large pages."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"The unit-tests has been updated to pass correct NUMACell mempages"},{"line_number":18,"context_line":"information since the check is not done based on the pages available"},{"line_number":19,"context_line":"on host. Also that the test \u0027test_host_usage_contiguous\u0027 to reflect to"},{"line_number":20,"context_line":"correct update of pages availalbes on hist based on instance usage."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":19,"id":"5f7c97a3_1463a0de","line":18,"range":{"start_line":18,"start_character":31,"end_line":18,"end_character":34},"updated":"2018-07-10 14:05:54.000000000","message":"now","commit_id":"4ffeca2abd72e706d2d2a3e930bf030596112c2d"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6bcf48fb4986decea66c9d56b82c0c9936c18409","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"The unit-tests has been updated to pass correct NUMACell mempages"},{"line_number":18,"context_line":"information since the check is not done based on the pages available"},{"line_number":19,"context_line":"on host. Also that the test \u0027test_host_usage_contiguous\u0027 to reflect to"},{"line_number":20,"context_line":"correct update of pages availalbes on hist based on instance usage."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Closes-bug: #1594529"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":19,"id":"5f7c97a3_54a278fc","line":19,"range":{"start_line":19,"start_character":57,"end_line":19,"end_character":70},"updated":"2018-07-10 14:05:54.000000000","message":"is to reflect the","commit_id":"4ffeca2abd72e706d2d2a3e930bf030596112c2d"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6bcf48fb4986decea66c9d56b82c0c9936c18409","unresolved":false,"context_lines":[{"line_number":17,"context_line":"The unit-tests has been updated to pass correct NUMACell mempages"},{"line_number":18,"context_line":"information since the check is not done based on the pages available"},{"line_number":19,"context_line":"on host. Also that the test \u0027test_host_usage_contiguous\u0027 to reflect to"},{"line_number":20,"context_line":"correct update of pages availalbes on hist based on instance usage."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Closes-bug: #1594529"},{"line_number":23,"context_line":"Change-Id: I5f5c621f2f0fa1bc18ee9a97d17085107a5dee53"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":19,"id":"5f7c97a3_d4ad28e7","line":20,"range":{"start_line":20,"start_character":24,"end_line":20,"end_character":42},"updated":"2018-07-10 14:05:54.000000000","message":"available on host, :D","commit_id":"4ffeca2abd72e706d2d2a3e930bf030596112c2d"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"a85e58cb1e0145780001c6db8efcdb4769638819","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"hardware: fix memory check usage for small/large pages"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When huge pages are requested, we need to examine the host cell\u0027s"},{"line_number":10,"context_line":"specific huge page amounts, not the amount of physical memory"},{"line_number":11,"context_line":"associated with the host NUMA node."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Also when no pagesize is requested we should consider to compute"},{"line_number":14,"context_line":"memory usage based on small pages since the amount of physical memory"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"5f7c97a3_6beeae8b","line":11,"range":{"start_line":9,"start_character":0,"end_line":11,"end_character":35},"updated":"2018-07-10 16:34:01.000000000","message":"This part of the commit message makes it seem like we weren\u0027t already doing this, but I think we were.  (At the bottom of _numa_fit_instance_cell() when we called _numa_cell_supports_pagesize_request().)","commit_id":"66576ca77b90717bb549419279899ff5b454eb69"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"a85e58cb1e0145780001c6db8efcdb4769638819","unresolved":false,"context_lines":[{"line_number":18,"context_line":"information since the check is not done based on the pages available"},{"line_number":19,"context_line":"on host. Also that the test \u0027test_host_usage_contiguous\u0027 to reflect to"},{"line_number":20,"context_line":"correct update of pages availalbes on hist based on instance usage."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Closes-bug: #1594529"},{"line_number":23,"context_line":"Change-Id: I5f5c621f2f0fa1bc18ee9a97d17085107a5dee53"},{"line_number":24,"context_line":"Signed-off-by: Sahid Orentino Ferdjaoui \u003csahid.ferdjaoui@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"5f7c97a3_fed59e47","line":22,"range":{"start_line":21,"start_character":0,"end_line":22,"end_character":20},"updated":"2018-07-10 16:34:01.000000000","message":"This bug is related to things outside of nova consuming hugepages and nova not realizing it.  I don\u0027t see anything in this patch that would change that behaviour.","commit_id":"66576ca77b90717bb549419279899ff5b454eb69"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"4d3b7d500924853d56af1dfbccc17d9c27340dc1","unresolved":false,"context_lines":[{"line_number":19,"context_line":"on host. Also that the test \u0027test_host_usage_contiguous\u0027 to reflect to"},{"line_number":20,"context_line":"correct update of pages availalbes on hist based on instance usage."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Closes-bug: #1594529"},{"line_number":23,"context_line":"Change-Id: I5f5c621f2f0fa1bc18ee9a97d17085107a5dee53"},{"line_number":24,"context_line":"Signed-off-by: Sahid Orentino Ferdjaoui \u003csahid.ferdjaoui@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"5f7c97a3_7d1b5083","line":22,"range":{"start_line":22,"start_character":13,"end_line":22,"end_character":20},"updated":"2018-07-16 21:58:49.000000000","message":"The bug in question is related to things outside of nova consuming hugepages.  What does this patch do to address that problem?","commit_id":"0c010757bec015ae7af8c97245be605df93b161d"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"0b3cdfd976c80a5d32beaa41eaeb785d666f051b","unresolved":false,"context_lines":[{"line_number":19,"context_line":"on host. Also that the test \u0027test_host_usage_contiguous\u0027 to reflect to"},{"line_number":20,"context_line":"correct update of pages availalbes on hist based on instance usage."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Closes-bug: #1594529"},{"line_number":23,"context_line":"Change-Id: I5f5c621f2f0fa1bc18ee9a97d17085107a5dee53"},{"line_number":24,"context_line":"Signed-off-by: Sahid Orentino Ferdjaoui \u003csahid.ferdjaoui@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"5f7c97a3_37ce272c","line":22,"range":{"start_line":22,"start_character":13,"end_line":22,"end_character":20},"in_reply_to":"5f7c97a3_7d1b5083","updated":"2018-07-18 12:56:11.000000000","message":"I update the bug number","commit_id":"0c010757bec015ae7af8c97245be605df93b161d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c2049f35a2468ceb5f0fef02894488ac0c7cf266","unresolved":false,"context_lines":[{"line_number":17,"context_line":"The unit-tests has been updated to pass correct NUMACell mempages"},{"line_number":18,"context_line":"information since the check is not done based on the pages available"},{"line_number":19,"context_line":"on host. Also that the test \u0027test_host_usage_contiguous\u0027 to reflect to"},{"line_number":20,"context_line":"correct update of pages availalbes on hist based on instance usage."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Closes-bug: #1734204"},{"line_number":23,"context_line":"Change-Id: I5f5c621f2f0fa1bc18ee9a97d17085107a5dee53"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":24,"id":"5f7c97a3_8576ae91","line":20,"range":{"start_line":20,"start_character":38,"end_line":20,"end_character":42},"updated":"2018-08-01 13:28:31.000000000","message":"nit:host","commit_id":"ff76ae1fbc76f9e7b1876a215e135797cc012146"}],"nova/tests/unit/compute/test_resource_tracker.py":[{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"9a5ad521e70cb6a3dc5023f3e5efe7238937ee71","unresolved":false,"context_lines":[{"line_number":138,"context_line":"}"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"_2MB \u003d 2 * units.Mi / units.Ki"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"_INSTANCE_NUMA_TOPOLOGIES \u003d {"},{"line_number":144,"context_line":"    \u00272mb\u0027: objects.InstanceNUMATopology(cells\u003d["}],"source_content_type":"text/x-python","patch_set":5,"id":"7f96bb07_188f162b","line":141,"range":{"start_line":141,"start_character":0,"end_line":141,"end_character":30},"updated":"2018-01-12 03:52:35.000000000","message":"If I understand correctly, isn\u0027t this \u00272MB\u0027 really confusing?? Why not correct this to _2GB?","commit_id":"c3869d271ff7bc208cfb8f38e88ff264f60e914c"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"9a5ad521e70cb6a3dc5023f3e5efe7238937ee71","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    \u00272mb\u0027: objects.NUMATopology(cells\u003d["},{"line_number":163,"context_line":"        objects.NUMACell(id\u003d0, cpuset\u003dset([1, 2]), memory\u003d_2MB,"},{"line_number":164,"context_line":"                         cpu_usage\u003d0, memory_usage\u003d0,"},{"line_number":165,"context_line":"                         mempages\u003d[_NUMA_PAGE_TOPOLOGIES[\u00272mb*1024\u0027]],"},{"line_number":166,"context_line":"                         siblings\u003d[], pinned_cpus\u003dset([])),"},{"line_number":167,"context_line":"        objects.NUMACell(id\u003d1, cpuset\u003dset([3, 4]), memory\u003d_2MB,"},{"line_number":168,"context_line":"                         cpu_usage\u003d0, memory_usage\u003d0,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f96bb07_b80dc291","line":165,"range":{"start_line":165,"start_character":57,"end_line":165,"end_character":67},"updated":"2018-01-12 03:52:35.000000000","message":"Because this value *looks* in-consistent with the .memory value of _2MB at first sight...","commit_id":"c3869d271ff7bc208cfb8f38e88ff264f60e914c"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"5224e369409c7fe4d225021c1c8f659183ec973a","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    \u00272mb\u0027: objects.NUMATopology(cells\u003d["},{"line_number":163,"context_line":"        objects.NUMACell(id\u003d0, cpuset\u003dset([1, 2]), memory\u003d_2MB,"},{"line_number":164,"context_line":"                         cpu_usage\u003d0, memory_usage\u003d0,"},{"line_number":165,"context_line":"                         mempages\u003d[_NUMA_PAGE_TOPOLOGIES[\u00272mb*1024\u0027]],"},{"line_number":166,"context_line":"                         siblings\u003d[], pinned_cpus\u003dset([])),"},{"line_number":167,"context_line":"        objects.NUMACell(id\u003d1, cpuset\u003dset([3, 4]), memory\u003d_2MB,"},{"line_number":168,"context_line":"                         cpu_usage\u003d0, memory_usage\u003d0,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f96bb07_ab68a3b8","line":165,"range":{"start_line":165,"start_character":57,"end_line":165,"end_character":67},"in_reply_to":"7f96bb07_b80dc291","updated":"2018-01-16 13:49:36.000000000","message":"I don\u0027t want to touch more of that these tests I did not write them and look confusing to me. i just tried to adapt them as much as i can.","commit_id":"c3869d271ff7bc208cfb8f38e88ff264f60e914c"}],"nova/tests/unit/virt/test_hardware.py":[{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"d2dd3474b2b68a1ed92a38e114d96cf364a6a071","unresolved":false,"context_lines":[{"line_number":1269,"context_line":"                                     topology.cells[i].pagesize)"},{"line_number":1270,"context_line":"                    self.assertEqual(testitem[\"expect\"].cells[i].cpu_pinning,"},{"line_number":1271,"context_line":"                                     topology.cells[i].cpu_pinning)"},{"line_number":1272,"context_line":""},{"line_number":1273,"context_line":"    def test_host_usage_contiguous(self):"},{"line_number":1274,"context_line":"        hpages0_4K \u003d objects.NUMAPagesTopology(size_kb\u003d4, total\u003d512, used\u003d0)"},{"line_number":1275,"context_line":"        hpages0_2M \u003d objects.NUMAPagesTopology(size_kb\u003d2048, total\u003d0, used\u003d1)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_c666c452","line":1272,"updated":"2018-01-11 10:12:02.000000000","message":"Looks like there are no test cases where numa_usage_from_instances() is tested with instances with `InstanceNUMACell.mempages` field. Isn\u0027t this a great opportunity to add the cases?","commit_id":"11ee403e38be84b7226b94e9298ba9585013ea58"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"4f28c07d02bbef5e9c6e4af3e4f12cd99d20e43c","unresolved":false,"context_lines":[{"line_number":1269,"context_line":"                                     topology.cells[i].pagesize)"},{"line_number":1270,"context_line":"                    self.assertEqual(testitem[\"expect\"].cells[i].cpu_pinning,"},{"line_number":1271,"context_line":"                                     topology.cells[i].cpu_pinning)"},{"line_number":1272,"context_line":""},{"line_number":1273,"context_line":"    def test_host_usage_contiguous(self):"},{"line_number":1274,"context_line":"        hpages0_4K \u003d objects.NUMAPagesTopology(size_kb\u003d4, total\u003d512, used\u003d0)"},{"line_number":1275,"context_line":"        hpages0_2M \u003d objects.NUMAPagesTopology(size_kb\u003d2048, total\u003d0, used\u003d1)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_a2eb5dae","line":1272,"in_reply_to":"7f96bb07_c666c452","updated":"2018-01-11 15:25:24.000000000","message":"This is no mempages attribute for InstanceNUMMACell. It\u0027s only an attribute to indicate the page size used. You are looking for this test: \"test_numa_pagesize_usage_from_cell\"","commit_id":"11ee403e38be84b7226b94e9298ba9585013ea58"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"d2dd3474b2b68a1ed92a38e114d96cf364a6a071","unresolved":false,"context_lines":[{"line_number":1272,"context_line":""},{"line_number":1273,"context_line":"    def test_host_usage_contiguous(self):"},{"line_number":1274,"context_line":"        hpages0_4K \u003d objects.NUMAPagesTopology(size_kb\u003d4, total\u003d512, used\u003d0)"},{"line_number":1275,"context_line":"        hpages0_2M \u003d objects.NUMAPagesTopology(size_kb\u003d2048, total\u003d0, used\u003d1)"},{"line_number":1276,"context_line":"        hpages1_4K \u003d objects.NUMAPagesTopology(size_kb\u003d4, total\u003d256, used\u003d2)"},{"line_number":1277,"context_line":"        hpages1_2M \u003d objects.NUMAPagesTopology(size_kb\u003d2048, total\u003d0, used\u003d3)"},{"line_number":1278,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_7b042d7c","line":1275,"range":{"start_line":1275,"start_character":70,"end_line":1275,"end_character":76},"updated":"2018-01-11 10:12:02.000000000","message":"This is the same with base... but what is total\u003d0 and used\u003d1 here? I don\u0027t understand when this case of \"used \u003e total\" happens.","commit_id":"11ee403e38be84b7226b94e9298ba9585013ea58"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"9a5ad521e70cb6a3dc5023f3e5efe7238937ee71","unresolved":false,"context_lines":[{"line_number":1272,"context_line":""},{"line_number":1273,"context_line":"    def test_host_usage_contiguous(self):"},{"line_number":1274,"context_line":"        hpages0_4K \u003d objects.NUMAPagesTopology(size_kb\u003d4, total\u003d512, used\u003d0)"},{"line_number":1275,"context_line":"        hpages0_2M \u003d objects.NUMAPagesTopology(size_kb\u003d2048, total\u003d0, used\u003d1)"},{"line_number":1276,"context_line":"        hpages1_4K \u003d objects.NUMAPagesTopology(size_kb\u003d4, total\u003d256, used\u003d2)"},{"line_number":1277,"context_line":"        hpages1_2M \u003d objects.NUMAPagesTopology(size_kb\u003d2048, total\u003d0, used\u003d3)"},{"line_number":1278,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_30754696","line":1275,"range":{"start_line":1275,"start_character":70,"end_line":1275,"end_character":76},"in_reply_to":"7f96bb07_221e6dba","updated":"2018-01-12 03:52:35.000000000","message":"Yup, I just wanted to say we can use more appropriate value to ensure all the attribute are well set, in order not to confuse readers...maybe it\u0027s just that it\u0027s only me who is confused though. :)\n\nThanks for the response, anyway.","commit_id":"11ee403e38be84b7226b94e9298ba9585013ea58"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"5224e369409c7fe4d225021c1c8f659183ec973a","unresolved":false,"context_lines":[{"line_number":1272,"context_line":""},{"line_number":1273,"context_line":"    def test_host_usage_contiguous(self):"},{"line_number":1274,"context_line":"        hpages0_4K \u003d objects.NUMAPagesTopology(size_kb\u003d4, total\u003d512, used\u003d0)"},{"line_number":1275,"context_line":"        hpages0_2M \u003d objects.NUMAPagesTopology(size_kb\u003d2048, total\u003d0, used\u003d1)"},{"line_number":1276,"context_line":"        hpages1_4K \u003d objects.NUMAPagesTopology(size_kb\u003d4, total\u003d256, used\u003d2)"},{"line_number":1277,"context_line":"        hpages1_2M \u003d objects.NUMAPagesTopology(size_kb\u003d2048, total\u003d0, used\u003d3)"},{"line_number":1278,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_eb246bb1","line":1275,"range":{"start_line":1275,"start_character":70,"end_line":1275,"end_character":76},"in_reply_to":"7f96bb07_30754696","updated":"2018-01-16 13:49:36.000000000","message":"Let\u0027s see if it\u0027s better like that","commit_id":"11ee403e38be84b7226b94e9298ba9585013ea58"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"4f28c07d02bbef5e9c6e4af3e4f12cd99d20e43c","unresolved":false,"context_lines":[{"line_number":1272,"context_line":""},{"line_number":1273,"context_line":"    def test_host_usage_contiguous(self):"},{"line_number":1274,"context_line":"        hpages0_4K \u003d objects.NUMAPagesTopology(size_kb\u003d4, total\u003d512, used\u003d0)"},{"line_number":1275,"context_line":"        hpages0_2M \u003d objects.NUMAPagesTopology(size_kb\u003d2048, total\u003d0, used\u003d1)"},{"line_number":1276,"context_line":"        hpages1_4K \u003d objects.NUMAPagesTopology(size_kb\u003d4, total\u003d256, used\u003d2)"},{"line_number":1277,"context_line":"        hpages1_2M \u003d objects.NUMAPagesTopology(size_kb\u003d2048, total\u003d0, used\u003d3)"},{"line_number":1278,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_221e6dba","line":1275,"range":{"start_line":1275,"start_character":70,"end_line":1275,"end_character":76},"in_reply_to":"7f96bb07_7b042d7c","updated":"2018-01-11 15:25:24.000000000","message":"The test you are looking for is \"test_numa_pagesize_usage_from_cell\". Here we just want to ensure all the attribute are well set.","commit_id":"11ee403e38be84b7226b94e9298ba9585013ea58"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"9a5ad521e70cb6a3dc5023f3e5efe7238937ee71","unresolved":false,"context_lines":[{"line_number":1281,"context_line":"                             cpu_usage\u003d0, memory_usage\u003d0, mempages\u003d["},{"line_number":1282,"context_line":"                                 hpages0_4K, hpages0_2M],"},{"line_number":1283,"context_line":"                             siblings\u003d[], pinned_cpus\u003dset([])),"},{"line_number":1284,"context_line":"            objects.NUMACell(id\u003d1, cpuset\u003dset([4, 6]), memory\u003d1,"},{"line_number":1285,"context_line":"                             cpu_usage\u003d0, memory_usage\u003d0, mempages\u003d["},{"line_number":1286,"context_line":"                                 hpages1_4K, hpages1_2M],"},{"line_number":1287,"context_line":"                             siblings\u003d[], pinned_cpus\u003dset([])),"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f96bb07_ceeec487","line":1284,"range":{"start_line":1284,"start_character":62,"end_line":1284,"end_character":63},"updated":"2018-01-12 03:52:35.000000000","message":"prefer using the same value as the base. We can change values in mempages side @L1274 and @L1276.\n\nBecause no compute host has such an asymmetry architecture of \"Cell0:2MB,Cell1:1MB,Cell2:512MB\".","commit_id":"c3869d271ff7bc208cfb8f38e88ff264f60e914c"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"4d3b7d500924853d56af1dfbccc17d9c27340dc1","unresolved":false,"context_lines":[{"line_number":1286,"context_line":""},{"line_number":1287,"context_line":"    def test_host_usage_contiguous(self):"},{"line_number":1288,"context_line":"        hosttopo \u003d objects.NUMATopology(cells\u003d["},{"line_number":1289,"context_line":"            objects.NUMACell(id\u003d0, cpuset\u003dset([0, 1, 2, 3]), memory\u003d132,"},{"line_number":1290,"context_line":"                             cpu_usage\u003d0, memory_usage\u003d0, mempages\u003d["},{"line_number":1291,"context_line":"                                 objects.NUMAPagesTopology("},{"line_number":1292,"context_line":"                                     size_kb\u003d4, total\u003d32768, used\u003d0),"},{"line_number":1293,"context_line":"                                 objects.NUMAPagesTopology("},{"line_number":1294,"context_line":"                                     size_kb\u003d2048, total\u003d64, used\u003d32)],"},{"line_number":1295,"context_line":"                             siblings\u003d[set([0]), set([1]), set([2]), set([3])],"},{"line_number":1296,"context_line":"                             pinned_cpus\u003dset([])),"},{"line_number":1297,"context_line":"            objects.NUMACell(id\u003d1, cpuset\u003dset([4, 6]), memory\u003d132,"}],"source_content_type":"text/x-python","patch_set":21,"id":"5f7c97a3_7d6d90ff","line":1294,"range":{"start_line":1289,"start_character":31,"end_line":1294,"end_character":66},"updated":"2018-07-16 21:58:49.000000000","message":"shouldn\u0027t the sum of the size_kb*total for each of the page sizes add up to the \"memory\" of the NUMACell?","commit_id":"0c010757bec015ae7af8c97245be605df93b161d"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"0b3cdfd976c80a5d32beaa41eaeb785d666f051b","unresolved":false,"context_lines":[{"line_number":1286,"context_line":""},{"line_number":1287,"context_line":"    def test_host_usage_contiguous(self):"},{"line_number":1288,"context_line":"        hosttopo \u003d objects.NUMATopology(cells\u003d["},{"line_number":1289,"context_line":"            objects.NUMACell(id\u003d0, cpuset\u003dset([0, 1, 2, 3]), memory\u003d132,"},{"line_number":1290,"context_line":"                             cpu_usage\u003d0, memory_usage\u003d0, mempages\u003d["},{"line_number":1291,"context_line":"                                 objects.NUMAPagesTopology("},{"line_number":1292,"context_line":"                                     size_kb\u003d4, total\u003d32768, used\u003d0),"},{"line_number":1293,"context_line":"                                 objects.NUMAPagesTopology("},{"line_number":1294,"context_line":"                                     size_kb\u003d2048, total\u003d64, used\u003d32)],"},{"line_number":1295,"context_line":"                             siblings\u003d[set([0]), set([1]), set([2]), set([3])],"},{"line_number":1296,"context_line":"                             pinned_cpus\u003dset([])),"},{"line_number":1297,"context_line":"            objects.NUMACell(id\u003d1, cpuset\u003dset([4, 6]), memory\u003d132,"}],"source_content_type":"text/x-python","patch_set":21,"id":"5f7c97a3_772c9f00","line":1294,"range":{"start_line":1289,"start_character":31,"end_line":1294,"end_character":66},"in_reply_to":"5f7c97a3_7d6d90ff","updated":"2018-07-18 12:56:11.000000000","message":"Done","commit_id":"0c010757bec015ae7af8c97245be605df93b161d"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"4d3b7d500924853d56af1dfbccc17d9c27340dc1","unresolved":false,"context_lines":[{"line_number":1407,"context_line":""},{"line_number":1408,"context_line":"    def test_host_usage_sparse(self):"},{"line_number":1409,"context_line":"        hosttopo \u003d objects.NUMATopology(cells\u003d["},{"line_number":1410,"context_line":"            objects.NUMACell(id\u003d0, cpuset\u003dset([0, 1, 2, 3]), memory\u003d1024,"},{"line_number":1411,"context_line":"                             cpu_usage\u003d0, memory_usage\u003d0, mempages\u003d["},{"line_number":1412,"context_line":"                                 objects.NUMAPagesTopology("},{"line_number":1413,"context_line":"                                     size_kb\u003d4, total\u003d512, used\u003d0)],"},{"line_number":1414,"context_line":"                             siblings\u003d[set([0]), set([1]), set([2]), set([3])],"},{"line_number":1415,"context_line":"                             pinned_cpus\u003dset([])),"},{"line_number":1416,"context_line":"            objects.NUMACell(id\u003d5, cpuset\u003dset([4, 6]), memory\u003d512,"},{"line_number":1417,"context_line":"                             cpu_usage\u003d0, memory_usage\u003d0, mempages\u003d["},{"line_number":1418,"context_line":"                                 objects.NUMAPagesTopology("},{"line_number":1419,"context_line":"                                     size_kb\u003d4, total\u003d512, used\u003d0)],"},{"line_number":1420,"context_line":"                             siblings\u003d[set([4]), set([6])],"},{"line_number":1421,"context_line":"                             pinned_cpus\u003dset([])),"},{"line_number":1422,"context_line":"            objects.NUMACell(id\u003d6, cpuset\u003dset([5, 7]), memory\u003d512,"},{"line_number":1423,"context_line":"                             cpu_usage\u003d0, memory_usage\u003d0, mempages\u003d["},{"line_number":1424,"context_line":"                                 objects.NUMAPagesTopology("},{"line_number":1425,"context_line":"                                     size_kb\u003d4, total\u003d512, used\u003d0)],"},{"line_number":1426,"context_line":"                             siblings\u003d[set([5]), set([7])],"},{"line_number":1427,"context_line":"                             pinned_cpus\u003dset([])),"},{"line_number":1428,"context_line":"        ])"}],"source_content_type":"text/x-python","patch_set":21,"id":"5f7c97a3_fd4a0080","line":1425,"range":{"start_line":1410,"start_character":10,"end_line":1425,"end_character":68},"updated":"2018-07-16 21:58:49.000000000","message":"do we need to modify all these testcases given that we check for the case where the host doesn\u0027t report hugepages?","commit_id":"0c010757bec015ae7af8c97245be605df93b161d"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"0b3cdfd976c80a5d32beaa41eaeb785d666f051b","unresolved":false,"context_lines":[{"line_number":1407,"context_line":""},{"line_number":1408,"context_line":"    def test_host_usage_sparse(self):"},{"line_number":1409,"context_line":"        hosttopo \u003d objects.NUMATopology(cells\u003d["},{"line_number":1410,"context_line":"            objects.NUMACell(id\u003d0, cpuset\u003dset([0, 1, 2, 3]), memory\u003d1024,"},{"line_number":1411,"context_line":"                             cpu_usage\u003d0, memory_usage\u003d0, mempages\u003d["},{"line_number":1412,"context_line":"                                 objects.NUMAPagesTopology("},{"line_number":1413,"context_line":"                                     size_kb\u003d4, total\u003d512, used\u003d0)],"},{"line_number":1414,"context_line":"                             siblings\u003d[set([0]), set([1]), set([2]), set([3])],"},{"line_number":1415,"context_line":"                             pinned_cpus\u003dset([])),"},{"line_number":1416,"context_line":"            objects.NUMACell(id\u003d5, cpuset\u003dset([4, 6]), memory\u003d512,"},{"line_number":1417,"context_line":"                             cpu_usage\u003d0, memory_usage\u003d0, mempages\u003d["},{"line_number":1418,"context_line":"                                 objects.NUMAPagesTopology("},{"line_number":1419,"context_line":"                                     size_kb\u003d4, total\u003d512, used\u003d0)],"},{"line_number":1420,"context_line":"                             siblings\u003d[set([4]), set([6])],"},{"line_number":1421,"context_line":"                             pinned_cpus\u003dset([])),"},{"line_number":1422,"context_line":"            objects.NUMACell(id\u003d6, cpuset\u003dset([5, 7]), memory\u003d512,"},{"line_number":1423,"context_line":"                             cpu_usage\u003d0, memory_usage\u003d0, mempages\u003d["},{"line_number":1424,"context_line":"                                 objects.NUMAPagesTopology("},{"line_number":1425,"context_line":"                                     size_kb\u003d4, total\u003d512, used\u003d0)],"},{"line_number":1426,"context_line":"                             siblings\u003d[set([5]), set([7])],"},{"line_number":1427,"context_line":"                             pinned_cpus\u003dset([])),"},{"line_number":1428,"context_line":"        ])"}],"source_content_type":"text/x-python","patch_set":21,"id":"5f7c97a3_f7818fa1","line":1425,"range":{"start_line":1410,"start_character":10,"end_line":1425,"end_character":68},"in_reply_to":"5f7c97a3_fd4a0080","updated":"2018-07-18 12:56:11.000000000","message":"Hum.. yes it seems that we need the change for when we compute the usage. I\u0027m not sure whether we should add a check. I think our min libvirt version is always reporting mempages so we should be good and more accurate.","commit_id":"0c010757bec015ae7af8c97245be605df93b161d"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"980e4b6b1a6786314c6abaadd7ed62895bb59ca8","unresolved":false,"context_lines":[{"line_number":1286,"context_line":""},{"line_number":1287,"context_line":"    def test_host_usage_contiguous(self):"},{"line_number":1288,"context_line":"        hosttopo \u003d objects.NUMATopology(cells\u003d["},{"line_number":1289,"context_line":"            objects.NUMACell(id\u003d0, cpuset\u003dset([0, 1, 2, 3]), memory\u003d160,"},{"line_number":1290,"context_line":"                             cpu_usage\u003d0, memory_usage\u003d0, mempages\u003d["},{"line_number":1291,"context_line":"                                 objects.NUMAPagesTopology("},{"line_number":1292,"context_line":"                                     size_kb\u003d4, total\u003d32768, used\u003d0),"},{"line_number":1293,"context_line":"                                 objects.NUMAPagesTopology("},{"line_number":1294,"context_line":"                                     size_kb\u003d2048, total\u003d64, used\u003d32)],"},{"line_number":1295,"context_line":"                             siblings\u003d[set([0]), set([1]), set([2]), set([3])],"},{"line_number":1296,"context_line":"                             pinned_cpus\u003dset([])),"},{"line_number":1297,"context_line":"            objects.NUMACell(id\u003d1, cpuset\u003dset([4, 6]), memory\u003d160,"}],"source_content_type":"text/x-python","patch_set":22,"id":"5f7c97a3_a6c3e205","line":1294,"range":{"start_line":1289,"start_character":0,"end_line":1294,"end_character":71},"updated":"2018-07-18 16:18:41.000000000","message":"This still doesn\u0027t look right.  Shouldn\u0027t \"memory\" be 256 here?\n\n2048*64 + 4*32768 \u003d 262144 KiB (or 256MiB)","commit_id":"40b071b24f1055cc176dd284b932244992839888"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"61d53fa276f291b417ef89d511b4f1ab922e7f72","unresolved":false,"context_lines":[{"line_number":1286,"context_line":""},{"line_number":1287,"context_line":"    def test_host_usage_contiguous(self):"},{"line_number":1288,"context_line":"        hosttopo \u003d objects.NUMATopology(cells\u003d["},{"line_number":1289,"context_line":"            objects.NUMACell(id\u003d0, cpuset\u003dset([0, 1, 2, 3]), memory\u003d160,"},{"line_number":1290,"context_line":"                             cpu_usage\u003d0, memory_usage\u003d0, mempages\u003d["},{"line_number":1291,"context_line":"                                 objects.NUMAPagesTopology("},{"line_number":1292,"context_line":"                                     size_kb\u003d4, total\u003d32768, used\u003d0),"},{"line_number":1293,"context_line":"                                 objects.NUMAPagesTopology("},{"line_number":1294,"context_line":"                                     size_kb\u003d2048, total\u003d64, used\u003d32)],"},{"line_number":1295,"context_line":"                             siblings\u003d[set([0]), set([1]), set([2]), set([3])],"},{"line_number":1296,"context_line":"                             pinned_cpus\u003dset([])),"},{"line_number":1297,"context_line":"            objects.NUMACell(id\u003d1, cpuset\u003dset([4, 6]), memory\u003d160,"}],"source_content_type":"text/x-python","patch_set":22,"id":"5f7c97a3_36d05153","line":1294,"range":{"start_line":1289,"start_character":0,"end_line":1294,"end_character":71},"in_reply_to":"5f7c97a3_a6c3e205","updated":"2018-07-19 08:32:07.000000000","message":"I don\u0027t know what did I do.","commit_id":"40b071b24f1055cc176dd284b932244992839888"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6a04ac20c8f9c5613aa55037e920b90b602031f5","unresolved":false,"context_lines":[{"line_number":1331,"context_line":""},{"line_number":1332,"context_line":"        # Host NUMA node 0"},{"line_number":1333,"context_line":"        self.assertIsInstance(hostusage.cells[0], objects.NUMACell)"},{"line_number":1334,"context_line":"        self.assertEqual(hosttopo.cells[0].cpuset,"},{"line_number":1335,"context_line":"                         hostusage.cells[0].cpuset)"},{"line_number":1336,"context_line":"        self.assertEqual(hosttopo.cells[0].memory,"},{"line_number":1337,"context_line":"                         hostusage.cells[0].memory)"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_f6926c4a","line":1334,"range":{"start_line":1334,"start_character":25,"end_line":1334,"end_character":42},"updated":"2018-07-24 16:19:53.000000000","message":"it would make this far more readable if you factored this out into a variable\n\ne.g. host_cell_0 \u003d hosttopo.cells[0]","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c9b529c070b0ffde8d608a55d02f33242d98ff06","unresolved":false,"context_lines":[{"line_number":1331,"context_line":""},{"line_number":1332,"context_line":"        # Host NUMA node 0"},{"line_number":1333,"context_line":"        self.assertIsInstance(hostusage.cells[0], objects.NUMACell)"},{"line_number":1334,"context_line":"        self.assertEqual(hosttopo.cells[0].cpuset,"},{"line_number":1335,"context_line":"                         hostusage.cells[0].cpuset)"},{"line_number":1336,"context_line":"        self.assertEqual(hosttopo.cells[0].memory,"},{"line_number":1337,"context_line":"                         hostusage.cells[0].memory)"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_c6468b7f","line":1334,"range":{"start_line":1334,"start_character":25,"end_line":1334,"end_character":42},"in_reply_to":"5f7c97a3_f6926c4a","updated":"2018-07-25 07:37:44.000000000","message":"not sure... :)","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6a04ac20c8f9c5613aa55037e920b90b602031f5","unresolved":false,"context_lines":[{"line_number":1337,"context_line":"                         hostusage.cells[0].memory)"},{"line_number":1338,"context_line":"        self.assertEqual(hostusage.cells[0].cpu_usage, 7)"},{"line_number":1339,"context_line":"        self.assertEqual(hostusage.cells[0].memory_usage, 100)"},{"line_number":1340,"context_line":"        # instance1, instance2 consume 96MiB of small pages"},{"line_number":1341,"context_line":"        self.assertEqual(4, hostusage.cells[0].mempages[0].size_kb)"},{"line_number":1342,"context_line":"        self.assertEqual(24576, hostusage.cells[0].mempages[0].used)"},{"line_number":1343,"context_line":"        # instance3 consumes 4MiB of large pages"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_b635d4de","line":1340,"range":{"start_line":1340,"start_character":10,"end_line":1340,"end_character":59},"updated":"2018-07-24 16:19:53.000000000","message":"instance 1 consumes 48M of memory instance 2 consumes 96M","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"21de42fa0ec25a36caa0575d3690d0a438150970","unresolved":false,"context_lines":[{"line_number":1337,"context_line":"                         hostusage.cells[0].memory)"},{"line_number":1338,"context_line":"        self.assertEqual(hostusage.cells[0].cpu_usage, 7)"},{"line_number":1339,"context_line":"        self.assertEqual(hostusage.cells[0].memory_usage, 100)"},{"line_number":1340,"context_line":"        # instance1, instance2 consume 96MiB of small pages"},{"line_number":1341,"context_line":"        self.assertEqual(4, hostusage.cells[0].mempages[0].size_kb)"},{"line_number":1342,"context_line":"        self.assertEqual(24576, hostusage.cells[0].mempages[0].used)"},{"line_number":1343,"context_line":"        # instance3 consumes 4MiB of large pages"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_5539bf3d","line":1340,"range":{"start_line":1340,"start_character":10,"end_line":1340,"end_character":59},"in_reply_to":"5f7c97a3_661a1781","updated":"2018-07-25 11:03:19.000000000","message":"i got confused by the fact that your comment is in context of numa node 0 only rather then total memory usage.\n\nthe numa node 0 comment is only 8 lines above but its very easy to lose context in this code.","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c9b529c070b0ffde8d608a55d02f33242d98ff06","unresolved":false,"context_lines":[{"line_number":1337,"context_line":"                         hostusage.cells[0].memory)"},{"line_number":1338,"context_line":"        self.assertEqual(hostusage.cells[0].cpu_usage, 7)"},{"line_number":1339,"context_line":"        self.assertEqual(hostusage.cells[0].memory_usage, 100)"},{"line_number":1340,"context_line":"        # instance1, instance2 consume 96MiB of small pages"},{"line_number":1341,"context_line":"        self.assertEqual(4, hostusage.cells[0].mempages[0].size_kb)"},{"line_number":1342,"context_line":"        self.assertEqual(24576, hostusage.cells[0].mempages[0].used)"},{"line_number":1343,"context_line":"        # instance3 consumes 4MiB of large pages"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_661a1781","line":1340,"range":{"start_line":1340,"start_character":10,"end_line":1340,"end_character":59},"in_reply_to":"5f7c97a3_b635d4de","updated":"2018-07-25 07:37:44.000000000","message":"Not sure what you mean: instance1 consumes 32M and instance2 64M.","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6a04ac20c8f9c5613aa55037e920b90b602031f5","unresolved":false,"context_lines":[{"line_number":1338,"context_line":"        self.assertEqual(hostusage.cells[0].cpu_usage, 7)"},{"line_number":1339,"context_line":"        self.assertEqual(hostusage.cells[0].memory_usage, 100)"},{"line_number":1340,"context_line":"        # instance1, instance2 consume 96MiB of small pages"},{"line_number":1341,"context_line":"        self.assertEqual(4, hostusage.cells[0].mempages[0].size_kb)"},{"line_number":1342,"context_line":"        self.assertEqual(24576, hostusage.cells[0].mempages[0].used)"},{"line_number":1343,"context_line":"        # instance3 consumes 4MiB of large pages"},{"line_number":1344,"context_line":"        self.assertEqual(2048, hostusage.cells[0].mempages[1].size_kb)"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_76bf3cab","line":1341,"range":{"start_line":1341,"start_character":28,"end_line":1341,"end_character":58},"updated":"2018-07-24 16:19:53.000000000","message":"host_cell_0_mempage_4k \u003d host_cell_0.mempages[0]","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6a04ac20c8f9c5613aa55037e920b90b602031f5","unresolved":false,"context_lines":[{"line_number":1341,"context_line":"        self.assertEqual(4, hostusage.cells[0].mempages[0].size_kb)"},{"line_number":1342,"context_line":"        self.assertEqual(24576, hostusage.cells[0].mempages[0].used)"},{"line_number":1343,"context_line":"        # instance3 consumes 4MiB of large pages"},{"line_number":1344,"context_line":"        self.assertEqual(2048, hostusage.cells[0].mempages[1].size_kb)"},{"line_number":1345,"context_line":"        self.assertEqual(34, hostusage.cells[0].mempages[1].used)"},{"line_number":1346,"context_line":""},{"line_number":1347,"context_line":"        # Host NUMA node 1"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_56dc8016","line":1344,"range":{"start_line":1344,"start_character":31,"end_line":1344,"end_character":61},"updated":"2018-07-24 16:19:53.000000000","message":"host_cell_0_mempage_2mb \u003d host_cell_0.mempages[1]","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6a04ac20c8f9c5613aa55037e920b90b602031f5","unresolved":false,"context_lines":[{"line_number":1355,"context_line":"        # instance1, instance2 consume 48MiB of small pages"},{"line_number":1356,"context_line":"        self.assertEqual(4, hostusage.cells[1].mempages[0].size_kb)"},{"line_number":1357,"context_line":"        self.assertEqual(12352, hostusage.cells[1].mempages[0].used)"},{"line_number":1358,"context_line":"        # instance3 consumes 4MiB of large pages"},{"line_number":1359,"context_line":"        self.assertEqual(2048, hostusage.cells[1].mempages[1].size_kb)"},{"line_number":1360,"context_line":"        self.assertEqual(64, hostusage.cells[1].mempages[1].used)"},{"line_number":1361,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_76edfcb6","line":1358,"range":{"start_line":1358,"start_character":29,"end_line":1358,"end_character":33},"updated":"2018-07-24 16:19:53.000000000","message":"it consumes 8Mib\n\nits consuming 4Mib on node 0 but this comment reads as as if it consuces 4mibs total.\n\ncan you rephrases as \n\"instance3 consumes 4MiB of 2mb hugepages pages from node 0\"","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"21de42fa0ec25a36caa0575d3690d0a438150970","unresolved":false,"context_lines":[{"line_number":1355,"context_line":"        # instance1, instance2 consume 48MiB of small pages"},{"line_number":1356,"context_line":"        self.assertEqual(4, hostusage.cells[1].mempages[0].size_kb)"},{"line_number":1357,"context_line":"        self.assertEqual(12352, hostusage.cells[1].mempages[0].used)"},{"line_number":1358,"context_line":"        # instance3 consumes 4MiB of large pages"},{"line_number":1359,"context_line":"        self.assertEqual(2048, hostusage.cells[1].mempages[1].size_kb)"},{"line_number":1360,"context_line":"        self.assertEqual(64, hostusage.cells[1].mempages[1].used)"},{"line_number":1361,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_f511ebaf","line":1358,"range":{"start_line":1358,"start_character":29,"end_line":1358,"end_character":33},"in_reply_to":"5f7c97a3_095ed412","updated":"2018-07-25 11:03:19.000000000","message":"thanks and yes you are right its node 1 but its quite easy to lose context here too.","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c9b529c070b0ffde8d608a55d02f33242d98ff06","unresolved":false,"context_lines":[{"line_number":1355,"context_line":"        # instance1, instance2 consume 48MiB of small pages"},{"line_number":1356,"context_line":"        self.assertEqual(4, hostusage.cells[1].mempages[0].size_kb)"},{"line_number":1357,"context_line":"        self.assertEqual(12352, hostusage.cells[1].mempages[0].used)"},{"line_number":1358,"context_line":"        # instance3 consumes 4MiB of large pages"},{"line_number":1359,"context_line":"        self.assertEqual(2048, hostusage.cells[1].mempages[1].size_kb)"},{"line_number":1360,"context_line":"        self.assertEqual(64, hostusage.cells[1].mempages[1].used)"},{"line_number":1361,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_095ed412","line":1358,"range":{"start_line":1358,"start_character":29,"end_line":1358,"end_character":33},"in_reply_to":"5f7c97a3_76edfcb6","updated":"2018-07-25 07:37:44.000000000","message":"It\u0027s not on node 0 but node 1.\n\nThere are 3 blocks of tests. Host NUMA node 0, Host NUMA node 1, Host NUMA node 2. that looks enough to understand.\n\nIf I have to respin I will update the comment","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6a04ac20c8f9c5613aa55037e920b90b602031f5","unresolved":false,"context_lines":[{"line_number":1405,"context_line":"        self.assertEqual(2048, hostusage.cells[0].mempages[1].size_kb)"},{"line_number":1406,"context_line":"        self.assertEqual(10, hostusage.cells[0].mempages[1].used)"},{"line_number":1407,"context_line":""},{"line_number":1408,"context_line":"    def test_host_usage_sparse(self):"},{"line_number":1409,"context_line":"        hosttopo \u003d objects.NUMATopology(cells\u003d["},{"line_number":1410,"context_line":"            objects.NUMACell(id\u003d0, cpuset\u003dset([0, 1, 2, 3]), memory\u003d1024,"},{"line_number":1411,"context_line":"                             cpu_usage\u003d0, memory_usage\u003d0, mempages\u003d["}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_41b6f8fe","line":1408,"range":{"start_line":1408,"start_character":8,"end_line":1408,"end_character":30},"updated":"2018-07-24 16:19:53.000000000","message":"the intended behavior of this test case is unclear\ncan you add a comment in the code to explain.\n\nthe behavior is now different then it was previously so i want be explicit in stating what this intends to test.","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c9b529c070b0ffde8d608a55d02f33242d98ff06","unresolved":false,"context_lines":[{"line_number":1405,"context_line":"        self.assertEqual(2048, hostusage.cells[0].mempages[1].size_kb)"},{"line_number":1406,"context_line":"        self.assertEqual(10, hostusage.cells[0].mempages[1].used)"},{"line_number":1407,"context_line":""},{"line_number":1408,"context_line":"    def test_host_usage_sparse(self):"},{"line_number":1409,"context_line":"        hosttopo \u003d objects.NUMATopology(cells\u003d["},{"line_number":1410,"context_line":"            objects.NUMACell(id\u003d0, cpuset\u003dset([0, 1, 2, 3]), memory\u003d1024,"},{"line_number":1411,"context_line":"                             cpu_usage\u003d0, memory_usage\u003d0, mempages\u003d["}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_6655371f","line":1408,"range":{"start_line":1408,"start_character":8,"end_line":1408,"end_character":30},"in_reply_to":"5f7c97a3_41b6f8fe","updated":"2018-07-25 07:37:44.000000000","message":"Sean I did not have wrote this test. I\u0027m not going to change it.","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"21de42fa0ec25a36caa0575d3690d0a438150970","unresolved":false,"context_lines":[{"line_number":1405,"context_line":"        self.assertEqual(2048, hostusage.cells[0].mempages[1].size_kb)"},{"line_number":1406,"context_line":"        self.assertEqual(10, hostusage.cells[0].mempages[1].used)"},{"line_number":1407,"context_line":""},{"line_number":1408,"context_line":"    def test_host_usage_sparse(self):"},{"line_number":1409,"context_line":"        hosttopo \u003d objects.NUMATopology(cells\u003d["},{"line_number":1410,"context_line":"            objects.NUMACell(id\u003d0, cpuset\u003dset([0, 1, 2, 3]), memory\u003d1024,"},{"line_number":1411,"context_line":"                             cpu_usage\u003d0, memory_usage\u003d0, mempages\u003d["}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_151ca7c0","line":1408,"range":{"start_line":1408,"start_character":8,"end_line":1408,"end_character":30},"in_reply_to":"5f7c97a3_6655371f","updated":"2018-07-25 11:03:19.000000000","message":"im not asking you to change the test name but you have changed the behavior form the originainl hence why i was asking you to add a comment explaingin what you inteded as the new behavior of the test.","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6a04ac20c8f9c5613aa55037e920b90b602031f5","unresolved":false,"context_lines":[{"line_number":1707,"context_line":""},{"line_number":1708,"context_line":"class VirtNUMATopologyCellUsageTestCase(test.NoDBTestCase):"},{"line_number":1709,"context_line":"    def test_fit_instance_cell_success_no_limit(self):"},{"line_number":1710,"context_line":"        host_cell \u003d objects.NUMACell(id\u003d4, cpuset\u003dset([1, 2]), memory\u003d1024,"},{"line_number":1711,"context_line":"                                     cpu_usage\u003d0, memory_usage\u003d0, mempages\u003d["},{"line_number":1712,"context_line":"                                         objects.NUMAPagesTopology("},{"line_number":1713,"context_line":"                                             size_kb\u003d4, total\u003d524288, used\u003d0)],"},{"line_number":1714,"context_line":"                                     siblings\u003d[set([1]), set([2])],"},{"line_number":1715,"context_line":"                                     pinned_cpus\u003dset([]))"},{"line_number":1716,"context_line":"        instance_cell \u003d objects.InstanceNUMACell("}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_012fa0f5","line":1713,"range":{"start_line":1710,"start_character":8,"end_line":1713,"end_character":79},"updated":"2018-07-24 16:19:53.000000000","message":"this is common to several of the tests in this class.\nit would be better to put this in setup\nand only override the differences in the tests.","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"8a0d67201e49e3425503934b62e0f969c51e295f","unresolved":false,"context_lines":[{"line_number":1310,"context_line":"                             pinned_cpus\u003dset([])),"},{"line_number":1311,"context_line":"        ])"},{"line_number":1312,"context_line":"        instance1 \u003d objects.InstanceNUMATopology(cells\u003d["},{"line_number":1313,"context_line":"            objects.InstanceNUMACell(id\u003d0, cpuset\u003dset([0, 1, 2]), memory\u003d32),"},{"line_number":1314,"context_line":"            objects.InstanceNUMACell(id\u003d1, cpuset\u003dset([4]), memory\u003d16),"},{"line_number":1315,"context_line":"        ])"},{"line_number":1316,"context_line":"        instance2 \u003d objects.InstanceNUMATopology(cells\u003d["}],"source_content_type":"text/x-python","patch_set":25,"id":"3f79a3b5_5e8fb729","line":1313,"range":{"start_line":1313,"start_character":66,"end_line":1313,"end_character":75},"updated":"2018-08-07 14:10:08.000000000","message":"what does this even mean? Is this 32 bytes of memory? 32 pages of some particular size?\n\nOf course, the fields defined in the object have no description whatsoever so it\u0027s impossible to tell what is actually contained in the fields. :(\n\nhttps://github.com/openstack/nova/blob/master/nova/objects/instance_numa_topology.py#L50-L51","commit_id":"e39f9eb6283ae1130f80262b68bd1ea0c1113281"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"2ba81f463842558a6248e10a1d1ed7a019087c07","unresolved":false,"context_lines":[{"line_number":1310,"context_line":"                             pinned_cpus\u003dset([])),"},{"line_number":1311,"context_line":"        ])"},{"line_number":1312,"context_line":"        instance1 \u003d objects.InstanceNUMATopology(cells\u003d["},{"line_number":1313,"context_line":"            objects.InstanceNUMACell(id\u003d0, cpuset\u003dset([0, 1, 2]), memory\u003d32),"},{"line_number":1314,"context_line":"            objects.InstanceNUMACell(id\u003d1, cpuset\u003dset([4]), memory\u003d16),"},{"line_number":1315,"context_line":"        ])"},{"line_number":1316,"context_line":"        instance2 \u003d objects.InstanceNUMATopology(cells\u003d["}],"source_content_type":"text/x-python","patch_set":25,"id":"3f79a3b5_a528c596","line":1313,"range":{"start_line":1313,"start_character":66,"end_line":1313,"end_character":75},"in_reply_to":"3f79a3b5_5e8fb729","updated":"2018-08-13 08:33:35.000000000","message":"It\u0027s in MB. it\u0027s the memory requested by instance for that NUMA node. I kept that number small to make easy the calcul of pages.","commit_id":"e39f9eb6283ae1130f80262b68bd1ea0c1113281"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"444af005ae6bd710d65e31ac3291e724f8d98781","unresolved":false,"context_lines":[{"line_number":1310,"context_line":"                             pinned_cpus\u003dset([])),"},{"line_number":1311,"context_line":"        ])"},{"line_number":1312,"context_line":"        instance1 \u003d objects.InstanceNUMATopology(cells\u003d["},{"line_number":1313,"context_line":"            objects.InstanceNUMACell(id\u003d0, cpuset\u003dset([0, 1, 2]), memory\u003d32),"},{"line_number":1314,"context_line":"            objects.InstanceNUMACell(id\u003d1, cpuset\u003dset([4]), memory\u003d16),"},{"line_number":1315,"context_line":"        ])"},{"line_number":1316,"context_line":"        instance2 \u003d objects.InstanceNUMATopology(cells\u003d["}],"source_content_type":"text/x-python","patch_set":25,"id":"3f79a3b5_f96ae417","line":1313,"range":{"start_line":1313,"start_character":66,"end_line":1313,"end_character":75},"in_reply_to":"3f79a3b5_a528c596","updated":"2018-08-13 12:02:43.000000000","message":"Actually, it\u0027s in kb, which pretty much proves my point :)","commit_id":"e39f9eb6283ae1130f80262b68bd1ea0c1113281"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"95021e144b0c62b09f86dec117fb8fab2a9198ba","unresolved":false,"context_lines":[{"line_number":1310,"context_line":"                             pinned_cpus\u003dset([])),"},{"line_number":1311,"context_line":"        ])"},{"line_number":1312,"context_line":"        instance1 \u003d objects.InstanceNUMATopology(cells\u003d["},{"line_number":1313,"context_line":"            objects.InstanceNUMACell(id\u003d0, cpuset\u003dset([0, 1, 2]), memory\u003d32),"},{"line_number":1314,"context_line":"            objects.InstanceNUMACell(id\u003d1, cpuset\u003dset([4]), memory\u003d16),"},{"line_number":1315,"context_line":"        ])"},{"line_number":1316,"context_line":"        instance2 \u003d objects.InstanceNUMATopology(cells\u003d["}],"source_content_type":"text/x-python","patch_set":25,"id":"3f79a3b5_fa18931e","line":1313,"range":{"start_line":1313,"start_character":66,"end_line":1313,"end_character":75},"in_reply_to":"3f79a3b5_f96ae417","updated":"2018-08-13 13:18:54.000000000","message":"LOL :)","commit_id":"e39f9eb6283ae1130f80262b68bd1ea0c1113281"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e14e6af83a7616124414701bf32bc957d8f35112","unresolved":false,"context_lines":[{"line_number":1315,"context_line":"        ])"},{"line_number":1316,"context_line":"        instance2 \u003d objects.InstanceNUMATopology(cells\u003d["},{"line_number":1317,"context_line":"            objects.InstanceNUMACell(id\u003d0, cpuset\u003dset([0, 1]), memory\u003d64),"},{"line_number":1318,"context_line":"            objects.InstanceNUMACell(id\u003d1, cpuset\u003dset([5, 7]), memory\u003d32),"},{"line_number":1319,"context_line":"        ])"},{"line_number":1320,"context_line":"        instance3 \u003d objects.InstanceNUMATopology(cells\u003d["},{"line_number":1321,"context_line":"            objects.InstanceNUMACell(id\u003d0, cpuset\u003dset([3, 5]), memory\u003d4,"}],"source_content_type":"text/x-python","patch_set":25,"id":"3f79a3b5_b4435caf","line":1318,"range":{"start_line":1318,"start_character":55,"end_line":1318,"end_character":59},"updated":"2018-08-21 16:42:06.000000000","message":"I think in the real world, this would be set to the values of some CPUs on host NUMA node 1 as that\u0027s where this guest node will be allocated, right? However, clearly we\u0027re not checking this in \u0027numa_usage_from_instances\u0027 and instead simply check the value of \u0027id\u0027. This is confusing as I\u0027d expected this memory to come from host NUMA node 2 as that\u0027s where the cores are from. Perhaps you could fix this?","commit_id":"e39f9eb6283ae1130f80262b68bd1ea0c1113281"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6252153328077b58815e75ecd80c897454773104","unresolved":false,"context_lines":[{"line_number":1315,"context_line":"        ])"},{"line_number":1316,"context_line":"        instance2 \u003d objects.InstanceNUMATopology(cells\u003d["},{"line_number":1317,"context_line":"            objects.InstanceNUMACell(id\u003d0, cpuset\u003dset([0, 1]), memory\u003d64),"},{"line_number":1318,"context_line":"            objects.InstanceNUMACell(id\u003d1, cpuset\u003dset([5, 7]), memory\u003d32),"},{"line_number":1319,"context_line":"        ])"},{"line_number":1320,"context_line":"        instance3 \u003d objects.InstanceNUMATopology(cells\u003d["},{"line_number":1321,"context_line":"            objects.InstanceNUMACell(id\u003d0, cpuset\u003dset([3, 5]), memory\u003d4,"}],"source_content_type":"text/x-python","patch_set":25,"id":"3f79a3b5_f7cec859","line":1318,"range":{"start_line":1318,"start_character":55,"end_line":1318,"end_character":59},"in_reply_to":"3f79a3b5_b4435caf","updated":"2018-08-31 12:13:44.000000000","message":"Hum... cpuset does not have any relation with host CPUs, it indicates the relation between vCPUs and guest NUMA node. To make sense the value here should be [2, 3]. The mapping between vCPUs and pCPUs is done via pinning_raw.\n\nThe instanceNUMACell.id is indicating which host NUMA node is used. So we are not expecting to use the host NUMA node 2 here.","commit_id":"e39f9eb6283ae1130f80262b68bd1ea0c1113281"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e14e6af83a7616124414701bf32bc957d8f35112","unresolved":false,"context_lines":[{"line_number":1337,"context_line":"                         hostusage.cells[0].memory)"},{"line_number":1338,"context_line":"        self.assertEqual(hostusage.cells[0].cpu_usage, 7)"},{"line_number":1339,"context_line":"        self.assertEqual(hostusage.cells[0].memory_usage, 100)"},{"line_number":1340,"context_line":"        # instance1, instance2 consume 96MiB of small pages"},{"line_number":1341,"context_line":"        self.assertEqual(4, hostusage.cells[0].mempages[0].size_kb)"},{"line_number":1342,"context_line":"        self.assertEqual(24576, hostusage.cells[0].mempages[0].used)"},{"line_number":1343,"context_line":"        # instance3 consumes 4MiB of large pages"}],"source_content_type":"text/x-python","patch_set":25,"id":"3f79a3b5_34442c1b","line":1340,"updated":"2018-08-21 16:42:06.000000000","message":"...from this node.\n\nTook me a while (again) to grasp that I needed to be looking at the \u0027InstanceNUMACell\u0027 objects whose \u0027cpuset\u0027 values overlapped with those of \u0027hosttopo.cells[0].cpuset\u0027. I\u0027m not sure how to explain this better though. This was also why it took so long for me to figure out where 96 MiB was coming from","commit_id":"e39f9eb6283ae1130f80262b68bd1ea0c1113281"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6252153328077b58815e75ecd80c897454773104","unresolved":false,"context_lines":[{"line_number":1337,"context_line":"                         hostusage.cells[0].memory)"},{"line_number":1338,"context_line":"        self.assertEqual(hostusage.cells[0].cpu_usage, 7)"},{"line_number":1339,"context_line":"        self.assertEqual(hostusage.cells[0].memory_usage, 100)"},{"line_number":1340,"context_line":"        # instance1, instance2 consume 96MiB of small pages"},{"line_number":1341,"context_line":"        self.assertEqual(4, hostusage.cells[0].mempages[0].size_kb)"},{"line_number":1342,"context_line":"        self.assertEqual(24576, hostusage.cells[0].mempages[0].used)"},{"line_number":1343,"context_line":"        # instance3 consumes 4MiB of large pages"}],"source_content_type":"text/x-python","patch_set":25,"id":"3f79a3b5_77c5d809","line":1340,"in_reply_to":"3f79a3b5_34442c1b","updated":"2018-08-31 12:13:44.000000000","message":"To compute from where come the 96MiB just look at the instanceNUMAtopology.id\u003d\u003d0 of instance1 and instance2.","commit_id":"e39f9eb6283ae1130f80262b68bd1ea0c1113281"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e14e6af83a7616124414701bf32bc957d8f35112","unresolved":false,"context_lines":[{"line_number":1354,"context_line":"        self.assertEqual(hostusage.cells[1].memory_usage, 52)"},{"line_number":1355,"context_line":"        # instance1, instance2 consume 48MiB of small pages"},{"line_number":1356,"context_line":"        self.assertEqual(4, hostusage.cells[1].mempages[0].size_kb)"},{"line_number":1357,"context_line":"        self.assertEqual(12352, hostusage.cells[1].mempages[0].used)"},{"line_number":1358,"context_line":"        # instance3 consumes 4MiB of large pages"},{"line_number":1359,"context_line":"        self.assertEqual(2048, hostusage.cells[1].mempages[1].size_kb)"},{"line_number":1360,"context_line":"        self.assertEqual(64, hostusage.cells[1].mempages[1].used)"}],"source_content_type":"text/x-python","patch_set":25,"id":"3f79a3b5_7492a44d","line":1357,"range":{"start_line":1357,"start_character":25,"end_line":1357,"end_character":30},"updated":"2018-08-21 16:42:06.000000000","message":"(12352 * 4) / 1024 \u003d 48.25, right?\n\nWhat am I missing?","commit_id":"e39f9eb6283ae1130f80262b68bd1ea0c1113281"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6252153328077b58815e75ecd80c897454773104","unresolved":false,"context_lines":[{"line_number":1354,"context_line":"        self.assertEqual(hostusage.cells[1].memory_usage, 52)"},{"line_number":1355,"context_line":"        # instance1, instance2 consume 48MiB of small pages"},{"line_number":1356,"context_line":"        self.assertEqual(4, hostusage.cells[1].mempages[0].size_kb)"},{"line_number":1357,"context_line":"        self.assertEqual(12352, hostusage.cells[1].mempages[0].used)"},{"line_number":1358,"context_line":"        # instance3 consumes 4MiB of large pages"},{"line_number":1359,"context_line":"        self.assertEqual(2048, hostusage.cells[1].mempages[1].size_kb)"},{"line_number":1360,"context_line":"        self.assertEqual(64, hostusage.cells[1].mempages[1].used)"}],"source_content_type":"text/x-python","patch_set":25,"id":"3f79a3b5_a21a506c","line":1357,"range":{"start_line":1357,"start_character":25,"end_line":1357,"end_character":30},"in_reply_to":"3f79a3b5_7492a44d","updated":"2018-08-31 12:13:44.000000000","message":"There are 64 pages of 4K already used (see the NUMACell def).\n\n(48*1024)/4 \u003d 12288\n12288 + 64 \u003d 12352","commit_id":"e39f9eb6283ae1130f80262b68bd1ea0c1113281"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2a529d09ae421801f2b7a49b78eeee9b00a0b4e7","unresolved":false,"context_lines":[{"line_number":1354,"context_line":"        self.assertEqual(hostusage.cells[1].memory_usage, 52)"},{"line_number":1355,"context_line":"        # instance1, instance2 consume 48MiB of small pages"},{"line_number":1356,"context_line":"        self.assertEqual(4, hostusage.cells[1].mempages[0].size_kb)"},{"line_number":1357,"context_line":"        self.assertEqual(12352, hostusage.cells[1].mempages[0].used)"},{"line_number":1358,"context_line":"        # instance3 consumes 4MiB of large pages"},{"line_number":1359,"context_line":"        self.assertEqual(2048, hostusage.cells[1].mempages[1].size_kb)"},{"line_number":1360,"context_line":"        self.assertEqual(64, hostusage.cells[1].mempages[1].used)"}],"source_content_type":"text/x-python","patch_set":25,"id":"3f79a3b5_fd37894a","line":1357,"range":{"start_line":1357,"start_character":25,"end_line":1357,"end_character":30},"in_reply_to":"3f79a3b5_a21a506c","updated":"2018-08-31 12:54:18.000000000","message":"Ah, indeed. Not going to lie: this stuff is definitely more confusing that it need be (not your fault, obv)","commit_id":"e39f9eb6283ae1130f80262b68bd1ea0c1113281"}],"nova/virt/hardware.py":[{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"d2dd3474b2b68a1ed92a38e114d96cf364a6a071","unresolved":false,"context_lines":[{"line_number":1598,"context_line":"            smallest_pages \u003d sorted("},{"line_number":1599,"context_line":"                hostcell.mempages, key\u003dlambda x: x.size_kb)[0]"},{"line_number":1600,"context_line":"            memory \u003d ("},{"line_number":1601,"context_line":"                smallest_pages.total * smallest_pages.size_kb) / units.Ki"},{"line_number":1602,"context_line":"        else:"},{"line_number":1603,"context_line":"            memory \u003d hostcell.memory"},{"line_number":1604,"context_line":"        newcell \u003d objects.NUMACell("}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_21e67218","line":1601,"range":{"start_line":1601,"start_character":63,"end_line":1601,"end_character":73},"updated":"2018-01-11 10:12:02.000000000","message":"No need? hostcell.memory has the unit of kb.","commit_id":"11ee403e38be84b7226b94e9298ba9585013ea58"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"4f28c07d02bbef5e9c6e4af3e4f12cd99d20e43c","unresolved":false,"context_lines":[{"line_number":1598,"context_line":"            smallest_pages \u003d sorted("},{"line_number":1599,"context_line":"                hostcell.mempages, key\u003dlambda x: x.size_kb)[0]"},{"line_number":1600,"context_line":"            memory \u003d ("},{"line_number":1601,"context_line":"                smallest_pages.total * smallest_pages.size_kb) / units.Ki"},{"line_number":1602,"context_line":"        else:"},{"line_number":1603,"context_line":"            memory \u003d hostcell.memory"},{"line_number":1604,"context_line":"        newcell \u003d objects.NUMACell("}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_82aae182","line":1601,"range":{"start_line":1601,"start_character":63,"end_line":1601,"end_character":73},"in_reply_to":"7f96bb07_21e67218","updated":"2018-01-11 15:25:24.000000000","message":"This attribute is MiB.","commit_id":"11ee403e38be84b7226b94e9298ba9585013ea58"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"3e648901a592e6157124ef3b94a31ef29c24e873","unresolved":false,"context_lines":[{"line_number":1683,"context_line":"            memory \u003d ("},{"line_number":1684,"context_line":"                smallest_pages.total * smallest_pages.size_kb) / units.Ki"},{"line_number":1685,"context_line":"        else:"},{"line_number":1686,"context_line":"            memory \u003d hostcell.memory"},{"line_number":1687,"context_line":"        newcell \u003d objects.NUMACell("},{"line_number":1688,"context_line":"            id\u003dhostcell.id, cpuset\u003dhostcell.cpuset, memory\u003dmemory,"},{"line_number":1689,"context_line":"            cpu_usage\u003d0, memory_usage\u003d0, mempages\u003dhostcell.mempages,"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f6a8fd7_58879062","line":1686,"updated":"2018-05-02 14:15:12.000000000","message":"So, my problem with this is that it is equating the NUMACell.memory attribute with the physical RAM consumed by the huge pages. But that\u0027s actually not what NUMACell.memory is for. NUMACell.memory is for storing the total about of physical memory, in KB, that is associated with that NUMA node.\n\nAs you know, the NUMACell.mempages attribute is the thing that stores information about huge pages, which are a completely different resource type and unit from memory.\n\nI believe it is more appropriate to put logic in hardware._fit_numa_instance_cell() to look if NUMACell.mempages is not empty, and if not empty, then only the instance\u0027s requested memory pages should be examined for a match, not the total amount of physical memory associated with the NUMA node.\n\nIn other words, this code:\n\nhttps://github.com/openstack/nova/blob/stable/queens/nova/virt/hardware.py#L975-L982\n\n    if instance_cell.memory \u003e host_cell.memory:\n        LOG.debug(\u0027Not enough host cell memory to fit instance cell. \u0027\n                  \u0027Required: %(required)d, actual: %(actual)d\u0027,\n                  {\u0027required\u0027: instance_cell.memory,\n                   \u0027actual\u0027: host_cell.memory})\n        return\n\nshould be changed to this instead:\n\n    # NOTE(sahid): Huge pages are a different (atomic) unit of resource\n    # When huge pages are requested, we need to examine the \n    # host cell\u0027s specific huge page amounts, not the amount\n    # of physical memory associated with the host NUMA node\n    if (not instance_cell.mempages and\n            (instance_cell.memory \u003e host_cell.memory)):\n        LOG.debug(\u0027Not enough host cell memory to fit instance cell. \u0027\n                  \u0027Required: %(required)d, actual: %(actual)d\u0027,\n                  {\u0027required\u0027: instance_cell.memory,\n                   \u0027actual\u0027: host_cell.memory})\n        return","commit_id":"9b126323f133eaee847916767e4beb9aecf34a71"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f4250429efbf9a6ec081010a9418b3e3a22708eb","unresolved":false,"context_lines":[{"line_number":983,"context_line":"    # pages are requested, we need to examine the host cell\u0027s specific"},{"line_number":984,"context_line":"    # huge page amounts, not the amount of physical memory associated"},{"line_number":985,"context_line":"    # with the host NUMA node"},{"line_number":986,"context_line":"    if ((\u0027pagesize\u0027 in instance_cell and not instance_cell.pagesize)"},{"line_number":987,"context_line":"        and host_cell.avail_memory \u003c instance_cell.memory):"},{"line_number":988,"context_line":"        LOG.debug(\u0027Not enough available memory to schedule instance. \u0027"},{"line_number":989,"context_line":"                  \u0027Oversubscription is not possible with pinned instances. \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_ee074881","line":986,"range":{"start_line":986,"start_character":37,"end_line":986,"end_character":67},"updated":"2018-05-31 20:03:17.000000000","message":"Did the following not work?\n\n if (not instance_cell.mempages and\n            (instance_cell.memory \u003e host_cell.memory)):","commit_id":"f231696818ff4abfe68e5314bec4e66c91f4ae41"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6a6925374ef00787bdc4fb87bdf5fdaade825bf7","unresolved":false,"context_lines":[{"line_number":983,"context_line":"    # pages are requested, we need to examine the host cell\u0027s specific"},{"line_number":984,"context_line":"    # huge page amounts, not the amount of physical memory associated"},{"line_number":985,"context_line":"    # with the host NUMA node"},{"line_number":986,"context_line":"    if ((\u0027pagesize\u0027 in instance_cell and not instance_cell.pagesize)"},{"line_number":987,"context_line":"        and host_cell.avail_memory \u003c instance_cell.memory):"},{"line_number":988,"context_line":"        LOG.debug(\u0027Not enough available memory to schedule instance. \u0027"},{"line_number":989,"context_line":"                  \u0027Oversubscription is not possible with pinned instances. \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_1744b446","line":986,"range":{"start_line":986,"start_character":37,"end_line":986,"end_character":67},"in_reply_to":"5f7c97a3_ee074881","updated":"2018-06-06 13:33:14.000000000","message":"instance_cell does not have the mempages attribute. That one is for the host NUMA topology, it\u0027s where we put all the supported pages and amount.\n\n\nBut actually this is not well working, if the instance is using smallpages so basically pagesize is not set we don\u0027t do any check :/","commit_id":"f231696818ff4abfe68e5314bec4e66c91f4ae41"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"dc9c36c728c6d9df3e4dad413d8da8d51c643c57","unresolved":false,"context_lines":[{"line_number":980,"context_line":"        return"},{"line_number":981,"context_line":""},{"line_number":982,"context_line":"    if host_cell.mempages:"},{"line_number":983,"context_line":"        # The instance provides a NUMA topology but does not define any"},{"line_number":984,"context_line":"        # particular page size for its memory. Considering small pages by"},{"line_number":985,"context_line":"        # default."},{"line_number":986,"context_line":"        if \u0027pagesize\u0027 in instance_cell and instance_cell.pagesize:"},{"line_number":987,"context_line":"            pagesize \u003d instance_cell.pagesize"},{"line_number":988,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":17,"id":"5f7c97a3_2e178048","line":985,"range":{"start_line":983,"start_character":8,"end_line":985,"end_character":18},"updated":"2018-07-09 16:53:20.000000000","message":"Shouldn\u0027t the comment about small pages go a few lines down in the \"else\" clause where it calls _get_smallest_pagesize()?","commit_id":"4e708e89541f44ab40645eaa143f53b2a95750ed"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b56f6e18e8fc68968ff26be77ff6d686d51c1c9d","unresolved":false,"context_lines":[{"line_number":980,"context_line":"        return"},{"line_number":981,"context_line":""},{"line_number":982,"context_line":"    if host_cell.mempages:"},{"line_number":983,"context_line":"        # The instance provides a NUMA topology but does not define any"},{"line_number":984,"context_line":"        # particular page size for its memory. Considering small pages by"},{"line_number":985,"context_line":"        # default."},{"line_number":986,"context_line":"        if \u0027pagesize\u0027 in instance_cell and instance_cell.pagesize:"},{"line_number":987,"context_line":"            pagesize \u003d instance_cell.pagesize"},{"line_number":988,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":17,"id":"5f7c97a3_42939e4e","line":985,"range":{"start_line":983,"start_character":8,"end_line":985,"end_character":18},"in_reply_to":"5f7c97a3_2e178048","updated":"2018-07-10 10:26:43.000000000","message":"+1","commit_id":"4e708e89541f44ab40645eaa143f53b2a95750ed"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"dc9c36c728c6d9df3e4dad413d8da8d51c643c57","unresolved":false,"context_lines":[{"line_number":1085,"context_line":"            return"},{"line_number":1086,"context_line":""},{"line_number":1087,"context_line":"    pagesize \u003d None"},{"line_number":1088,"context_line":"    if instance_cell.pagesize:"},{"line_number":1089,"context_line":"        pagesize \u003d _numa_cell_supports_pagesize_request("},{"line_number":1090,"context_line":"            host_cell, instance_cell)"},{"line_number":1091,"context_line":"        if not pagesize:"},{"line_number":1092,"context_line":"            LOG.debug(\u0027Host does not support requested memory pagesize. \u0027"},{"line_number":1093,"context_line":"                      \u0027Requested: %d kB\u0027, instance_cell.pagesize)"}],"source_content_type":"text/x-python","patch_set":17,"id":"5f7c97a3_8ef254e2","line":1090,"range":{"start_line":1088,"start_character":0,"end_line":1090,"end_character":37},"updated":"2018-07-09 16:53:20.000000000","message":"Why isn\u0027t this check sufficient to ensure that there is enough memory of the appropriate size?  This function is the only caller of _numa_fit_instance_cell_with_pinning().","commit_id":"4e708e89541f44ab40645eaa143f53b2a95750ed"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"2fbd2bd4f04ec259dc65e7209eb53d194cbd19ee","unresolved":false,"context_lines":[{"line_number":1085,"context_line":"            return"},{"line_number":1086,"context_line":""},{"line_number":1087,"context_line":"    pagesize \u003d None"},{"line_number":1088,"context_line":"    if instance_cell.pagesize:"},{"line_number":1089,"context_line":"        pagesize \u003d _numa_cell_supports_pagesize_request("},{"line_number":1090,"context_line":"            host_cell, instance_cell)"},{"line_number":1091,"context_line":"        if not pagesize:"},{"line_number":1092,"context_line":"            LOG.debug(\u0027Host does not support requested memory pagesize. \u0027"},{"line_number":1093,"context_line":"                      \u0027Requested: %d kB\u0027, instance_cell.pagesize)"}],"source_content_type":"text/x-python","patch_set":17,"id":"5f7c97a3_992cc901","line":1090,"range":{"start_line":1088,"start_character":0,"end_line":1090,"end_character":37},"in_reply_to":"5f7c97a3_8ef254e2","updated":"2018-07-10 13:50:03.000000000","message":"Hum... all of that is a bit confusinf. here we are validating the page size requested. that should be done before we try to check memory against numa node.","commit_id":"4e708e89541f44ab40645eaa143f53b2a95750ed"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0f63c0a45a5b76a2ddfbc159027c46a40b0cb103","unresolved":false,"context_lines":[{"line_number":1007,"context_line":"    \"\"\""},{"line_number":1008,"context_line":"    LOG.debug(\u0027Attempting to fit instance cell %(cell)s on host_cell \u0027"},{"line_number":1009,"context_line":"              \u0027%(host_cell)s\u0027, {\u0027cell\u0027: instance_cell, \u0027host_cell\u0027: host_cell})"},{"line_number":1010,"context_line":""},{"line_number":1011,"context_line":"    # Checking whether the page size requested is valid"},{"line_number":1012,"context_line":"    if \u0027pagesize\u0027 in instance_cell and instance_cell.pagesize:"},{"line_number":1013,"context_line":"        pagesize \u003d _numa_cell_supports_pagesize_request("}],"source_content_type":"text/x-python","patch_set":20,"id":"5f7c97a3_ebce3e59","line":1010,"updated":"2018-07-10 16:00:37.000000000","message":"This is pretty tough to read. Far as I can see, there are four possible combinations:\n\n- host cell mempages present, instance cell mempages requested\n- host cell mempages present, instance cell mempages not requested\n- host cell mempages not present, instance cell mempages requested\n- host cell mempages not present, instance cell mempages not requested\n\nWe\u0027re trying to fix an issue with the first two cases, where the hostpages aren\u0027t accounted for. However, this is tough to decipher because this switches between checks against the instance cell and then against the host cell with nested checks for instance cell.\n\nCould we try something like this instead?\n\n    if pagesizes requested for instance:\n        validate pagesizes supported by host\n        ensure they can actually fit on host\n    else (pagesizes not requested):\n        if pagesizes available on host\n            ensure guest memory can fit accounting for pages\n        else (pagesizes not available)\n            ensure guest memory can fit without accounting for pages","commit_id":"66576ca77b90717bb549419279899ff5b454eb69"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"3ae2ed2a70b49979f6813ed1b48547c3daad905a","unresolved":false,"context_lines":[{"line_number":1007,"context_line":"    \"\"\""},{"line_number":1008,"context_line":"    LOG.debug(\u0027Attempting to fit instance cell %(cell)s on host_cell \u0027"},{"line_number":1009,"context_line":"              \u0027%(host_cell)s\u0027, {\u0027cell\u0027: instance_cell, \u0027host_cell\u0027: host_cell})"},{"line_number":1010,"context_line":""},{"line_number":1011,"context_line":"    # Checking whether the page size requested is valid"},{"line_number":1012,"context_line":"    if \u0027pagesize\u0027 in instance_cell and instance_cell.pagesize:"},{"line_number":1013,"context_line":"        pagesize \u003d _numa_cell_supports_pagesize_request("}],"source_content_type":"text/x-python","patch_set":20,"id":"5f7c97a3_7d3ad9e6","line":1010,"in_reply_to":"5f7c97a3_3d9a2160","updated":"2018-07-11 15:41:49.000000000","message":"It\u0027s basically what I said. The issue here is because If I remove one of the check I can\u0027t then switch to use small pages if no page size was requested. - I need first to validate the attribute \u0027pagesize\u0027. Then I can use that one or switch to use the smallest.\n\nIf you can find a better way to do all of that I\u0027m OK to update the code.","commit_id":"66576ca77b90717bb549419279899ff5b454eb69"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"df2d6c4914edce9fa41e22b5c54bebd5a08037f8","unresolved":false,"context_lines":[{"line_number":1007,"context_line":"    \"\"\""},{"line_number":1008,"context_line":"    LOG.debug(\u0027Attempting to fit instance cell %(cell)s on host_cell \u0027"},{"line_number":1009,"context_line":"              \u0027%(host_cell)s\u0027, {\u0027cell\u0027: instance_cell, \u0027host_cell\u0027: host_cell})"},{"line_number":1010,"context_line":""},{"line_number":1011,"context_line":"    # Checking whether the page size requested is valid"},{"line_number":1012,"context_line":"    if \u0027pagesize\u0027 in instance_cell and instance_cell.pagesize:"},{"line_number":1013,"context_line":"        pagesize \u003d _numa_cell_supports_pagesize_request("}],"source_content_type":"text/x-python","patch_set":20,"id":"5f7c97a3_b8c63f15","line":1010,"in_reply_to":"5f7c97a3_7d3ad9e6","updated":"2018-07-11 16:17:33.000000000","message":"How about this?  http://paste.openstack.org/show/725578/\n\nAlso, at line 56 in the paste would we maybe want to add a debug log indicating the selected pagesize, and possibly even set \"instance_cell.pagesize \u003d pagesize\"?","commit_id":"66576ca77b90717bb549419279899ff5b454eb69"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"56b031cf8dca71c9991d5eebe852c04054366da0","unresolved":false,"context_lines":[{"line_number":1007,"context_line":"    \"\"\""},{"line_number":1008,"context_line":"    LOG.debug(\u0027Attempting to fit instance cell %(cell)s on host_cell \u0027"},{"line_number":1009,"context_line":"              \u0027%(host_cell)s\u0027, {\u0027cell\u0027: instance_cell, \u0027host_cell\u0027: host_cell})"},{"line_number":1010,"context_line":""},{"line_number":1011,"context_line":"    # Checking whether the page size requested is valid"},{"line_number":1012,"context_line":"    if \u0027pagesize\u0027 in instance_cell and instance_cell.pagesize:"},{"line_number":1013,"context_line":"        pagesize \u003d _numa_cell_supports_pagesize_request("}],"source_content_type":"text/x-python","patch_set":20,"id":"5f7c97a3_c0564f2c","line":1010,"in_reply_to":"5f7c97a3_b8c63f15","updated":"2018-07-16 07:35:27.000000000","message":"Sounds good, let try with that way. Thanks.","commit_id":"66576ca77b90717bb549419279899ff5b454eb69"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"13a33a5a07b807f02a96d1ddbfad27853a6c2940","unresolved":false,"context_lines":[{"line_number":1007,"context_line":"    \"\"\""},{"line_number":1008,"context_line":"    LOG.debug(\u0027Attempting to fit instance cell %(cell)s on host_cell \u0027"},{"line_number":1009,"context_line":"              \u0027%(host_cell)s\u0027, {\u0027cell\u0027: instance_cell, \u0027host_cell\u0027: host_cell})"},{"line_number":1010,"context_line":""},{"line_number":1011,"context_line":"    # Checking whether the page size requested is valid"},{"line_number":1012,"context_line":"    if \u0027pagesize\u0027 in instance_cell and instance_cell.pagesize:"},{"line_number":1013,"context_line":"        pagesize \u003d _numa_cell_supports_pagesize_request("}],"source_content_type":"text/x-python","patch_set":20,"id":"5f7c97a3_3d9a2160","line":1010,"in_reply_to":"5f7c97a3_e9714f47","updated":"2018-07-11 15:25:29.000000000","message":"That\u0027s not quite correct.  The requested pagesize can be -1/-2/-3 or a positive integer pagesize in KB.  As part of validating the requested pagesize, _numa_cell_supports_pagesize_request() will check whether there are enough pages of that size available on the host...which makes the check at line 1035 redundant for the case where the instance has requested a particular pagesize.","commit_id":"66576ca77b90717bb549419279899ff5b454eb69"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"552946618bbc1e0e861054b697139c41324a6949","unresolved":false,"context_lines":[{"line_number":1007,"context_line":"    \"\"\""},{"line_number":1008,"context_line":"    LOG.debug(\u0027Attempting to fit instance cell %(cell)s on host_cell \u0027"},{"line_number":1009,"context_line":"              \u0027%(host_cell)s\u0027, {\u0027cell\u0027: instance_cell, \u0027host_cell\u0027: host_cell})"},{"line_number":1010,"context_line":""},{"line_number":1011,"context_line":"    # Checking whether the page size requested is valid"},{"line_number":1012,"context_line":"    if \u0027pagesize\u0027 in instance_cell and instance_cell.pagesize:"},{"line_number":1013,"context_line":"        pagesize \u003d _numa_cell_supports_pagesize_request("}],"source_content_type":"text/x-python","patch_set":20,"id":"5f7c97a3_e9714f47","line":1010,"in_reply_to":"5f7c97a3_ebce3e59","updated":"2018-07-11 13:25:33.000000000","message":"We can\u0027t do that, there are 2 blocks:\n\nThe first one is related to check whether the pagesize requested is valid. Basically the attribute pagesize is filled by a negative number -1, -2, -3. So that first call is to validated that number and return the page size associated.\n\nThe second block is to do the computing based on the memory requested by instance (based on the page size requested)","commit_id":"66576ca77b90717bb549419279899ff5b454eb69"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0f63c0a45a5b76a2ddfbc159027c46a40b0cb103","unresolved":false,"context_lines":[{"line_number":1008,"context_line":"    LOG.debug(\u0027Attempting to fit instance cell %(cell)s on host_cell \u0027"},{"line_number":1009,"context_line":"              \u0027%(host_cell)s\u0027, {\u0027cell\u0027: instance_cell, \u0027host_cell\u0027: host_cell})"},{"line_number":1010,"context_line":""},{"line_number":1011,"context_line":"    # Checking whether the page size requested is valid"},{"line_number":1012,"context_line":"    if \u0027pagesize\u0027 in instance_cell and instance_cell.pagesize:"},{"line_number":1013,"context_line":"        pagesize \u003d _numa_cell_supports_pagesize_request("},{"line_number":1014,"context_line":"            host_cell, instance_cell)"},{"line_number":1015,"context_line":"        if not pagesize:"},{"line_number":1016,"context_line":"            LOG.debug(\u0027Host does not support requested memory pagesize. \u0027"},{"line_number":1017,"context_line":"                      \u0027Requested: %d kB\u0027, instance_cell.pagesize)"},{"line_number":1018,"context_line":"            return"},{"line_number":1019,"context_line":"        LOG.debug(\u0027Selected memory pagesize: %(selected_mem_pagesize)d kB. \u0027"},{"line_number":1020,"context_line":"                  \u0027Requested memory pagesize: %(requested_mem_pagesize)d \u0027"},{"line_number":1021,"context_line":"                  \u0027(small \u003d -1, large \u003d -2, any \u003d -3)\u0027,"},{"line_number":1022,"context_line":"                  {\u0027selected_mem_pagesize\u0027: pagesize,"},{"line_number":1023,"context_line":"                   \u0027requested_mem_pagesize\u0027: instance_cell.pagesize})"},{"line_number":1024,"context_line":"        instance_cell.pagesize \u003d pagesize"},{"line_number":1025,"context_line":""},{"line_number":1026,"context_line":"    if host_cell.mempages:"},{"line_number":1027,"context_line":"        if \u0027pagesize\u0027 in instance_cell and instance_cell.pagesize:"}],"source_content_type":"text/x-python","patch_set":20,"id":"5f7c97a3_cb87c2b2","line":1024,"range":{"start_line":1011,"start_character":0,"end_line":1024,"end_character":41},"updated":"2018-07-10 16:00:37.000000000","message":"So all this would move under line 1026 below","commit_id":"66576ca77b90717bb549419279899ff5b454eb69"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"552946618bbc1e0e861054b697139c41324a6949","unresolved":false,"context_lines":[{"line_number":1008,"context_line":"    LOG.debug(\u0027Attempting to fit instance cell %(cell)s on host_cell \u0027"},{"line_number":1009,"context_line":"              \u0027%(host_cell)s\u0027, {\u0027cell\u0027: instance_cell, \u0027host_cell\u0027: host_cell})"},{"line_number":1010,"context_line":""},{"line_number":1011,"context_line":"    # Checking whether the page size requested is valid"},{"line_number":1012,"context_line":"    if \u0027pagesize\u0027 in instance_cell and instance_cell.pagesize:"},{"line_number":1013,"context_line":"        pagesize \u003d _numa_cell_supports_pagesize_request("},{"line_number":1014,"context_line":"            host_cell, instance_cell)"},{"line_number":1015,"context_line":"        if not pagesize:"},{"line_number":1016,"context_line":"            LOG.debug(\u0027Host does not support requested memory pagesize. \u0027"},{"line_number":1017,"context_line":"                      \u0027Requested: %d kB\u0027, instance_cell.pagesize)"},{"line_number":1018,"context_line":"            return"},{"line_number":1019,"context_line":"        LOG.debug(\u0027Selected memory pagesize: %(selected_mem_pagesize)d kB. \u0027"},{"line_number":1020,"context_line":"                  \u0027Requested memory pagesize: %(requested_mem_pagesize)d \u0027"},{"line_number":1021,"context_line":"                  \u0027(small \u003d -1, large \u003d -2, any \u003d -3)\u0027,"},{"line_number":1022,"context_line":"                  {\u0027selected_mem_pagesize\u0027: pagesize,"},{"line_number":1023,"context_line":"                   \u0027requested_mem_pagesize\u0027: instance_cell.pagesize})"},{"line_number":1024,"context_line":"        instance_cell.pagesize \u003d pagesize"},{"line_number":1025,"context_line":""},{"line_number":1026,"context_line":"    if host_cell.mempages:"},{"line_number":1027,"context_line":"        if \u0027pagesize\u0027 in instance_cell and instance_cell.pagesize:"}],"source_content_type":"text/x-python","patch_set":20,"id":"5f7c97a3_a989171f","line":1024,"range":{"start_line":1011,"start_character":0,"end_line":1024,"end_character":41},"in_reply_to":"5f7c97a3_bef2c667","updated":"2018-07-11 13:25:33.000000000","message":"Please see my comment.","commit_id":"66576ca77b90717bb549419279899ff5b454eb69"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"a85e58cb1e0145780001c6db8efcdb4769638819","unresolved":false,"context_lines":[{"line_number":1008,"context_line":"    LOG.debug(\u0027Attempting to fit instance cell %(cell)s on host_cell \u0027"},{"line_number":1009,"context_line":"              \u0027%(host_cell)s\u0027, {\u0027cell\u0027: instance_cell, \u0027host_cell\u0027: host_cell})"},{"line_number":1010,"context_line":""},{"line_number":1011,"context_line":"    # Checking whether the page size requested is valid"},{"line_number":1012,"context_line":"    if \u0027pagesize\u0027 in instance_cell and instance_cell.pagesize:"},{"line_number":1013,"context_line":"        pagesize \u003d _numa_cell_supports_pagesize_request("},{"line_number":1014,"context_line":"            host_cell, instance_cell)"},{"line_number":1015,"context_line":"        if not pagesize:"},{"line_number":1016,"context_line":"            LOG.debug(\u0027Host does not support requested memory pagesize. \u0027"},{"line_number":1017,"context_line":"                      \u0027Requested: %d kB\u0027, instance_cell.pagesize)"},{"line_number":1018,"context_line":"            return"},{"line_number":1019,"context_line":"        LOG.debug(\u0027Selected memory pagesize: %(selected_mem_pagesize)d kB. \u0027"},{"line_number":1020,"context_line":"                  \u0027Requested memory pagesize: %(requested_mem_pagesize)d \u0027"},{"line_number":1021,"context_line":"                  \u0027(small \u003d -1, large \u003d -2, any \u003d -3)\u0027,"},{"line_number":1022,"context_line":"                  {\u0027selected_mem_pagesize\u0027: pagesize,"},{"line_number":1023,"context_line":"                   \u0027requested_mem_pagesize\u0027: instance_cell.pagesize})"},{"line_number":1024,"context_line":"        instance_cell.pagesize \u003d pagesize"},{"line_number":1025,"context_line":""},{"line_number":1026,"context_line":"    if host_cell.mempages:"},{"line_number":1027,"context_line":"        if \u0027pagesize\u0027 in instance_cell and instance_cell.pagesize:"}],"source_content_type":"text/x-python","patch_set":20,"id":"5f7c97a3_bef2c667","line":1024,"range":{"start_line":1011,"start_character":0,"end_line":1024,"end_character":41},"in_reply_to":"5f7c97a3_cb87c2b2","updated":"2018-07-10 16:34:01.000000000","message":"I\u0027m not sure anything needs to move.  Both cases where the instance requested a pagesize are dealt with by the call to _numa_cell_supports_pagesize_request() since it will return null if the host has no available pagesizes.  Maybe just move lines 1026-1056 into an else clause?  (matching the \"if\" at line 1012)","commit_id":"66576ca77b90717bb549419279899ff5b454eb69"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"a85e58cb1e0145780001c6db8efcdb4769638819","unresolved":false,"context_lines":[{"line_number":1032,"context_line":"            # default."},{"line_number":1033,"context_line":"            pagesize \u003d _get_smallest_pagesize(host_cell)"},{"line_number":1034,"context_line":""},{"line_number":1035,"context_line":"        if not host_cell.can_fit_hugepages("},{"line_number":1036,"context_line":"                pagesize, instance_cell.memory * units.Ki):"},{"line_number":1037,"context_line":"            LOG.debug(\u0027Not enough available memory to schedule instance \u0027"},{"line_number":1038,"context_line":"                      \u0027with pagesize %(pagesize)d. Required: %(required)s, \u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"5f7c97a3_3e80f6bd","line":1035,"range":{"start_line":1035,"start_character":8,"end_line":1035,"end_character":43},"updated":"2018-07-10 16:34:01.000000000","message":"this is a redundant check for the scenario where the instance requested a specific pagesize...we\u0027ve already called it from _numa_cell_supports_pagesize_request().","commit_id":"66576ca77b90717bb549419279899ff5b454eb69"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"552946618bbc1e0e861054b697139c41324a6949","unresolved":false,"context_lines":[{"line_number":1032,"context_line":"            # default."},{"line_number":1033,"context_line":"            pagesize \u003d _get_smallest_pagesize(host_cell)"},{"line_number":1034,"context_line":""},{"line_number":1035,"context_line":"        if not host_cell.can_fit_hugepages("},{"line_number":1036,"context_line":"                pagesize, instance_cell.memory * units.Ki):"},{"line_number":1037,"context_line":"            LOG.debug(\u0027Not enough available memory to schedule instance \u0027"},{"line_number":1038,"context_line":"                      \u0027with pagesize %(pagesize)d. Required: %(required)s, \u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"5f7c97a3_c9b7b3d7","line":1035,"range":{"start_line":1035,"start_character":8,"end_line":1035,"end_character":43},"in_reply_to":"5f7c97a3_3e80f6bd","updated":"2018-07-11 13:25:33.000000000","message":"Please see my comment, there is nothing really redundant. I explained how that function is used and I don\u0027t want to work on some deeper re-factoring whihc will be out of the scope of the fix.","commit_id":"66576ca77b90717bb549419279899ff5b454eb69"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0f63c0a45a5b76a2ddfbc159027c46a40b0cb103","unresolved":false,"context_lines":[{"line_number":1036,"context_line":"                pagesize, instance_cell.memory * units.Ki):"},{"line_number":1037,"context_line":"            LOG.debug(\u0027Not enough available memory to schedule instance \u0027"},{"line_number":1038,"context_line":"                      \u0027with pagesize %(pagesize)d. Required: %(required)s, \u0027"},{"line_number":1039,"context_line":"                      \u0027available: %(available)s, total: %(total)s. \u0027,"},{"line_number":1040,"context_line":"                      {\u0027required\u0027: instance_cell.memory,"},{"line_number":1041,"context_line":"                       \u0027available\u0027: host_cell.avail_memory,"},{"line_number":1042,"context_line":"                       \u0027total\u0027: host_cell.memory,"}],"source_content_type":"text/x-python","patch_set":20,"id":"5f7c97a3_5e2612bc","line":1039,"range":{"start_line":1039,"start_character":65,"end_line":1039,"end_character":67},"updated":"2018-07-10 16:00:37.000000000","message":"extra whitespace","commit_id":"66576ca77b90717bb549419279899ff5b454eb69"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0f63c0a45a5b76a2ddfbc159027c46a40b0cb103","unresolved":false,"context_lines":[{"line_number":1043,"context_line":"                       \u0027pagesize\u0027: pagesize})"},{"line_number":1044,"context_line":"            return"},{"line_number":1045,"context_line":"    else:"},{"line_number":1046,"context_line":"        # There is no different page sizes available on"},{"line_number":1047,"context_line":"        # host. Considering total physical memory"},{"line_number":1048,"context_line":"        if host_cell.avail_memory \u003c instance_cell.memory:"},{"line_number":1049,"context_line":"            LOG.debug(\u0027Not enough available memory to schedule instance. \u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"5f7c97a3_aba5a649","line":1046,"updated":"2018-07-10 16:00:37.000000000","message":"...and you\u0027d need an additional check here to check if instance.pagesize is set and fail if so","commit_id":"66576ca77b90717bb549419279899ff5b454eb69"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6a04ac20c8f9c5613aa55037e920b90b602031f5","unresolved":false,"context_lines":[{"line_number":1030,"context_line":"            return"},{"line_number":1031,"context_line":"        LOG.debug(\u0027Selected memory pagesize: %(selected_mem_pagesize)d kB. \u0027"},{"line_number":1032,"context_line":"                  \u0027Requested memory pagesize: %(requested_mem_pagesize)d \u0027"},{"line_number":1033,"context_line":"                  \u0027(small \u003d -1, large \u003d -2, any \u003d -3)\u0027,"},{"line_number":1034,"context_line":"                  {\u0027selected_mem_pagesize\u0027: pagesize,"},{"line_number":1035,"context_line":"                   \u0027requested_mem_pagesize\u0027: instance_cell.pagesize})"},{"line_number":1036,"context_line":"        instance_cell.pagesize \u003d pagesize"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_41ea7877","line":1033,"range":{"start_line":1033,"start_character":17,"end_line":1033,"end_character":55},"updated":"2018-07-24 16:19:53.000000000","message":"why these specific values.\nthey were never defiend to have interger values in any of the specs to my knowladge so we should not use them in a log.","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c9b529c070b0ffde8d608a55d02f33242d98ff06","unresolved":false,"context_lines":[{"line_number":1030,"context_line":"            return"},{"line_number":1031,"context_line":"        LOG.debug(\u0027Selected memory pagesize: %(selected_mem_pagesize)d kB. \u0027"},{"line_number":1032,"context_line":"                  \u0027Requested memory pagesize: %(requested_mem_pagesize)d \u0027"},{"line_number":1033,"context_line":"                  \u0027(small \u003d -1, large \u003d -2, any \u003d -3)\u0027,"},{"line_number":1034,"context_line":"                  {\u0027selected_mem_pagesize\u0027: pagesize,"},{"line_number":1035,"context_line":"                   \u0027requested_mem_pagesize\u0027: instance_cell.pagesize})"},{"line_number":1036,"context_line":"        instance_cell.pagesize \u003d pagesize"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_86e413aa","line":1033,"range":{"start_line":1033,"start_character":17,"end_line":1033,"end_character":55},"in_reply_to":"5f7c97a3_33147150","updated":"2018-07-25 07:37:44.000000000","message":"They are internal values. When user is requesting LARGE we don\u0027t know if that is going to be 2MB or 1GB hugepages. the value of instance_cell.pagessize is equal to one of this value.\n\nThat debug looks reasonable I\u0027m not going to change it","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"98cd4dbe8fe6025bb8dc57dcd6287b181cf05848","unresolved":false,"context_lines":[{"line_number":1030,"context_line":"            return"},{"line_number":1031,"context_line":"        LOG.debug(\u0027Selected memory pagesize: %(selected_mem_pagesize)d kB. \u0027"},{"line_number":1032,"context_line":"                  \u0027Requested memory pagesize: %(requested_mem_pagesize)d \u0027"},{"line_number":1033,"context_line":"                  \u0027(small \u003d -1, large \u003d -2, any \u003d -3)\u0027,"},{"line_number":1034,"context_line":"                  {\u0027selected_mem_pagesize\u0027: pagesize,"},{"line_number":1035,"context_line":"                   \u0027requested_mem_pagesize\u0027: instance_cell.pagesize})"},{"line_number":1036,"context_line":"        instance_cell.pagesize \u003d pagesize"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_33147150","line":1033,"range":{"start_line":1033,"start_character":17,"end_line":1033,"end_character":55},"in_reply_to":"5f7c97a3_41ea7877","updated":"2018-07-24 17:48:31.000000000","message":"Agreed, should be converted to named constants if appropriate.","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"21de42fa0ec25a36caa0575d3690d0a438150970","unresolved":false,"context_lines":[{"line_number":1030,"context_line":"            return"},{"line_number":1031,"context_line":"        LOG.debug(\u0027Selected memory pagesize: %(selected_mem_pagesize)d kB. \u0027"},{"line_number":1032,"context_line":"                  \u0027Requested memory pagesize: %(requested_mem_pagesize)d \u0027"},{"line_number":1033,"context_line":"                  \u0027(small \u003d -1, large \u003d -2, any \u003d -3)\u0027,"},{"line_number":1034,"context_line":"                  {\u0027selected_mem_pagesize\u0027: pagesize,"},{"line_number":1035,"context_line":"                   \u0027requested_mem_pagesize\u0027: instance_cell.pagesize})"},{"line_number":1036,"context_line":"        instance_cell.pagesize \u003d pagesize"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_f0fc990c","line":1033,"range":{"start_line":1033,"start_character":17,"end_line":1033,"end_character":55},"in_reply_to":"5f7c97a3_86e413aa","updated":"2018-07-25 11:03:19.000000000","message":"my concern was we were leaking internal implmentation details to the end user that said this is a debug level log so guess that is acceptable. if this was info or higher however i would still object but for debug its intended to help debugging so using the constants is ok..","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6a04ac20c8f9c5613aa55037e920b90b602031f5","unresolved":false,"context_lines":[{"line_number":1040,"context_line":"        if host_cell.mempages:"},{"line_number":1041,"context_line":"            # The host supports explicit page sizes.  Use the smallest"},{"line_number":1042,"context_line":"            # available page size."},{"line_number":1043,"context_line":"            pagesize \u003d _get_smallest_pagesize(host_cell)"},{"line_number":1044,"context_line":"            LOG.debug(\u0027No specific pagesize requested for instance, \u0027"},{"line_number":1045,"context_line":"                      \u0027selectionned pagesize: %d\u0027, pagesize)"},{"line_number":1046,"context_line":"            if not host_cell.can_fit_hugepages("},{"line_number":1047,"context_line":"                    pagesize, instance_cell.memory * units.Ki):"},{"line_number":1048,"context_line":"                LOG.debug(\u0027Not enough available memory to schedule instance \u0027"},{"line_number":1049,"context_line":"                          \u0027with pagesize %(pagesize)d. Required: \u0027"},{"line_number":1050,"context_line":"                          \u0027%(required)s, available: %(available)s, total: \u0027"},{"line_number":1051,"context_line":"                          \u0027%(total)s.\u0027,"},{"line_number":1052,"context_line":"                          {\u0027required\u0027: instance_cell.memory,"},{"line_number":1053,"context_line":"                           \u0027available\u0027: host_cell.avail_memory,"},{"line_number":1054,"context_line":"                           \u0027total\u0027: host_cell.memory,"},{"line_number":1055,"context_line":"                           \u0027pagesize\u0027: pagesize})"},{"line_number":1056,"context_line":"                return"},{"line_number":1057,"context_line":"        else:"},{"line_number":1058,"context_line":"            # The host does not support explicit page sizes.  Just use the"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_7cc39b59","line":1055,"range":{"start_line":1043,"start_character":11,"end_line":1055,"end_character":49},"updated":"2018-07-24 16:19:53.000000000","message":"this should be a loop over all the page sizes from smallest to largest to cater for the case wehre a host has multiple pages sizes available. \n\nif the guest has not spcified a page size then the default page size of any should be used so we should check all available page sizes.","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c9b529c070b0ffde8d608a55d02f33242d98ff06","unresolved":false,"context_lines":[{"line_number":1040,"context_line":"        if host_cell.mempages:"},{"line_number":1041,"context_line":"            # The host supports explicit page sizes.  Use the smallest"},{"line_number":1042,"context_line":"            # available page size."},{"line_number":1043,"context_line":"            pagesize \u003d _get_smallest_pagesize(host_cell)"},{"line_number":1044,"context_line":"            LOG.debug(\u0027No specific pagesize requested for instance, \u0027"},{"line_number":1045,"context_line":"                      \u0027selectionned pagesize: %d\u0027, pagesize)"},{"line_number":1046,"context_line":"            if not host_cell.can_fit_hugepages("},{"line_number":1047,"context_line":"                    pagesize, instance_cell.memory * units.Ki):"},{"line_number":1048,"context_line":"                LOG.debug(\u0027Not enough available memory to schedule instance \u0027"},{"line_number":1049,"context_line":"                          \u0027with pagesize %(pagesize)d. Required: \u0027"},{"line_number":1050,"context_line":"                          \u0027%(required)s, available: %(available)s, total: \u0027"},{"line_number":1051,"context_line":"                          \u0027%(total)s.\u0027,"},{"line_number":1052,"context_line":"                          {\u0027required\u0027: instance_cell.memory,"},{"line_number":1053,"context_line":"                           \u0027available\u0027: host_cell.avail_memory,"},{"line_number":1054,"context_line":"                           \u0027total\u0027: host_cell.memory,"},{"line_number":1055,"context_line":"                           \u0027pagesize\u0027: pagesize})"},{"line_number":1056,"context_line":"                return"},{"line_number":1057,"context_line":"        else:"},{"line_number":1058,"context_line":"            # The host does not support explicit page sizes.  Just use the"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_a69caf0d","line":1055,"range":{"start_line":1043,"start_character":11,"end_line":1055,"end_character":49},"in_reply_to":"5f7c97a3_53624d17","updated":"2018-07-25 07:37:44.000000000","message":"Yes, what you are saying Sean is not right. If no pagesize has been requested we remain using smallpages.","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"98cd4dbe8fe6025bb8dc57dcd6287b181cf05848","unresolved":false,"context_lines":[{"line_number":1040,"context_line":"        if host_cell.mempages:"},{"line_number":1041,"context_line":"            # The host supports explicit page sizes.  Use the smallest"},{"line_number":1042,"context_line":"            # available page size."},{"line_number":1043,"context_line":"            pagesize \u003d _get_smallest_pagesize(host_cell)"},{"line_number":1044,"context_line":"            LOG.debug(\u0027No specific pagesize requested for instance, \u0027"},{"line_number":1045,"context_line":"                      \u0027selectionned pagesize: %d\u0027, pagesize)"},{"line_number":1046,"context_line":"            if not host_cell.can_fit_hugepages("},{"line_number":1047,"context_line":"                    pagesize, instance_cell.memory * units.Ki):"},{"line_number":1048,"context_line":"                LOG.debug(\u0027Not enough available memory to schedule instance \u0027"},{"line_number":1049,"context_line":"                          \u0027with pagesize %(pagesize)d. Required: \u0027"},{"line_number":1050,"context_line":"                          \u0027%(required)s, available: %(available)s, total: \u0027"},{"line_number":1051,"context_line":"                          \u0027%(total)s.\u0027,"},{"line_number":1052,"context_line":"                          {\u0027required\u0027: instance_cell.memory,"},{"line_number":1053,"context_line":"                           \u0027available\u0027: host_cell.avail_memory,"},{"line_number":1054,"context_line":"                           \u0027total\u0027: host_cell.memory,"},{"line_number":1055,"context_line":"                           \u0027pagesize\u0027: pagesize})"},{"line_number":1056,"context_line":"                return"},{"line_number":1057,"context_line":"        else:"},{"line_number":1058,"context_line":"            # The host does not support explicit page sizes.  Just use the"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_53624d17","line":1055,"range":{"start_line":1043,"start_character":11,"end_line":1055,"end_character":49},"in_reply_to":"5f7c97a3_7cc39b59","updated":"2018-07-24 17:48:31.000000000","message":"I don\u0027t think that\u0027s right.  I\u0027m pretty sure that if a guest has not specified a page size then we will not use hugepages.  (At least for libvirt.)","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"21de42fa0ec25a36caa0575d3690d0a438150970","unresolved":false,"context_lines":[{"line_number":1040,"context_line":"        if host_cell.mempages:"},{"line_number":1041,"context_line":"            # The host supports explicit page sizes.  Use the smallest"},{"line_number":1042,"context_line":"            # available page size."},{"line_number":1043,"context_line":"            pagesize \u003d _get_smallest_pagesize(host_cell)"},{"line_number":1044,"context_line":"            LOG.debug(\u0027No specific pagesize requested for instance, \u0027"},{"line_number":1045,"context_line":"                      \u0027selectionned pagesize: %d\u0027, pagesize)"},{"line_number":1046,"context_line":"            if not host_cell.can_fit_hugepages("},{"line_number":1047,"context_line":"                    pagesize, instance_cell.memory * units.Ki):"},{"line_number":1048,"context_line":"                LOG.debug(\u0027Not enough available memory to schedule instance \u0027"},{"line_number":1049,"context_line":"                          \u0027with pagesize %(pagesize)d. Required: \u0027"},{"line_number":1050,"context_line":"                          \u0027%(required)s, available: %(available)s, total: \u0027"},{"line_number":1051,"context_line":"                          \u0027%(total)s.\u0027,"},{"line_number":1052,"context_line":"                          {\u0027required\u0027: instance_cell.memory,"},{"line_number":1053,"context_line":"                           \u0027available\u0027: host_cell.avail_memory,"},{"line_number":1054,"context_line":"                           \u0027total\u0027: host_cell.memory,"},{"line_number":1055,"context_line":"                           \u0027pagesize\u0027: pagesize})"},{"line_number":1056,"context_line":"                return"},{"line_number":1057,"context_line":"        else:"},{"line_number":1058,"context_line":"            # The host does not support explicit page sizes.  Just use the"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_1554a721","line":1055,"range":{"start_line":1043,"start_character":11,"end_line":1055,"end_character":49},"in_reply_to":"5f7c97a3_a69caf0d","updated":"2018-07-25 11:03:19.000000000","message":"yes sorry i checked the spec again and it states the default value is small if unset not any. ok  this is correct then.","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6a04ac20c8f9c5613aa55037e920b90b602031f5","unresolved":false,"context_lines":[{"line_number":1057,"context_line":"        else:"},{"line_number":1058,"context_line":"            # The host does not support explicit page sizes.  Just use the"},{"line_number":1059,"context_line":"            # amount of memory."},{"line_number":1060,"context_line":"            if host_cell.avail_memory \u003c instance_cell.memory:"},{"line_number":1061,"context_line":"                LOG.debug(\u0027Not enough available memory to schedule instance. \u0027"},{"line_number":1062,"context_line":"                          \u0027Oversubscription is not possible with pinned \u0027"},{"line_number":1063,"context_line":"                          \u0027instances. Required: %(required)s, available: \u0027"},{"line_number":1064,"context_line":"                          \u0027%(available)s, total: %(total)s. \u0027,"},{"line_number":1065,"context_line":"                          {\u0027required\u0027: instance_cell.memory,"},{"line_number":1066,"context_line":"                           \u0027available\u0027: host_cell.avail_memory,"},{"line_number":1067,"context_line":"                           \u0027total\u0027: host_cell.memory})"},{"line_number":1068,"context_line":"                return"},{"line_number":1069,"context_line":""},{"line_number":1070,"context_line":"    if len(instance_cell.cpuset) + cpuset_reserved \u003e len(host_cell.cpuset):"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_1cd067c8","line":1067,"range":{"start_line":1060,"start_character":10,"end_line":1067,"end_character":54},"updated":"2018-07-24 16:19:53.000000000","message":"this is technically not correct.\n\nyou are not allowed to oversubscibe against your self however you can oversubsibe the host upto the allocation ratio.\n\nif you request a numa topoloy that does not imply disabling over subscription of memory.\n\nif you requst huge page then that disables over subsciption as they are memlocked by the kernel and cannot be over subscibed but if we get ot this branch the guest has not requested any page size and since the host does not report any pagesize we know there are no hugepages available so we can oversubscibe in this case.","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"98cd4dbe8fe6025bb8dc57dcd6287b181cf05848","unresolved":false,"context_lines":[{"line_number":1057,"context_line":"        else:"},{"line_number":1058,"context_line":"            # The host does not support explicit page sizes.  Just use the"},{"line_number":1059,"context_line":"            # amount of memory."},{"line_number":1060,"context_line":"            if host_cell.avail_memory \u003c instance_cell.memory:"},{"line_number":1061,"context_line":"                LOG.debug(\u0027Not enough available memory to schedule instance. \u0027"},{"line_number":1062,"context_line":"                          \u0027Oversubscription is not possible with pinned \u0027"},{"line_number":1063,"context_line":"                          \u0027instances. Required: %(required)s, available: \u0027"},{"line_number":1064,"context_line":"                          \u0027%(available)s, total: %(total)s. \u0027,"},{"line_number":1065,"context_line":"                          {\u0027required\u0027: instance_cell.memory,"},{"line_number":1066,"context_line":"                           \u0027available\u0027: host_cell.avail_memory,"},{"line_number":1067,"context_line":"                           \u0027total\u0027: host_cell.memory})"},{"line_number":1068,"context_line":"                return"},{"line_number":1069,"context_line":""},{"line_number":1070,"context_line":"    if len(instance_cell.cpuset) + cpuset_reserved \u003e len(host_cell.cpuset):"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_b359615d","line":1067,"range":{"start_line":1060,"start_character":10,"end_line":1067,"end_character":54},"in_reply_to":"5f7c97a3_1cd067c8","updated":"2018-07-24 17:48:31.000000000","message":"this is an excellent point.  the original check against host_cell.memory (rather than host_cell.avail_memory) was to prevent oversubscribing against yourself.\n\nDo we need another check here against host_cell.avail_memory with the oversubscription ratio?","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"21de42fa0ec25a36caa0575d3690d0a438150970","unresolved":false,"context_lines":[{"line_number":1057,"context_line":"        else:"},{"line_number":1058,"context_line":"            # The host does not support explicit page sizes.  Just use the"},{"line_number":1059,"context_line":"            # amount of memory."},{"line_number":1060,"context_line":"            if host_cell.avail_memory \u003c instance_cell.memory:"},{"line_number":1061,"context_line":"                LOG.debug(\u0027Not enough available memory to schedule instance. \u0027"},{"line_number":1062,"context_line":"                          \u0027Oversubscription is not possible with pinned \u0027"},{"line_number":1063,"context_line":"                          \u0027instances. Required: %(required)s, available: \u0027"},{"line_number":1064,"context_line":"                          \u0027%(available)s, total: %(total)s. \u0027,"},{"line_number":1065,"context_line":"                          {\u0027required\u0027: instance_cell.memory,"},{"line_number":1066,"context_line":"                           \u0027available\u0027: host_cell.avail_memory,"},{"line_number":1067,"context_line":"                           \u0027total\u0027: host_cell.memory})"},{"line_number":1068,"context_line":"                return"},{"line_number":1069,"context_line":""},{"line_number":1070,"context_line":"    if len(instance_cell.cpuset) + cpuset_reserved \u003e len(host_cell.cpuset):"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_f517ab52","line":1067,"range":{"start_line":1060,"start_character":10,"end_line":1067,"end_character":54},"in_reply_to":"5f7c97a3_666c5705","updated":"2018-07-25 11:03:19.000000000","message":"but you are still changing the behavior here\nthe original check was if instance_cell.memory \u003e host_cell.memory: not \nif instance_cell.memory \u003e host_cell.avail_memory:\n\nso if you want to change this behavior then you shoudl do it in a seperate patch.","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c9b529c070b0ffde8d608a55d02f33242d98ff06","unresolved":false,"context_lines":[{"line_number":1057,"context_line":"        else:"},{"line_number":1058,"context_line":"            # The host does not support explicit page sizes.  Just use the"},{"line_number":1059,"context_line":"            # amount of memory."},{"line_number":1060,"context_line":"            if host_cell.avail_memory \u003c instance_cell.memory:"},{"line_number":1061,"context_line":"                LOG.debug(\u0027Not enough available memory to schedule instance. \u0027"},{"line_number":1062,"context_line":"                          \u0027Oversubscription is not possible with pinned \u0027"},{"line_number":1063,"context_line":"                          \u0027instances. Required: %(required)s, available: \u0027"},{"line_number":1064,"context_line":"                          \u0027%(available)s, total: %(total)s. \u0027,"},{"line_number":1065,"context_line":"                          {\u0027required\u0027: instance_cell.memory,"},{"line_number":1066,"context_line":"                           \u0027available\u0027: host_cell.avail_memory,"},{"line_number":1067,"context_line":"                           \u0027total\u0027: host_cell.memory})"},{"line_number":1068,"context_line":"                return"},{"line_number":1069,"context_line":""},{"line_number":1070,"context_line":"    if len(instance_cell.cpuset) + cpuset_reserved \u003e len(host_cell.cpuset):"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_666c5705","line":1067,"range":{"start_line":1060,"start_character":10,"end_line":1067,"end_character":54},"in_reply_to":"5f7c97a3_b359615d","updated":"2018-07-25 07:37:44.000000000","message":"It\u0027s basically one of my point here:\n\n  https://review.openstack.org/#/c/581365/\n\nIt\u0027s under discussion and out of the scope of that one. So I\u0027m not going to change the behavior here.","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"4a57db9004a1a86ebdf0a291ab7e6368f950f6ff","unresolved":false,"context_lines":[{"line_number":1057,"context_line":"        else:"},{"line_number":1058,"context_line":"            # The host does not support explicit page sizes.  Just use the"},{"line_number":1059,"context_line":"            # amount of memory."},{"line_number":1060,"context_line":"            if host_cell.avail_memory \u003c instance_cell.memory:"},{"line_number":1061,"context_line":"                LOG.debug(\u0027Not enough available memory to schedule instance. \u0027"},{"line_number":1062,"context_line":"                          \u0027Oversubscription is not possible with pinned \u0027"},{"line_number":1063,"context_line":"                          \u0027instances. Required: %(required)s, available: \u0027"},{"line_number":1064,"context_line":"                          \u0027%(available)s, total: %(total)s. \u0027,"},{"line_number":1065,"context_line":"                          {\u0027required\u0027: instance_cell.memory,"},{"line_number":1066,"context_line":"                           \u0027available\u0027: host_cell.avail_memory,"},{"line_number":1067,"context_line":"                           \u0027total\u0027: host_cell.memory})"},{"line_number":1068,"context_line":"                return"},{"line_number":1069,"context_line":""},{"line_number":1070,"context_line":"    if len(instance_cell.cpuset) + cpuset_reserved \u003e len(host_cell.cpuset):"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_07fc026f","line":1067,"range":{"start_line":1060,"start_character":10,"end_line":1067,"end_character":54},"in_reply_to":"5f7c97a3_f517ab52","updated":"2018-07-31 13:26:30.000000000","message":"Yes OK, I reverted that part.","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6a04ac20c8f9c5613aa55037e920b90b602031f5","unresolved":false,"context_lines":[{"line_number":1773,"context_line":"    \"\"\"Returns the smallest available page size based o hostcell\"\"\""},{"line_number":1774,"context_line":"    avail_pagesize \u003d [page.size_kb for page in hostcell.mempages]"},{"line_number":1775,"context_line":"    avail_pagesize.sort()"},{"line_number":1776,"context_line":"    return avail_pagesize[0]"},{"line_number":1777,"context_line":""},{"line_number":1778,"context_line":""},{"line_number":1779,"context_line":"def _numa_pagesize_usage_from_cell(hostcell, instancecell, sign):"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_fca48bba","line":1776,"range":{"start_line":1776,"start_character":25,"end_line":1776,"end_character":28},"updated":"2018-07-24 16:19:53.000000000","message":"we likely should retrun the sorted list here instead so we can loop over it as suggested above.","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"21de42fa0ec25a36caa0575d3690d0a438150970","unresolved":false,"context_lines":[{"line_number":1773,"context_line":"    \"\"\"Returns the smallest available page size based o hostcell\"\"\""},{"line_number":1774,"context_line":"    avail_pagesize \u003d [page.size_kb for page in hostcell.mempages]"},{"line_number":1775,"context_line":"    avail_pagesize.sort()"},{"line_number":1776,"context_line":"    return avail_pagesize[0]"},{"line_number":1777,"context_line":""},{"line_number":1778,"context_line":""},{"line_number":1779,"context_line":"def _numa_pagesize_usage_from_cell(hostcell, instancecell, sign):"}],"source_content_type":"text/x-python","patch_set":23,"id":"5f7c97a3_5508df2c","line":1776,"range":{"start_line":1776,"start_character":25,"end_line":1776,"end_character":28},"in_reply_to":"5f7c97a3_fca48bba","updated":"2018-07-25 11:03:19.000000000","message":"this can be ignored since the default is small not any","commit_id":"e9d5c370d45fdf33ac8f004daddc4b0d18169d4b"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"4be50c8b96cd949b6dca43a5153d4f6cd7216fe6","unresolved":false,"context_lines":[{"line_number":1018,"context_line":"    LOG.debug(\u0027Attempting to fit instance cell %(cell)s on host_cell \u0027"},{"line_number":1019,"context_line":"              \u0027%(host_cell)s\u0027, {\u0027cell\u0027: instance_cell, \u0027host_cell\u0027: host_cell})"},{"line_number":1020,"context_line":""},{"line_number":1021,"context_line":"    if \u0027pagesize\u0027 in instance_cell and instance_cell.pagesize:"},{"line_number":1022,"context_line":"        # The instance has requested a page size.  Verify that the requested"},{"line_number":1023,"context_line":"        # size is valid and that there are available pages of that size on the"},{"line_number":1024,"context_line":"        # host."}],"source_content_type":"text/x-python","patch_set":25,"id":"3f79a3b5_be71b246","line":1021,"range":{"start_line":1021,"start_character":7,"end_line":1021,"end_character":34},"updated":"2018-08-13 11:00:42.000000000","message":"If this is an object then pagesize will always be there.","commit_id":"e39f9eb6283ae1130f80262b68bd1ea0c1113281"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"444af005ae6bd710d65e31ac3291e724f8d98781","unresolved":false,"context_lines":[{"line_number":1018,"context_line":"    LOG.debug(\u0027Attempting to fit instance cell %(cell)s on host_cell \u0027"},{"line_number":1019,"context_line":"              \u0027%(host_cell)s\u0027, {\u0027cell\u0027: instance_cell, \u0027host_cell\u0027: host_cell})"},{"line_number":1020,"context_line":""},{"line_number":1021,"context_line":"    if \u0027pagesize\u0027 in instance_cell and instance_cell.pagesize:"},{"line_number":1022,"context_line":"        # The instance has requested a page size.  Verify that the requested"},{"line_number":1023,"context_line":"        # size is valid and that there are available pages of that size on the"},{"line_number":1024,"context_line":"        # host."}],"source_content_type":"text/x-python","patch_set":25,"id":"3f79a3b5_395e1c76","line":1021,"range":{"start_line":1021,"start_character":7,"end_line":1021,"end_character":34},"in_reply_to":"3f79a3b5_be71b246","updated":"2018-08-13 12:02:43.000000000","message":"\u0027attr\u0027 in \u003cobject\u003e is the correct way to tell if a nullable attribute has been set on an object.","commit_id":"e39f9eb6283ae1130f80262b68bd1ea0c1113281"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"8a0d67201e49e3425503934b62e0f969c51e295f","unresolved":false,"context_lines":[{"line_number":1053,"context_line":"                           \u0027available\u0027: host_cell.avail_memory,"},{"line_number":1054,"context_line":"                           \u0027total\u0027: host_cell.memory,"},{"line_number":1055,"context_line":"                           \u0027pagesize\u0027: pagesize})"},{"line_number":1056,"context_line":"                return"},{"line_number":1057,"context_line":"        else:"},{"line_number":1058,"context_line":"            # NOTE (ndipanov): do not allow an instance to overcommit against"},{"line_number":1059,"context_line":"            # itself on any NUMA cell"}],"source_content_type":"text/x-python","patch_set":25,"id":"3f79a3b5_be884bc6","line":1056,"updated":"2018-08-07 14:10:08.000000000","message":"You need to set:\n\n instance_cell.pagesize \u003d pagesize\n\notherwise you\u0027re throwing away the smallest pagesize calculation on line 1043","commit_id":"e39f9eb6283ae1130f80262b68bd1ea0c1113281"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"8a0d67201e49e3425503934b62e0f969c51e295f","unresolved":false,"context_lines":[{"line_number":1767,"context_line":""},{"line_number":1768,"context_line":""},{"line_number":1769,"context_line":"def _get_smallest_pagesize(hostcell):"},{"line_number":1770,"context_line":"    \"\"\"Returns the smallest available page size based o hostcell\"\"\""},{"line_number":1771,"context_line":"    avail_pagesize \u003d [page.size_kb for page in hostcell.mempages]"},{"line_number":1772,"context_line":"    avail_pagesize.sort()"},{"line_number":1773,"context_line":"    return avail_pagesize[0]"}],"source_content_type":"text/x-python","patch_set":25,"id":"3f79a3b5_9e1eafb8","line":1770,"range":{"start_line":1770,"start_character":38,"end_line":1770,"end_character":64},"updated":"2018-08-07 14:10:08.000000000","message":"s/page size based o hostcell/in a host cell/","commit_id":"e39f9eb6283ae1130f80262b68bd1ea0c1113281"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"8a0d67201e49e3425503934b62e0f969c51e295f","unresolved":false,"context_lines":[{"line_number":1774,"context_line":""},{"line_number":1775,"context_line":""},{"line_number":1776,"context_line":"def _numa_pagesize_usage_from_cell(hostcell, instancecell, sign):"},{"line_number":1777,"context_line":"    if \u0027pagesize\u0027 in instancecell and instancecell.pagesize:"},{"line_number":1778,"context_line":"        pagesize \u003d instancecell.pagesize"},{"line_number":1779,"context_line":"    else:"},{"line_number":1780,"context_line":"        pagesize \u003d _get_smallest_pagesize(hostcell)"},{"line_number":1781,"context_line":""},{"line_number":1782,"context_line":"    topo \u003d []"},{"line_number":1783,"context_line":"    for pages in hostcell.mempages:"}],"source_content_type":"text/x-python","patch_set":25,"id":"3f79a3b5_fe6c8309","line":1780,"range":{"start_line":1777,"start_character":0,"end_line":1780,"end_character":51},"updated":"2018-08-07 14:10:08.000000000","message":"you can remove this if you just set instancecell.pagesize \u003d pagesize above on line 1056 (see note above)","commit_id":"e39f9eb6283ae1130f80262b68bd1ea0c1113281"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"444af005ae6bd710d65e31ac3291e724f8d98781","unresolved":false,"context_lines":[{"line_number":1774,"context_line":""},{"line_number":1775,"context_line":""},{"line_number":1776,"context_line":"def _numa_pagesize_usage_from_cell(hostcell, instancecell, sign):"},{"line_number":1777,"context_line":"    if \u0027pagesize\u0027 in instancecell and instancecell.pagesize:"},{"line_number":1778,"context_line":"        pagesize \u003d instancecell.pagesize"},{"line_number":1779,"context_line":"    else:"},{"line_number":1780,"context_line":"        pagesize \u003d _get_smallest_pagesize(hostcell)"},{"line_number":1781,"context_line":""},{"line_number":1782,"context_line":"    topo \u003d []"},{"line_number":1783,"context_line":"    for pages in hostcell.mempages:"}],"source_content_type":"text/x-python","patch_set":25,"id":"3f79a3b5_59f1986a","line":1780,"range":{"start_line":1777,"start_character":0,"end_line":1780,"end_character":51},"in_reply_to":"3f79a3b5_c5b2a194","updated":"2018-08-13 12:02:43.000000000","message":"yeah, I suppose that\u0027s a good point -- being cautious is probably the best approach.","commit_id":"e39f9eb6283ae1130f80262b68bd1ea0c1113281"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"2ba81f463842558a6248e10a1d1ed7a019087c07","unresolved":false,"context_lines":[{"line_number":1774,"context_line":""},{"line_number":1775,"context_line":""},{"line_number":1776,"context_line":"def _numa_pagesize_usage_from_cell(hostcell, instancecell, sign):"},{"line_number":1777,"context_line":"    if \u0027pagesize\u0027 in instancecell and instancecell.pagesize:"},{"line_number":1778,"context_line":"        pagesize \u003d instancecell.pagesize"},{"line_number":1779,"context_line":"    else:"},{"line_number":1780,"context_line":"        pagesize \u003d _get_smallest_pagesize(hostcell)"},{"line_number":1781,"context_line":""},{"line_number":1782,"context_line":"    topo \u003d []"},{"line_number":1783,"context_line":"    for pages in hostcell.mempages:"}],"source_content_type":"text/x-python","patch_set":25,"id":"3f79a3b5_c5b2a194","line":1780,"range":{"start_line":1777,"start_character":0,"end_line":1780,"end_character":51},"in_reply_to":"3f79a3b5_fe6c8309","updated":"2018-08-13 08:33:35.000000000","message":"What you have suggested makes sense, I\u0027m just a bit scary about changing the behavior. Previously when users did not specify page size we kept that field unset.\n\nIn all cases I can\u0027t really remove that part of code right now, since some topologies might be stored in database without that field set. At least I could add a TODO note to say we can remove that code for next release.\n\nWhat is your thinking?","commit_id":"e39f9eb6283ae1130f80262b68bd1ea0c1113281"}]}
