)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"77e3b1e8270aca9a6bdea16784aee645795df866","unresolved":false,"context_lines":[{"line_number":10,"context_line":"ability to control the vCPU topology exposed to guests."},{"line_number":11,"context_line":"This enables them to avoid any of the limitations on"},{"line_number":12,"context_line":"vCPU toplogies that OS vendors place on their projects."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ibb06d2c93ff1579dfdf3faa6d8538c77c8df6e38"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7adec928_ce580f59","line":13,"updated":"2014-05-23 12:34:28.000000000","message":"I\u0027m not sure this text is for the right BP ?","commit_id":"a7f733706f3ef49b9eebc354f7c33927ea920f27"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"c4f99d6050d19880e11885b798c6437dcd215331","unresolved":false,"context_lines":[{"line_number":10,"context_line":"ability to control the vCPU topology exposed to guests."},{"line_number":11,"context_line":"This enables them to avoid any of the limitations on"},{"line_number":12,"context_line":"vCPU toplogies that OS vendors place on their projects."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ibb06d2c93ff1579dfdf3faa6d8538c77c8df6e38"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7adec928_a9cc9d62","line":13,"in_reply_to":"7adec928_ce580f59","updated":"2014-05-23 12:44:44.000000000","message":"Opps, indeed not!","commit_id":"a7f733706f3ef49b9eebc354f7c33927ea920f27"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d27d2d5bab6ae7e902daad4b45c287765bfd34c9","unresolved":false,"context_lines":[{"line_number":12,"context_line":"guest workloads by increasing TLB cache efficiency."},{"line_number":13,"context_line":"It will ensure that the guest has 100% dedicated RAM"},{"line_number":14,"context_line":"that will never be swapped out."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ibb06d2c93ff1579dfdf3faa6d8538c77c8df6e38"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1ae5cdf2_4ca40708","line":15,"updated":"2014-06-25 11:26:20.000000000","message":"Please can you add the blueprint here, just so we get the nice tracking that goes into launchpad.","commit_id":"0fb44ea7dfd937cd0fb9118b70abdaef6d923600"}],"specs/juno/virt-driver-large-pages.rst":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e0b8b759fc9cca33f177608e49d0594dcef17748","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This feature aims to improve the libvirt driver so that it can use large pages"},{"line_number":14,"context_line":"for backing the guest RAM allocation. This will improve the performance of"},{"line_number":15,"context_line":"guest workloads by improves TLB cache efficiency. It will effectively create"},{"line_number":16,"context_line":"the concept of \"dedicated RAM\" guest instances."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7adec928_8aea85aa","line":15,"updated":"2014-05-22 21:36:59.000000000","message":"nit: s/improves/improved/ :)","commit_id":"a7f733706f3ef49b9eebc354f7c33927ea920f27"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"77e3b1e8270aca9a6bdea16784aee645795df866","unresolved":false,"context_lines":[{"line_number":13,"context_line":"This feature aims to improve the libvirt driver so that it can use large pages"},{"line_number":14,"context_line":"for backing the guest RAM allocation. This will improve the performance of"},{"line_number":15,"context_line":"guest workloads by improves TLB cache efficiency. It will effectively create"},{"line_number":16,"context_line":"the concept of \"dedicated RAM\" guest instances."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Problem description"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7adec928_2e35f3f6","line":16,"updated":"2014-05-23 12:34:28.000000000","message":"Not sure I agree that is really does - not setting memory overcommit does that doesn\u0027t it ?","commit_id":"a7f733706f3ef49b9eebc354f7c33927ea920f27"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"c4f99d6050d19880e11885b798c6437dcd215331","unresolved":false,"context_lines":[{"line_number":13,"context_line":"This feature aims to improve the libvirt driver so that it can use large pages"},{"line_number":14,"context_line":"for backing the guest RAM allocation. This will improve the performance of"},{"line_number":15,"context_line":"guest workloads by improves TLB cache efficiency. It will effectively create"},{"line_number":16,"context_line":"the concept of \"dedicated RAM\" guest instances."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Problem description"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7adec928_292fadf7","line":16,"in_reply_to":"7adec928_2e35f3f6","updated":"2014-05-23 12:44:44.000000000","message":"Not setting memory overcommit gives you the illusion of dedicated RAM but it can\u0027t guarantee it, because there is RAM overhead to QEMU that is not captured in the size of the guest RAM which is being used for accounting. For example overhead for I/O backend operations, overhead when doing migration, overhead from VGA adapter, and so on. In highly loaded machines this could be significant enough to make you unexpected over commit and thus swap out guest RAM. \n\nBy using huge pages you have a 100% guarantee that the guest RAM is always going to be present in host RAM.","commit_id":"a7f733706f3ef49b9eebc354f7c33927ea920f27"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"5700bc8bc70a3d4e4364070a1880d3ca481b0148","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"The use of huge pages for backing guests implies that the guest is running with"},{"line_number":30,"context_line":"a dedicated resource allocation. ie the concept of memory overcommit is no"},{"line_number":31,"context_line":"longer possible to provide. This is a tradeoff that many workloads are willing"},{"line_number":32,"context_line":"to make since they require predictable memory access times."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"While large pages are better than small pages, it can\u0027t be assumed that the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7adec928_b80b507c","line":31,"updated":"2014-05-21 14:01:46.000000000","message":"Micro semantics-only nit: technically workloads are not making a tradeoff - they get net gain :) the tradeoff is on the side of cloud utilization.","commit_id":"a7f733706f3ef49b9eebc354f7c33927ea920f27"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"77e3b1e8270aca9a6bdea16784aee645795df866","unresolved":false,"context_lines":[{"line_number":36,"context_line":"size can be better overall than 1 GB page sizes. Also the choice of page size"},{"line_number":37,"context_line":"affects the granularity of guest RAM size. ie a 1.5 GB guest would not be able"},{"line_number":38,"context_line":"to use 1 GB pages since RAM is not a multiple of the page size. Large pages"},{"line_number":39,"context_line":"must typically be reserved on boot of the compute node by the administrator."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Proposed change"},{"line_number":42,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7adec928_6e161b57","line":39,"updated":"2014-05-23 12:34:28.000000000","message":"Can you expand on that last point please - it sounds as if there is some manual operation needed here ?","commit_id":"a7f733706f3ef49b9eebc354f7c33927ea920f27"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"6050bcf84aae52b2d66e40a16a91d34b5ce2b8de","unresolved":false,"context_lines":[{"line_number":36,"context_line":"size can be better overall than 1 GB page sizes. Also the choice of page size"},{"line_number":37,"context_line":"affects the granularity of guest RAM size. ie a 1.5 GB guest would not be able"},{"line_number":38,"context_line":"to use 1 GB pages since RAM is not a multiple of the page size. Large pages"},{"line_number":39,"context_line":"must typically be reserved on boot of the compute node by the administrator."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Proposed change"},{"line_number":42,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7adec928_2b807745","line":39,"in_reply_to":"7adec928_6987f5d7","updated":"2014-05-23 19:39:43.000000000","message":"Ok, so its a one time Admin action then at install - thanks for the clarification","commit_id":"a7f733706f3ef49b9eebc354f7c33927ea920f27"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"c4f99d6050d19880e11885b798c6437dcd215331","unresolved":false,"context_lines":[{"line_number":36,"context_line":"size can be better overall than 1 GB page sizes. Also the choice of page size"},{"line_number":37,"context_line":"affects the granularity of guest RAM size. ie a 1.5 GB guest would not be able"},{"line_number":38,"context_line":"to use 1 GB pages since RAM is not a multiple of the page size. Large pages"},{"line_number":39,"context_line":"must typically be reserved on boot of the compute node by the administrator."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Proposed change"},{"line_number":42,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7adec928_6987f5d7","line":39,"in_reply_to":"7adec928_6e161b57","updated":"2014-05-23 12:44:44.000000000","message":"Currently the admin will have to set a kernel command line boot parameter in the host to reserve some quantity of huge pages.\n\nKernel devs are working to make it possible to reserve any huge pages at runtime, though even then, you\u0027re going to need to do this reservation from the init system at initial bootup. Memory gets too fragmented over time to be able to reliably reserve huge pages at time of use - this is a particularly bad problem with GB sized huge pages.","commit_id":"a7f733706f3ef49b9eebc354f7c33927ea920f27"},{"author":{"_account_id":6932,"name":"Adrian Hoban","email":"adrian.hoban@intel.com","username":"adrian-hoban"},"change_message_id":"7efd41108a95516a8853814f53f50f7bba5a8f08","unresolved":false,"context_lines":[{"line_number":44,"context_line":"The flavour extra specs will be enhanced to support a new parameter"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"* hw_mem:page_size\u003dlarge|small|any|2MB|1GB"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"In absence of any page size setting in the flavour, the current behaviour of"},{"line_number":49,"context_line":"using the small, default, page size will continue. A setting of \u0027large\u0027 says"},{"line_number":50,"context_line":"to only use larger page sizes for guest RAM; \u0027small\u0027 says to only use the small"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3ae8d1ca_1a135167","line":47,"updated":"2014-05-28 12:55:44.000000000","message":"What is the definition of large and of small?\nPerhaps restate as default_large and default_small?","commit_id":"a7f733706f3ef49b9eebc354f7c33927ea920f27"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"0dcdaef1522369cd2db745b85927968d8d2399cb","unresolved":false,"context_lines":[{"line_number":44,"context_line":"The flavour extra specs will be enhanced to support a new parameter"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"* hw_mem:page_size\u003dlarge|small|any|2MB|1GB"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"In absence of any page size setting in the flavour, the current behaviour of"},{"line_number":49,"context_line":"using the small, default, page size will continue. A setting of \u0027large\u0027 says"},{"line_number":50,"context_line":"to only use larger page sizes for guest RAM; \u0027small\u0027 says to only use the small"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ae5cdf2_113a8198","line":47,"in_reply_to":"3ae8d1ca_1a135167","updated":"2014-06-06 12:52:45.000000000","message":"This is described in the paragraph below. Small means use the smallest size pages (ie 4k on x86), while large means use any size that isn\u0027t the smallest (ie 2MB or 1 GB on x86).","commit_id":"a7f733706f3ef49b9eebc354f7c33927ea920f27"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"5700bc8bc70a3d4e4364070a1880d3ca481b0148","unresolved":false,"context_lines":[{"line_number":48,"context_line":"In absence of any page size setting in the flavour, the current behaviour of"},{"line_number":49,"context_line":"using the small, default, page size will continue. A setting of \u0027large\u0027 says"},{"line_number":50,"context_line":"to only use larger page sizes for guest RAM; \u0027small\u0027 says to only use the small"},{"line_number":51,"context_line":"page sizes (and is the default); \u0027any\u0027 means to try to use larger page sizes,"},{"line_number":52,"context_line":"but fallback to using small page sizes if unavailable. Alternatively an"},{"line_number":53,"context_line":"explicit page size can be set to choose between the different large page sizes."},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7adec928_b86c300a","line":51,"updated":"2014-05-21 14:01:46.000000000","message":"Not sure that \u0027any\u0027 conveys properly that it means prefer large - but this is just a usability nit really.","commit_id":"a7f733706f3ef49b9eebc354f7c33927ea920f27"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"0dcdaef1522369cd2db745b85927968d8d2399cb","unresolved":false,"context_lines":[{"line_number":48,"context_line":"In absence of any page size setting in the flavour, the current behaviour of"},{"line_number":49,"context_line":"using the small, default, page size will continue. A setting of \u0027large\u0027 says"},{"line_number":50,"context_line":"to only use larger page sizes for guest RAM; \u0027small\u0027 says to only use the small"},{"line_number":51,"context_line":"page sizes (and is the default); \u0027any\u0027 means to try to use larger page sizes,"},{"line_number":52,"context_line":"but fallback to using small page sizes if unavailable. Alternatively an"},{"line_number":53,"context_line":"explicit page size can be set to choose between the different large page sizes."},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ae5cdf2_1161a1a8","line":51,"in_reply_to":"7adec928_b86c300a","updated":"2014-06-06 12:52:45.000000000","message":"I should re-word this - i mean for \u0027any\u0027 to imply an arbitrary policy decided by the compute driver. The libvirt compute driver would define its arbitrary policy to be to try large pages first.","commit_id":"a7f733706f3ef49b9eebc354f7c33927ea920f27"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e0b8b759fc9cca33f177608e49d0594dcef17748","unresolved":false,"context_lines":[{"line_number":61,"context_line":"The libvirt driver will be enhanced to report on huge page availability per"},{"line_number":62,"context_line":"NUMA node, building on previously added NUMA topology reporting."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"The schedular will be enhanced to take account of the page size setting on the"},{"line_number":65,"context_line":"flavour and pick hosts which have sufficient huge pages available when"},{"line_number":66,"context_line":"scheduling the instance. Conversely if huge pages are not requested, then the"},{"line_number":67,"context_line":"scheduler needs to avoid placing the instance on a host which has pre-reserved"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7adec928_8aeb6577","line":64,"updated":"2014-05-22 21:36:59.000000000","message":"s/schedular/scheduler/","commit_id":"a7f733706f3ef49b9eebc354f7c33927ea920f27"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"3d45396638c2cdff31ac4b3da9199d646c7b3ef3","unresolved":false,"context_lines":[{"line_number":66,"context_line":"scheduling the instance. Conversely if huge pages are not requested, then the"},{"line_number":67,"context_line":"scheduler needs to avoid placing the instance on a host which has pre-reserved"},{"line_number":68,"context_line":"huge pages."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Alternatives"},{"line_number":71,"context_line":"------------"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3ae8d1ca_dfbd186a","line":69,"updated":"2014-05-29 13:36:27.000000000","message":"From the deployer impact section it sounds as if you intend to implement the scheduler filter to look for an aggregate with specific metadata properties. \n\nI don\u0027t think you can use the existing AggregateInstanceExtraSpecsFilter, as that requires an exact match on all extra_specs values, and doesn\u0027t exclude instances without any extra_specs values.\n\nSo will this be a new filter, and if so can you make that explicit here please, and include details of the metadata keys and values that will be used.","commit_id":"a7f733706f3ef49b9eebc354f7c33927ea920f27"},{"author":{"_account_id":6932,"name":"Adrian Hoban","email":"adrian.hoban@intel.com","username":"adrian-hoban"},"change_message_id":"7efd41108a95516a8853814f53f50f7bba5a8f08","unresolved":false,"context_lines":[{"line_number":76,"context_line":"making it increasingly hard to find contiguous blocks of RAM to use for large"},{"line_number":77,"context_line":"pages. This makes transparent huge pages impractical for use with 1 GB page"},{"line_number":78,"context_line":"sizes. The opportunistic approach also means that users do not have any hard"},{"line_number":79,"context_line":"guarantee that their instance will be backed by huge pages."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Data model impact"},{"line_number":82,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3ae8d1ca_753706e4","line":79,"updated":"2014-05-28 12:55:44.000000000","message":"This is the key reason it is typically not leveraged for NFV configurations.","commit_id":"a7f733706f3ef49b9eebc354f7c33927ea920f27"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"5700bc8bc70a3d4e4364070a1880d3ca481b0148","unresolved":false,"context_lines":[{"line_number":84,"context_line":"No impact."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"The new data items are stored in the existing flavour extra specs data model"},{"line_number":87,"context_line":"and in the host state metadata model."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"REST API impact"},{"line_number":90,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7adec928_1808c42c","line":87,"updated":"2014-05-21 14:01:46.000000000","message":"Same comment like on the NUMA doc - this is really very integral to the host, maybe less so than NUMA since it can be configured at boot, but still - why not add columns for this?","commit_id":"a7f733706f3ef49b9eebc354f7c33927ea920f27"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"6050bcf84aae52b2d66e40a16a91d34b5ce2b8de","unresolved":false,"context_lines":[{"line_number":84,"context_line":"No impact."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"The new data items are stored in the existing flavour extra specs data model"},{"line_number":87,"context_line":"and in the host state metadata model."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"REST API impact"},{"line_number":90,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7adec928_a801ed07","line":87,"in_reply_to":"7adec928_1808c42c","updated":"2014-05-23 19:39:43.000000000","message":"Adding extra columns to track each new resource we come up with becomes a very slow think to merge into the system.  The Extensible Resource Tracker BP is intended to overcome this \n\nhttps://review.openstack.org/#/c/86050/","commit_id":"a7f733706f3ef49b9eebc354f7c33927ea920f27"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"0dcdaef1522369cd2db745b85927968d8d2399cb","unresolved":false,"context_lines":[{"line_number":84,"context_line":"No impact."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"The new data items are stored in the existing flavour extra specs data model"},{"line_number":87,"context_line":"and in the host state metadata model."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"REST API impact"},{"line_number":90,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ae5cdf2_f16515af","line":87,"in_reply_to":"7adec928_a801ed07","updated":"2014-06-06 12:52:45.000000000","message":"Yep, I\u0027ll outline how this can be done with extensible resource tracker.","commit_id":"a7f733706f3ef49b9eebc354f7c33927ea920f27"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"6050bcf84aae52b2d66e40a16a91d34b5ce2b8de","unresolved":false,"context_lines":[{"line_number":170,"context_line":"  a blocker to supporting huge pages in Nova, since it can use the more general"},{"line_number":171,"context_line":"  huge page support in libvirt, however, the performance benefits won\u0027t be"},{"line_number":172,"context_line":"  fully realized until per-NUMA node huge page allocation can be done."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"Testing"},{"line_number":175,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":176,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7adec928_8b626bd6","line":173,"updated":"2014-05-23 19:39:43.000000000","message":"Since you need to keep extra data on the state of each compute node, and there is other work underway to isolate the use of the of that data to the scheduler, I\u0027d suggest making this dependant on the Extensible Resource Tracker (which is already approved as a BP) so that your work can stay independant from the DB\n\nhttps://blueprints.launchpad.net/nova/+spec/extensible-resource-tracking","commit_id":"a7f733706f3ef49b9eebc354f7c33927ea920f27"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"235760f25d6127e0ff2fc0e84bf18c9c025d2950","unresolved":false,"context_lines":[{"line_number":72,"context_line":"the use of large pages would only be honoured if the flavour already had a"},{"line_number":73,"context_line":"policy or \u0027large\u0027 or \u0027any\u0027. ie if the flavour said \u0027small\u0027, or a specific"},{"line_number":74,"context_line":"numeric page size, the image would not be permitted to override this to access"},{"line_number":75,"context_line":"other large page sizes."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"The libvirt driver will be enhanced to honour this parameter when configuring"},{"line_number":78,"context_line":"the guest RAM allocation policy. This will effectively introduce the concept"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_cce320a2","line":75,"updated":"2014-06-06 13:09:38.000000000","message":"Would it be better to return an error in the API if there is a mis-match between image metadata and an explict flavor setting ?\n\n Feels that would be cleaner that in effect silently ignoring the image setting.","commit_id":"c4ab1157c623291a5a7a9070cd5d0352faf07aa7"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"f2189c4542482d050fe7d43de4b61d7a6a6859e7","unresolved":false,"context_lines":[{"line_number":72,"context_line":"the use of large pages would only be honoured if the flavour already had a"},{"line_number":73,"context_line":"policy or \u0027large\u0027 or \u0027any\u0027. ie if the flavour said \u0027small\u0027, or a specific"},{"line_number":74,"context_line":"numeric page size, the image would not be permitted to override this to access"},{"line_number":75,"context_line":"other large page sizes."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"The libvirt driver will be enhanced to honour this parameter when configuring"},{"line_number":78,"context_line":"the guest RAM allocation policy. This will effectively introduce the concept"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_c71bfb70","line":75,"in_reply_to":"1ae5cdf2_cce320a2","updated":"2014-06-06 13:14:24.000000000","message":"Yep, returning an error is probably a good idea","commit_id":"c4ab1157c623291a5a7a9070cd5d0352faf07aa7"},{"author":{"_account_id":11647,"name":"Przemyslaw Czesnowicz","email":"przemyslaw.czesnowicz@intel.com","username":"pczesno"},"change_message_id":"8b99b6f78ca5f51f95436e3f732536b4f6d0994f","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"The schedular will be enhanced to take account of the page size setting on the"},{"line_number":87,"context_line":"flavour and pick hosts which have sufficient large pages available when"},{"line_number":88,"context_line":"scheduling the instance. Conversely if large pages are not requested, then the"},{"line_number":89,"context_line":"scheduler needs to avoid placing the instance on a host which has pre-reserved"},{"line_number":90,"context_line":"large pages."},{"line_number":91,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_50c3d537","line":88,"updated":"2014-06-17 14:31:54.000000000","message":"Also vm_mem % hugepage_size \u003d\u003d 0 otherwise qemu will silently fallback to using \"normal\" memory. There should be an error message if requested memory size is not aligned with requested/available hugepage size.","commit_id":"c4ab1157c623291a5a7a9070cd5d0352faf07aa7"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"235760f25d6127e0ff2fc0e84bf18c9c025d2950","unresolved":false,"context_lines":[{"line_number":88,"context_line":"scheduling the instance. Conversely if large pages are not requested, then the"},{"line_number":89,"context_line":"scheduler needs to avoid placing the instance on a host which has pre-reserved"},{"line_number":90,"context_line":"large pages."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Alternatives"},{"line_number":93,"context_line":"------------"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_8cb2f891","line":91,"updated":"2014-06-06 13:09:38.000000000","message":"As before I\u0027d like to see more specifics on the scheduler changes here - this reads like a very good coverage of the libvirt layer, but we also need to know:\n\n- How will the page size data be sent back to the scheduler (list of sizes and counts, etc) ?\n\nWill this be a new filter, and if so:\n- what will it be called\n- How will it react to the \"small,large,any\" values (will there be logic here to say what page sizes returned by a host map to \"small\", etc","commit_id":"c4ab1157c623291a5a7a9070cd5d0352faf07aa7"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"f2189c4542482d050fe7d43de4b61d7a6a6859e7","unresolved":false,"context_lines":[{"line_number":88,"context_line":"scheduling the instance. Conversely if large pages are not requested, then the"},{"line_number":89,"context_line":"scheduler needs to avoid placing the instance on a host which has pre-reserved"},{"line_number":90,"context_line":"large pages."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Alternatives"},{"line_number":93,"context_line":"------------"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_c7605bd1","line":91,"in_reply_to":"1ae5cdf2_8cb2f891","updated":"2014-06-06 13:14:24.000000000","message":"The data model section shows what information will be provided to the scheduler and yes it is a list of sizes, the total amount and available count.\n\nSince we\u0027ll return a list of page sizes with counts, the filter can see which is the smallest page size returned.\n\nThis is mostly light on schedular info, since I\u0027ll be deferring that side of the implementation to ndiaponov to do, as he has more knowledge here than me.","commit_id":"c4ab1157c623291a5a7a9070cd5d0352faf07aa7"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"0da7b6794639e0b6ec133767faa93e6469d82f61","unresolved":false,"context_lines":[{"line_number":88,"context_line":"scheduling the instance. Conversely if large pages are not requested, then the"},{"line_number":89,"context_line":"scheduler needs to avoid placing the instance on a host which has pre-reserved"},{"line_number":90,"context_line":"large pages."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Alternatives"},{"line_number":93,"context_line":"------------"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_07722ce3","line":91,"in_reply_to":"1ae5cdf2_c7605bd1","updated":"2014-06-16 12:27:41.000000000","message":"Can you get ndiaponov to add the details here then please ?\n\nIts fine for a BP to be implemented by a team of people, but I think the spec should be a single document rather that a set of separate specs - esp when all parts are needed for the implementation.","commit_id":"c4ab1157c623291a5a7a9070cd5d0352faf07aa7"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"235760f25d6127e0ff2fc0e84bf18c9c025d2950","unresolved":false,"context_lines":[{"line_number":105,"context_line":"-----------------"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"The previously added data in the host state structure for reporting NUMA"},{"line_number":108,"context_line":"topology would be enhanced to further include information on page size"},{"line_number":109,"context_line":"availability per node. So it would then look like"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_ec7a9cb8","line":108,"updated":"2014-06-06 13:09:38.000000000","message":"Does this need to be dependent on the NUMA tolplogy BP - it feels like they could be kept independent ?","commit_id":"c4ab1157c623291a5a7a9070cd5d0352faf07aa7"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"0da7b6794639e0b6ec133767faa93e6469d82f61","unresolved":false,"context_lines":[{"line_number":105,"context_line":"-----------------"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"The previously added data in the host state structure for reporting NUMA"},{"line_number":108,"context_line":"topology would be enhanced to further include information on page size"},{"line_number":109,"context_line":"availability per node. So it would then look like"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_c20cb23e","line":108,"in_reply_to":"1ae5cdf2_a737cfe1","updated":"2014-06-16 12:27:41.000000000","message":"Thanks for the clarification - can you capture that reason in the dependency section please, and make the change for this spec depend on the NUMA one then please ?","commit_id":"c4ab1157c623291a5a7a9070cd5d0352faf07aa7"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"f2189c4542482d050fe7d43de4b61d7a6a6859e7","unresolved":false,"context_lines":[{"line_number":105,"context_line":"-----------------"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"The previously added data in the host state structure for reporting NUMA"},{"line_number":108,"context_line":"topology would be enhanced to further include information on page size"},{"line_number":109,"context_line":"availability per node. So it would then look like"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_a737cfe1","line":108,"in_reply_to":"1ae5cdf2_ec7a9cb8","updated":"2014-06-06 13:14:24.000000000","message":"Yes, it does need to be dependant, since we need to track the large page availability per NUMA node, as we don\u0027t want to give guests a set of large pages from random NUMA nodes - we must keep locality in order to benefit from the performance improvements that large pages bring.","commit_id":"c4ab1157c623291a5a7a9070cd5d0352faf07aa7"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"398d47c8b232168647c569becdb31f73d96ff807","unresolved":false,"context_lines":[{"line_number":88,"context_line":"the guest RAM allocation policy. This will effectively introduce the concept"},{"line_number":89,"context_line":"of a \"dedicated memory\" guest, since large pages must be 1-to-1 associated with"},{"line_number":90,"context_line":"guests - there\u0027s not facility to over commit by allowing one large page to be"},{"line_number":91,"context_line":"used with multiple guests or to swap large pages."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"The libvirt driver will be enhanced to report on large page availability per"},{"line_number":94,"context_line":"NUMA node, building on previously added NUMA topology reporting."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_07bb23e5","line":91,"updated":"2014-06-23 03:42:23.000000000","message":"Then it\u0027s questionable why the flavo(u)r should expose the details to the user (even if an administrative, flavour-creating user) in the way you\u0027ve proposed.  From an end user perspective maybe it\u0027s simpler to have a \u0027dedicated memory\u0027 option and leave the hypervisor to implement it however, or a set of grades of performance, rather than exposing something that is very specific to architecture and quite honestly doesn\u0027t even come in an ordered list?","commit_id":"e7dd16147ed5d6ed58aef693e4b39def195f013b"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"c43d3ad49ebda217ff6f6773ad9c0a5ee8c48cd8","unresolved":false,"context_lines":[{"line_number":88,"context_line":"the guest RAM allocation policy. This will effectively introduce the concept"},{"line_number":89,"context_line":"of a \"dedicated memory\" guest, since large pages must be 1-to-1 associated with"},{"line_number":90,"context_line":"guests - there\u0027s not facility to over commit by allowing one large page to be"},{"line_number":91,"context_line":"used with multiple guests or to swap large pages."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"The libvirt driver will be enhanced to report on large page availability per"},{"line_number":94,"context_line":"NUMA node, building on previously added NUMA topology reporting."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_d66b93b7","line":91,"in_reply_to":"1ae5cdf2_07bb23e5","updated":"2014-06-23 16:41:01.000000000","message":"The problem with trying to implement high level policies is that there are a great many different policies people may wish to utilize. If the Nova virt driver hardcodes some fixed set of policies there are inevitably going to be use cases that are not well catered for.  It also creates problems for upgrades because if we want to take advantage of some new hardware feature in an existing policy we risk causing regressions in behaviour for existing deployments using those policies. So anytime any new feature was introduced we\u0027d have to create yet more hardcoded policies for them (\"very dedicated memory\", \"super dedicatd memory\" and so on). This  quickly becomes silly. Using the flavour to define the policy solves the upgrade problem trivially and also avoids the need for us to imagine all possible policies ahead of time, by letting downstream admins customize things as they require.","commit_id":"e7dd16147ed5d6ed58aef693e4b39def195f013b"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"398d47c8b232168647c569becdb31f73d96ff807","unresolved":false,"context_lines":[{"line_number":101,"context_line":"new filter that is implemented as part of the NUMA topology blueprint. This"},{"line_number":102,"context_line":"involves altering the logic done in that blueprint, so that instead of just"},{"line_number":103,"context_line":"looking at free memory in each NUMA node, it instead looks at the free page"},{"line_number":104,"context_line":"count for the desired page size."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"As illustrated later in this document each host will be reporting on all"},{"line_number":107,"context_line":"page sizes available and this information will be available to the schedular."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_47a8cb8b","line":104,"updated":"2014-06-23 03:42:23.000000000","message":"Hm, torn here - in SRIOV the same problem exists (\u0027avoid allocating to machines with SRIOV functions to spare because they might become unavailable when people need them\u0027) but I believe scheduler functionality stood at \u0027we know we need it and we\u0027ll add it later\u0027.  For the filter scheduler it can be a separate filter to exclude hosts with huge pages, which can then be independently added; with a solver scheduler more flexibility is possible.  I wouldn\u0027t bind yourself to implementing this to fulfil the spec, or to implementing it in precisely the described way.  Potentially you could have another spec for \u0027save the good pages\u0027.","commit_id":"e7dd16147ed5d6ed58aef693e4b39def195f013b"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"c43d3ad49ebda217ff6f6773ad9c0a5ee8c48cd8","unresolved":false,"context_lines":[{"line_number":101,"context_line":"new filter that is implemented as part of the NUMA topology blueprint. This"},{"line_number":102,"context_line":"involves altering the logic done in that blueprint, so that instead of just"},{"line_number":103,"context_line":"looking at free memory in each NUMA node, it instead looks at the free page"},{"line_number":104,"context_line":"count for the desired page size."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"As illustrated later in this document each host will be reporting on all"},{"line_number":107,"context_line":"page sizes available and this information will be available to the schedular."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_76b39f4d","line":104,"in_reply_to":"1ae5cdf2_47a8cb8b","updated":"2014-06-23 16:41:01.000000000","message":"I don\u0027t view the specs as a firm commitment to absolutely implement things in a specific way. Rather they are an educated upfront guess at what we\u0027re most likely todo. If we come up with better ideas during the course of implementation we\u0027ll certainly explore those.","commit_id":"e7dd16147ed5d6ed58aef693e4b39def195f013b"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"398d47c8b232168647c569becdb31f73d96ff807","unresolved":false,"context_lines":[{"line_number":209,"context_line":"* hw_numa_node1_mempagetotal1073741824\u003d7"},{"line_number":210,"context_line":"* hw_numa_node1_mempageavail1073741824\u003d2"},{"line_number":211,"context_line":"* hw_numa_node1_distance_node0\u003d20"},{"line_number":212,"context_line":"* hw_numa_node1_distance_node1\u003d10"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"REST API impact"},{"line_number":215,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_07896325","line":212,"updated":"2014-06-23 03:42:23.000000000","message":"I\u0027m not saying there\u0027s an alternative, but: ew!","commit_id":"e7dd16147ed5d6ed58aef693e4b39def195f013b"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"c43d3ad49ebda217ff6f6773ad9c0a5ee8c48cd8","unresolved":false,"context_lines":[{"line_number":209,"context_line":"* hw_numa_node1_mempagetotal1073741824\u003d7"},{"line_number":210,"context_line":"* hw_numa_node1_mempageavail1073741824\u003d2"},{"line_number":211,"context_line":"* hw_numa_node1_distance_node0\u003d20"},{"line_number":212,"context_line":"* hw_numa_node1_distance_node1\u003d10"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"REST API impact"},{"line_number":215,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_f6f5efed","line":212,"in_reply_to":"1ae5cdf2_07896325","updated":"2014-06-23 16:41:01.000000000","message":"The flattened structure is chosen for efficiency, since it lets you represent the entire info set as a simple (string, integer) pairs which can be much more efficiently bulk-queried from the database directly using SQL than a deeply nested JSON blob which has to be extracted \u0026 parsed for each host.","commit_id":"e7dd16147ed5d6ed58aef693e4b39def195f013b"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"256cdfca475778d444bf60069122446e1a88779e","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Virt driver large page allocation for guest RAM"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/virt-driver-large-pages"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_46dce846","line":8,"updated":"2014-06-25 10:44:54.000000000","message":"I feel like the title of this one should be \"Libvirt driver large page...\". Its not clear from the title or bp name that this is libvirt specific.","commit_id":"0fb44ea7dfd937cd0fb9118b70abdaef6d923600"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"a9b7e1fafd2d4efb7392213e82dd0d5e1bc21aba","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Virt driver large page allocation for guest RAM"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/virt-driver-large-pages"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_2697dcec","line":8,"in_reply_to":"1ae5cdf2_46dce846","updated":"2014-06-25 10:58:11.000000000","message":"FWIW, with all the 4 blueprints I\u0027ve explicitly used \u0027Virt\u0027 rather than \u0027libvirt\u0027 because I wanted to emphasize that although I\u0027m only doing an implementation for libvirt, the design is intended to be applicable enough that other virt drivers could implement it later if desired.","commit_id":"0fb44ea7dfd937cd0fb9118b70abdaef6d923600"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"256cdfca475778d444bf60069122446e1a88779e","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Although it is theoretically possible to reserve large pages on the fly, after"},{"line_number":42,"context_line":"a host has been booted for a period of time, physical memory will have become"},{"line_number":43,"context_line":"very fragmented Large pages. This means that even if the host has lots of free"},{"line_number":44,"context_line":"memory, it may be unable to find contiguous chunks required to provide large"},{"line_number":45,"context_line":"pages. This is a particular problem for 1 GB sized pages. To deal with this"},{"line_number":46,"context_line":"problem, it is usual practice to reserve all required large pages upfront at"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_867a7023","line":43,"updated":"2014-06-25 10:44:54.000000000","message":"Are there some words missing here in the part \"very fragmented Large pages\"? Perhaps something like \"very fragmented, limiting the availability of large pages\"?","commit_id":"0fb44ea7dfd937cd0fb9118b70abdaef6d923600"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"a9b7e1fafd2d4efb7392213e82dd0d5e1bc21aba","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Although it is theoretically possible to reserve large pages on the fly, after"},{"line_number":42,"context_line":"a host has been booted for a period of time, physical memory will have become"},{"line_number":43,"context_line":"very fragmented Large pages. This means that even if the host has lots of free"},{"line_number":44,"context_line":"memory, it may be unable to find contiguous chunks required to provide large"},{"line_number":45,"context_line":"pages. This is a particular problem for 1 GB sized pages. To deal with this"},{"line_number":46,"context_line":"problem, it is usual practice to reserve all required large pages upfront at"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_c691d8f2","line":43,"in_reply_to":"1ae5cdf2_867a7023","updated":"2014-06-25 10:58:11.000000000","message":"Opps, yes, editting screw up.","commit_id":"0fb44ea7dfd937cd0fb9118b70abdaef6d923600"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"256cdfca475778d444bf60069122446e1a88779e","unresolved":false,"context_lines":[{"line_number":46,"context_line":"problem, it is usual practice to reserve all required large pages upfront at"},{"line_number":47,"context_line":"host boot time, by specifying a reservation count on the kernel command line"},{"line_number":48,"context_line":"of the host. This would be a one-time setup task done when deploying new"},{"line_number":49,"context_line":"compute node hosts."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Proposed change"},{"line_number":52,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_86cc308c","line":49,"updated":"2014-06-25 10:44:54.000000000","message":"This is an awesome intro. Thanks.","commit_id":"0fb44ea7dfd937cd0fb9118b70abdaef6d923600"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"4ed1af755ed9e592b0a32747a7c4879257f935ee","unresolved":false,"context_lines":[{"line_number":74,"context_line":"numeric page size, the image would not be permitted to override this to access"},{"line_number":75,"context_line":"other large page sizes. Such invalid override in the image would result in"},{"line_number":76,"context_line":"an exception being raised and the attempt to boot the instance resulting in"},{"line_number":77,"context_line":"an error."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"If the flavor memory size is not a multiple of the specified huge page size"},{"line_number":80,"context_line":"this would be considered an error which would cause the instance to fail to"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_6b460d7d","line":77,"updated":"2014-06-25 10:47:30.000000000","message":"Can you make it clear please that this will be detected in the API  and result in the request being rejected.   Also need to update the REST API impact section to describe this additional error case.","commit_id":"0fb44ea7dfd937cd0fb9118b70abdaef6d923600"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"a9b7e1fafd2d4efb7392213e82dd0d5e1bc21aba","unresolved":false,"context_lines":[{"line_number":74,"context_line":"numeric page size, the image would not be permitted to override this to access"},{"line_number":75,"context_line":"other large page sizes. Such invalid override in the image would result in"},{"line_number":76,"context_line":"an exception being raised and the attempt to boot the instance resulting in"},{"line_number":77,"context_line":"an error."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"If the flavor memory size is not a multiple of the specified huge page size"},{"line_number":80,"context_line":"this would be considered an error which would cause the instance to fail to"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_867510ce","line":77,"in_reply_to":"1ae5cdf2_6b460d7d","updated":"2014-06-25 10:58:11.000000000","message":"I hadn\u0027t intended to check it in the API initially but that is a doable enhancement.","commit_id":"0fb44ea7dfd937cd0fb9118b70abdaef6d923600"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"13c0e3b8bf0159c48aa0d98698fcbdf4ca58e019","unresolved":false,"context_lines":[{"line_number":93,"context_line":"The libvirt driver will be enhanced to report on large page availability per"},{"line_number":94,"context_line":"NUMA node, building on previously added NUMA topology reporting."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"The schedular will be enhanced to take account of the page size setting on the"},{"line_number":97,"context_line":"flavour and pick hosts which have sufficient large pages available when"},{"line_number":98,"context_line":"scheduling the instance. Conversely if large pages are not requested, then the"},{"line_number":99,"context_line":"scheduler needs to avoid placing the instance on a host which has pre-reserved"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_b4c6ad66","line":96,"updated":"2014-06-25 13:50:02.000000000","message":"nit: scheduler","commit_id":"0fb44ea7dfd937cd0fb9118b70abdaef6d923600"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"4ed1af755ed9e592b0a32747a7c4879257f935ee","unresolved":false,"context_lines":[{"line_number":107,"context_line":"page sizes available and this information will be available to the schedular."},{"line_number":108,"context_line":"So when it interprets \u0027small\u0027, it will consider the smallest page size"},{"line_number":109,"context_line":"reported by the compute node. Conversely when intepreting \u0027large\u0027 it will"},{"line_number":110,"context_line":"consider any page size except the smallest one. It will also have to consider"},{"line_number":111,"context_line":"whether the page size is a multiple of the flavor memory size. If the instance"},{"line_number":112,"context_line":"is using multiple NUMA nodes, it will have to consider whether the RAM in each"},{"line_number":113,"context_line":"guest node is a multiple of the page size, rather than the total memory size."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_06cf40b4","line":110,"updated":"2014-06-25 10:47:30.000000000","message":"Is it possible that this will lead to \"small\" and \"large\" meaning different things on different hosts (i.e could some hosts have 4k as their smallest page and some 8k) - and if so does that cause a problem ?","commit_id":"0fb44ea7dfd937cd0fb9118b70abdaef6d923600"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"a9b7e1fafd2d4efb7392213e82dd0d5e1bc21aba","unresolved":false,"context_lines":[{"line_number":107,"context_line":"page sizes available and this information will be available to the schedular."},{"line_number":108,"context_line":"So when it interprets \u0027small\u0027, it will consider the smallest page size"},{"line_number":109,"context_line":"reported by the compute node. Conversely when intepreting \u0027large\u0027 it will"},{"line_number":110,"context_line":"consider any page size except the smallest one. It will also have to consider"},{"line_number":111,"context_line":"whether the page size is a multiple of the flavor memory size. If the instance"},{"line_number":112,"context_line":"is using multiple NUMA nodes, it will have to consider whether the RAM in each"},{"line_number":113,"context_line":"guest node is a multiple of the page size, rather than the total memory size."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_3101d404","line":110,"in_reply_to":"1ae5cdf2_06cf40b4","updated":"2014-06-25 10:58:11.000000000","message":"Yes, it is certainly possible that the meaning of \u0027small\u0027 and \u0027large\u0027 would be different on different hosts. The varying meaning of \u0027small\u0027 is unlikely to ever be a problem - it\u0027ll only change across architectures eg x86 vs ppc. The varying meaning of \u0027large\u0027 may be a problem depending on what workloads the guest OS is using. In the common case, I think that most guest workloads won\u0027t care about the particular large page size - this is just a useful optimization  that flavour admins will turn on to provide a non-overcommit low latency guest type.  For the NFV use case, however, the varying meaning of \u0027large\u0027 will definitely be a problem, hence why we also allow for a specific size to be requested. This is a fairly niche use case in the big picture though, so I believe a setting of \u0027large\u0027 has value in general.","commit_id":"0fb44ea7dfd937cd0fb9118b70abdaef6d923600"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"4ed1af755ed9e592b0a32747a7c4879257f935ee","unresolved":false,"context_lines":[{"line_number":191,"context_line":"* hw_numa_node0_cpus\u003d4"},{"line_number":192,"context_line":"* hw_numa_node0_memtotal\u003d10737418240"},{"line_number":193,"context_line":"* hw_numa_node0_memavail\u003d3221225472"},{"line_number":194,"context_line":"* hw_numa_node0_mempagetotal4096\u003d262144"},{"line_number":195,"context_line":"* hw_numa_node0_mempageavail4096\u003d262144"},{"line_number":196,"context_line":"* hw_numa_node0_mempagetotal2097152\u003d1024"},{"line_number":197,"context_line":"* hw_numa_node0_mempageavail2097152\u003d1024"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_86e5100c","line":194,"updated":"2014-06-25 10:47:30.000000000","message":"Since the scheduler has to parse the page size out of these wouldn\u0027t it be better to have some more structure in the name such as .\".._mempage_total_4096\"  ?","commit_id":"0fb44ea7dfd937cd0fb9118b70abdaef6d923600"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"a9b7e1fafd2d4efb7392213e82dd0d5e1bc21aba","unresolved":false,"context_lines":[{"line_number":191,"context_line":"* hw_numa_node0_cpus\u003d4"},{"line_number":192,"context_line":"* hw_numa_node0_memtotal\u003d10737418240"},{"line_number":193,"context_line":"* hw_numa_node0_memavail\u003d3221225472"},{"line_number":194,"context_line":"* hw_numa_node0_mempagetotal4096\u003d262144"},{"line_number":195,"context_line":"* hw_numa_node0_mempageavail4096\u003d262144"},{"line_number":196,"context_line":"* hw_numa_node0_mempagetotal2097152\u003d1024"},{"line_number":197,"context_line":"* hw_numa_node0_mempageavail2097152\u003d1024"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_3128f484","line":194,"in_reply_to":"1ae5cdf2_86e5100c","updated":"2014-06-25 10:58:11.000000000","message":"I wasn\u0027t actually expecting the scheduler to be parsing these strings. Rather the scheduler will decide what page size it wishes to look for and just query for complete matching strings. I could put extra underscores in though to make it more readable.","commit_id":"0fb44ea7dfd937cd0fb9118b70abdaef6d923600"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"256cdfca475778d444bf60069122446e1a88779e","unresolved":false,"context_lines":[{"line_number":251,"context_line":"The cloud administrator will gain the ability to set large page policy on the"},{"line_number":252,"context_line":"flavours they configured. The administrator will also have to configure their"},{"line_number":253,"context_line":"compute hosts to reserve large pages at boot time, and place those hosts into a"},{"line_number":254,"context_line":"group using aggregates."},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"Developer impact"},{"line_number":257,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_e6bdf4b2","line":254,"updated":"2014-06-25 10:44:54.000000000","message":"Do we need to expose a way for admins to see the current large page state of compute nodes as reported by the driver?","commit_id":"0fb44ea7dfd937cd0fb9118b70abdaef6d923600"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"a9b7e1fafd2d4efb7392213e82dd0d5e1bc21aba","unresolved":false,"context_lines":[{"line_number":251,"context_line":"The cloud administrator will gain the ability to set large page policy on the"},{"line_number":252,"context_line":"flavours they configured. The administrator will also have to configure their"},{"line_number":253,"context_line":"compute hosts to reserve large pages at boot time, and place those hosts into a"},{"line_number":254,"context_line":"group using aggregates."},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"Developer impact"},{"line_number":257,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_d1499061","line":254,"in_reply_to":"1ae5cdf2_e6bdf4b2","updated":"2014-06-25 10:58:11.000000000","message":"I\u0027m honestly not sure at this point. I guess it could be useful for admins looking to do capacity planning. We could probably consider that a piece of follow-on work to do afterwards though.","commit_id":"0fb44ea7dfd937cd0fb9118b70abdaef6d923600"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"13c0e3b8bf0159c48aa0d98698fcbdf4ca58e019","unresolved":false,"context_lines":[{"line_number":281,"context_line":"* Enhance libvirt driver to configure guests based on the flavour parameter"},{"line_number":282,"context_line":"  for page sizes"},{"line_number":283,"context_line":"* Add support to scheduler to place instances on hosts according to the"},{"line_number":284,"context_line":"  availability of required large pages"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"Dependencies"},{"line_number":287,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_74a18594","line":284,"updated":"2014-06-25 13:50:02.000000000","message":"nit: I guess it will be a new weighter looking at flavor metadata, so could you please precise what you plan to do with scheduler ?","commit_id":"0fb44ea7dfd937cd0fb9118b70abdaef6d923600"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"b62b9da1a312610e1e20828c53a48a2882d0a5a8","unresolved":false,"context_lines":[{"line_number":281,"context_line":"* Enhance libvirt driver to configure guests based on the flavour parameter"},{"line_number":282,"context_line":"  for page sizes"},{"line_number":283,"context_line":"* Add support to scheduler to place instances on hosts according to the"},{"line_number":284,"context_line":"  availability of required large pages"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"Dependencies"},{"line_number":287,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_4f3f8fb5","line":284,"in_reply_to":"1ae5cdf2_74a18594","updated":"2014-06-25 15:49:19.000000000","message":"As noted earlier in this doc it will be an extension of work done in the NUMA blueprint.","commit_id":"0fb44ea7dfd937cd0fb9118b70abdaef6d923600"},{"author":{"_account_id":4912,"name":"Michael H Wilson","email":"geekinutah@gmail.com","username":"geekinutah"},"change_message_id":"928a57c5fbdb156d4985ae0cba9c3d9dfe433256","unresolved":false,"context_lines":[{"line_number":36,"context_line":"benefit increases as the page size increases. In some workloads, a 2 MB page"},{"line_number":37,"context_line":"size can be better overall than 1 GB page sizes. Also the choice of page size"},{"line_number":38,"context_line":"affects the granularity of guest RAM size. ie a 1.5 GB guest would not be able"},{"line_number":39,"context_line":"to use 1 GB pages since RAM is not a multiple of the page size."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Although it is theoretically possible to reserve large pages on the fly, after"},{"line_number":42,"context_line":"a host has been booted for a period of time, physical memory will have become"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_18430b14","line":39,"updated":"2014-06-25 17:09:21.000000000","message":"It feels like this belongs in the performance section?","commit_id":"6da341308daf94088ed272801a114d49f00ebdbc"},{"author":{"_account_id":7677,"name":"Solly Ross","email":"sross@redhat.com","username":"sross"},"change_message_id":"b5702727378f8c41aae211e83e2155a032044d43","unresolved":false,"context_lines":[{"line_number":36,"context_line":"benefit increases as the page size increases. In some workloads, a 2 MB page"},{"line_number":37,"context_line":"size can be better overall than 1 GB page sizes. Also the choice of page size"},{"line_number":38,"context_line":"affects the granularity of guest RAM size. ie a 1.5 GB guest would not be able"},{"line_number":39,"context_line":"to use 1 GB pages since RAM is not a multiple of the page size."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Although it is theoretically possible to reserve large pages on the fly, after"},{"line_number":42,"context_line":"a host has been booted for a period of time, physical memory will have become"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_8375f0fb","line":39,"updated":"2014-06-25 17:51:24.000000000","message":"Well, you could give a 1.5 GB guest 2 GB of RAM.  Perhaps allowing for cases such as this could be a CONF option?","commit_id":"6da341308daf94088ed272801a114d49f00ebdbc"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"9c2a255a6d7a95f08b8ac79fa35b4b17fab6d7ad","unresolved":false,"context_lines":[{"line_number":36,"context_line":"benefit increases as the page size increases. In some workloads, a 2 MB page"},{"line_number":37,"context_line":"size can be better overall than 1 GB page sizes. Also the choice of page size"},{"line_number":38,"context_line":"affects the granularity of guest RAM size. ie a 1.5 GB guest would not be able"},{"line_number":39,"context_line":"to use 1 GB pages since RAM is not a multiple of the page size."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Although it is theoretically possible to reserve large pages on the fly, after"},{"line_number":42,"context_line":"a host has been booted for a period of time, physical memory will have become"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_97726a10","line":39,"in_reply_to":"1ae5cdf2_18430b14","updated":"2014-06-26 11:47:31.000000000","message":"IMHO this is relevant to anyone understanding the overall problem","commit_id":"6da341308daf94088ed272801a114d49f00ebdbc"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"9c2a255a6d7a95f08b8ac79fa35b4b17fab6d7ad","unresolved":false,"context_lines":[{"line_number":36,"context_line":"benefit increases as the page size increases. In some workloads, a 2 MB page"},{"line_number":37,"context_line":"size can be better overall than 1 GB page sizes. Also the choice of page size"},{"line_number":38,"context_line":"affects the granularity of guest RAM size. ie a 1.5 GB guest would not be able"},{"line_number":39,"context_line":"to use 1 GB pages since RAM is not a multiple of the page size."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Although it is theoretically possible to reserve large pages on the fly, after"},{"line_number":42,"context_line":"a host has been booted for a period of time, physical memory will have become"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_375b5687","line":39,"in_reply_to":"1ae5cdf2_8375f0fb","updated":"2014-06-26 11:47:31.000000000","message":"That is pointless - you might as well just give the flavor 2 GB mem then - you have to consider to be 2 GB for the purposes of accounting \u0026 billing.","commit_id":"6da341308daf94088ed272801a114d49f00ebdbc"},{"author":{"_account_id":4912,"name":"Michael H Wilson","email":"geekinutah@gmail.com","username":"geekinutah"},"change_message_id":"928a57c5fbdb156d4985ae0cba9c3d9dfe433256","unresolved":false,"context_lines":[{"line_number":45,"context_line":"is a particular problem for 1 GB sized pages. To deal with this problem, it is"},{"line_number":46,"context_line":"usual practice to reserve all required large pages upfront at host boot time,"},{"line_number":47,"context_line":"by specifying a reservation count on the kernel command line of the host. This"},{"line_number":48,"context_line":"would be a one-time setup task done when deploying new compute node hosts."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"Proposed change"},{"line_number":51,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_f8565fcd","line":48,"updated":"2014-06-25 17:09:21.000000000","message":"You cover this in the alternatives section. It\u0027s good information but seems out of place here IMO.","commit_id":"6da341308daf94088ed272801a114d49f00ebdbc"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"9c2a255a6d7a95f08b8ac79fa35b4b17fab6d7ad","unresolved":false,"context_lines":[{"line_number":45,"context_line":"is a particular problem for 1 GB sized pages. To deal with this problem, it is"},{"line_number":46,"context_line":"usual practice to reserve all required large pages upfront at host boot time,"},{"line_number":47,"context_line":"by specifying a reservation count on the kernel command line of the host. This"},{"line_number":48,"context_line":"would be a one-time setup task done when deploying new compute node hosts."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"Proposed change"},{"line_number":51,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_77507e5e","line":48,"in_reply_to":"1ae5cdf2_f8565fcd","updated":"2014-06-26 11:47:31.000000000","message":"Again I think it is relevant to the overall problem description","commit_id":"6da341308daf94088ed272801a114d49f00ebdbc"},{"author":{"_account_id":7677,"name":"Solly Ross","email":"sross@redhat.com","username":"sross"},"change_message_id":"b5702727378f8c41aae211e83e2155a032044d43","unresolved":false,"context_lines":[{"line_number":74,"context_line":"other large page sizes. Such invalid override in the image would result in"},{"line_number":75,"context_line":"an exception being raised and the attempt to boot the instance resulting in"},{"line_number":76,"context_line":"an error. While ultimate validation is done in the virt driver, this can also"},{"line_number":77,"context_line":"be caught and reported at the at the API layer."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"If the flavor memory size is not a multiple of the specified huge page size"},{"line_number":80,"context_line":"this would be considered an error which would cause the instance to fail to"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_e37a34ef","line":77,"updated":"2014-06-25 17:51:24.000000000","message":"Don\u0027t we usually have it so that the image properties override the flavor (since images are configurable by a user, and flavors are not)?  I can see why you\u0027d want to do this (for scheduling reasons), but it may be a bit confusing to users, since it works contrary to the other flavor-image interactions.","commit_id":"6da341308daf94088ed272801a114d49f00ebdbc"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"9c2a255a6d7a95f08b8ac79fa35b4b17fab6d7ad","unresolved":false,"context_lines":[{"line_number":74,"context_line":"other large page sizes. Such invalid override in the image would result in"},{"line_number":75,"context_line":"an exception being raised and the attempt to boot the instance resulting in"},{"line_number":76,"context_line":"an error. While ultimate validation is done in the virt driver, this can also"},{"line_number":77,"context_line":"be caught and reported at the at the API layer."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"If the flavor memory size is not a multiple of the specified huge page size"},{"line_number":80,"context_line":"this would be considered an error which would cause the instance to fail to"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_f77d6ee8","line":77,"in_reply_to":"1ae5cdf2_ac79ddc6","updated":"2014-06-26 11:47:31.000000000","message":"Yes, Phil is correct here. Any time you have a finite hardware resource, the flavour admin must be able to have full control over its usage if they want to control. That is why the image property will only be honoured if the admin has not set it on the flavour.","commit_id":"6da341308daf94088ed272801a114d49f00ebdbc"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"67978ab8157b35be3e4f615a5c23701e5f54322c","unresolved":false,"context_lines":[{"line_number":74,"context_line":"other large page sizes. Such invalid override in the image would result in"},{"line_number":75,"context_line":"an exception being raised and the attempt to boot the instance resulting in"},{"line_number":76,"context_line":"an error. While ultimate validation is done in the virt driver, this can also"},{"line_number":77,"context_line":"be caught and reported at the at the API layer."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"If the flavor memory size is not a multiple of the specified huge page size"},{"line_number":80,"context_line":"this would be considered an error which would cause the instance to fail to"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_ac79ddc6","line":77,"in_reply_to":"1ae5cdf2_e37a34ef","updated":"2014-06-26 11:20:24.000000000","message":"I think in this case the operator would want to be able to control which flavors are able to make use of a scarce resource like large pages - since billing is typically linked to flavor not image metadata properties.","commit_id":"6da341308daf94088ed272801a114d49f00ebdbc"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"3587172ecbff3cff8de4306e1bebc515042492b5","unresolved":false,"context_lines":[{"line_number":197,"context_line":"* hw_numa_node0_cpus\u003d4"},{"line_number":198,"context_line":"* hw_numa_node0_mem_total\u003d10737418240"},{"line_number":199,"context_line":"* hw_numa_node0_mem_avail\u003d3221225472"},{"line_number":200,"context_line":"* hw_numa_node0_mem_page_total_4_KiB\u003d262144"},{"line_number":201,"context_line":"* hw_numa_node0_mem_page_avail_4_KiB\u003d262144"},{"line_number":202,"context_line":"* hw_numa_node0_mem_page_total_2_MiB\u003d1024"},{"line_number":203,"context_line":"* hw_numa_node0_mem_page_avail_2_MiB\u003d1024"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_18e94bb7","line":200,"updated":"2014-06-25 17:17:10.000000000","message":"Re my earlier comment, I think the scheduler will have to parse these to be able to work out what \"small\" and \"large\" mean for a particular host - so  numeric values might make this a lot easier than having to code in syntax for \"KiB\", \"MiB\", etc","commit_id":"6da341308daf94088ed272801a114d49f00ebdbc"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8e8feb6b7e74c9a3772c13578315ae59c39dd81c","unresolved":false,"context_lines":[{"line_number":197,"context_line":"* hw_numa_node0_cpus\u003d4"},{"line_number":198,"context_line":"* hw_numa_node0_mem_total\u003d10737418240"},{"line_number":199,"context_line":"* hw_numa_node0_mem_avail\u003d3221225472"},{"line_number":200,"context_line":"* hw_numa_node0_mem_page_total_4_KiB\u003d262144"},{"line_number":201,"context_line":"* hw_numa_node0_mem_page_avail_4_KiB\u003d262144"},{"line_number":202,"context_line":"* hw_numa_node0_mem_page_total_2_MiB\u003d1024"},{"line_number":203,"context_line":"* hw_numa_node0_mem_page_avail_2_MiB\u003d1024"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_e646a1a6","line":200,"in_reply_to":"1ae5cdf2_18e94bb7","updated":"2014-06-26 12:43:52.000000000","message":"+1 with Phil, I think numeric values are worth it.","commit_id":"6da341308daf94088ed272801a114d49f00ebdbc"},{"author":{"_account_id":4912,"name":"Michael H Wilson","email":"geekinutah@gmail.com","username":"geekinutah"},"change_message_id":"928a57c5fbdb156d4985ae0cba9c3d9dfe433256","unresolved":false,"context_lines":[{"line_number":232,"context_line":"Notifications impact"},{"line_number":233,"context_line":"--------------------"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"No imapct."},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"The notifications system is not used by this change."},{"line_number":238,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_bd2f69a6","line":235,"updated":"2014-06-25 17:09:21.000000000","message":"Typo here\n\nimpact","commit_id":"6da341308daf94088ed272801a114d49f00ebdbc"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"be5d733de3bbd3c3176b92fe2b074f66bb95dcfd","unresolved":false,"context_lines":[{"line_number":259,"context_line":"compute hosts to reserve large pages at boot time, and place those hosts into a"},{"line_number":260,"context_line":"group using aggregates."},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"It is possible that there might be a need to expose information on the page"},{"line_number":263,"context_line":"counts to host administrators via the Nova API. Such a need can be considered"},{"line_number":264,"context_line":"for followup work once the work refernced in this basic spec is completed"},{"line_number":265,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"dab895d6_d101df3a","line":262,"updated":"2014-06-30 08:56:46.000000000","message":"+1, I think it\u0027s a good idea to expose large page utilization and host NUMA topology via the Nova API.","commit_id":"ba80e4633283caaf6adaeaa734e8c79edc756177"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d251d10a78b40c7492ca1699211b9a46099c9362","unresolved":false,"context_lines":[{"line_number":291,"context_line":"* Enhance libvirt driver to configure guests based on the flavour parameter"},{"line_number":292,"context_line":"  for page sizes"},{"line_number":293,"context_line":"* Add support to scheduler to place instances on hosts according to the"},{"line_number":294,"context_line":"  availability of required large pages"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"Dependencies"},{"line_number":297,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"baada198_24becdb4","line":294,"updated":"2014-07-03 20:32:55.000000000","message":"I wonder if this will involve configuration that the admin will need to know about, and we will need to document.\n\nI don\u0027t really see it as crucial, as DocImpact on the commit will make sure it doesn\u0027t get missed, so I will +2 this knowing that if it turns out to be an issue you can update the spec to reflect those details.","commit_id":"ba80e4633283caaf6adaeaa734e8c79edc756177"}]}
