)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"44c57d5485f4f135e39a61317aaa95705cb48f92","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     jianghua wang \u003cjianghua.wang@citrix.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-04-13 16:52:47 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support VGPU"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add spec to support VGPU."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"7ffa3b31_f6d14f59","line":7,"updated":"2017-04-14 20:07:39.000000000","message":"Recommend \"Support virtual GPU resources\" as the summary.","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"fafa931805057a5b02866afed5321561b6d556b3","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     jianghua wang \u003cjianghua.wang@citrix.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-04-13 16:52:47 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support VGPU"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add spec to support VGPU."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"7ffa3b31_ccffd465","line":7,"in_reply_to":"7ffa3b31_f6d14f59","updated":"2017-04-17 09:21:53.000000000","message":"Agreed. Will be in the next patchset.","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"}],"specs/pike/approved/virt-add-support-for-vgpu.rst":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"079853f91661f8f9db8b10afd2b9e3b9178f6733","unresolved":false,"context_lines":[{"line_number":89,"context_line":"Proposed change"},{"line_number":90,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"1. The feature of traits is targeted to support representing *quantitative*"},{"line_number":93,"context_line":"aspects for resources to differenitiate their characteristics[os-traits]."},{"line_number":94,"context_line":"(V)GPUs also have different characteristics - e.g.  model name, number of"},{"line_number":95,"context_line":"display heads, maximum resolutions, and framebuffer size. As usally we can"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfeb2761_d17ad986","line":92,"range":{"start_line":92,"start_character":61,"end_line":92,"end_character":75},"updated":"2017-03-31 10:02:34.000000000","message":"s/quantitative/qualitative","commit_id":"044903aaabed1c06c47052b68b7b9cc30b8ec422"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"ed989e288790ae86678a34d5c18052c5811703ed","unresolved":false,"context_lines":[{"line_number":89,"context_line":"Proposed change"},{"line_number":90,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"1. The feature of traits is targeted to support representing *quantitative*"},{"line_number":93,"context_line":"aspects for resources to differenitiate their characteristics[os-traits]."},{"line_number":94,"context_line":"(V)GPUs also have different characteristics - e.g.  model name, number of"},{"line_number":95,"context_line":"display heads, maximum resolutions, and framebuffer size. As usally we can"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfeb2761_271c2369","line":92,"range":{"start_line":92,"start_character":61,"end_line":92,"end_character":75},"in_reply_to":"dfeb2761_d17ad986","updated":"2017-03-31 10:57:28.000000000","message":"sigh! sorry that the mistake. Must copied from other places. Will correct it.","commit_id":"044903aaabed1c06c47052b68b7b9cc30b8ec422"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"079853f91661f8f9db8b10afd2b9e3b9178f6733","unresolved":false,"context_lines":[{"line_number":127,"context_line":"available VGPU resources and organize the same VGPUs\u0027 a VGPU RP(resource"},{"line_number":128,"context_line":"provider). And the RP\u0027s inventory should contain the amount of VGPUs."},{"line_number":129,"context_line":"It also generates the RPs\u0027 traits basing on the VGPU\u0027s model name. The"},{"line_number":130,"context_line":"RPs tree will be persisted into placement by resource_tracker."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"e.g.::"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfeb2761_b1cbd5a3","line":130,"updated":"2017-03-31 10:02:34.000000000","message":"So it\u0027s a quantitative resource, right? \nThen, why are you saying \"traits\" ?\n\nDo you want to have *both* a quantitative resource call (ie. asking for 4 VGPUs) and a *qualitative* one (ie. only *this* K1 model) ?","commit_id":"044903aaabed1c06c47052b68b7b9cc30b8ec422"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"ed989e288790ae86678a34d5c18052c5811703ed","unresolved":false,"context_lines":[{"line_number":127,"context_line":"available VGPU resources and organize the same VGPUs\u0027 a VGPU RP(resource"},{"line_number":128,"context_line":"provider). And the RP\u0027s inventory should contain the amount of VGPUs."},{"line_number":129,"context_line":"It also generates the RPs\u0027 traits basing on the VGPU\u0027s model name. The"},{"line_number":130,"context_line":"RPs tree will be persisted into placement by resource_tracker."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"e.g.::"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfeb2761_8c12f4b0","line":130,"in_reply_to":"dfeb2761_b1cbd5a3","updated":"2017-03-31 10:57:28.000000000","message":"Yes. VGPUs are quantitative resource but it also has qualitative aspects - at here it\u0027s the model name, so that it can differentiate their characteristics from each other.\nThe user can request an amount of the VGPUs; and can also specify which model name the VGPUs should be. It allows users to choose different VGPUs basing on their demand.","commit_id":"044903aaabed1c06c47052b68b7b9cc30b8ec422"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"21e2cde4e4c001dcf8cecfd92931ea9251b8c801","unresolved":false,"context_lines":[{"line_number":137,"context_line":"The inventory data for VGPU resource should be similar as::"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":" {"},{"line_number":140,"context_line":"  \"resource_class\": \"CUSTOM_VGPU\","},{"line_number":141,"context_line":"  \"total\": 7,"},{"line_number":142,"context_line":"  \"reserved\": 0,"},{"line_number":143,"context_line":"  \"min_unit\": 1,"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfeb2761_64822e52","line":140,"updated":"2017-03-31 08:09:49.000000000","message":"As VGPU is a generic resource, could we add it as standard resource class? @Jaypipes","commit_id":"044903aaabed1c06c47052b68b7b9cc30b8ec422"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"ed989e288790ae86678a34d5c18052c5811703ed","unresolved":false,"context_lines":[{"line_number":137,"context_line":"The inventory data for VGPU resource should be similar as::"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":" {"},{"line_number":140,"context_line":"  \"resource_class\": \"CUSTOM_VGPU\","},{"line_number":141,"context_line":"  \"total\": 7,"},{"line_number":142,"context_line":"  \"reserved\": 0,"},{"line_number":143,"context_line":"  \"min_unit\": 1,"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfeb2761_8cd554bc","line":140,"in_reply_to":"dfeb2761_1147214e","updated":"2017-03-31 10:57:28.000000000","message":"yes, the assumption is to make this VGPU class as common concept. But it doesn\u0027t impact the design if we can only use custom class.","commit_id":"044903aaabed1c06c47052b68b7b9cc30b8ec422"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"079853f91661f8f9db8b10afd2b9e3b9178f6733","unresolved":false,"context_lines":[{"line_number":137,"context_line":"The inventory data for VGPU resource should be similar as::"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":" {"},{"line_number":140,"context_line":"  \"resource_class\": \"CUSTOM_VGPU\","},{"line_number":141,"context_line":"  \"total\": 7,"},{"line_number":142,"context_line":"  \"reserved\": 0,"},{"line_number":143,"context_line":"  \"min_unit\": 1,"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfeb2761_1147214e","line":140,"in_reply_to":"dfeb2761_64822e52","updated":"2017-03-31 10:02:34.000000000","message":"I think it would need all the virt drivers using it + having all the physical GPUs supporting it, right?","commit_id":"044903aaabed1c06c47052b68b7b9cc30b8ec422"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"3dd1e558c1e63c8c0bb3afa16e93997fdb5d7674","unresolved":false,"context_lines":[{"line_number":137,"context_line":"The inventory data for VGPU resource should be similar as::"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":" {"},{"line_number":140,"context_line":"  \"resource_class\": \"CUSTOM_VGPU\","},{"line_number":141,"context_line":"  \"total\": 7,"},{"line_number":142,"context_line":"  \"reserved\": 0,"},{"line_number":143,"context_line":"  \"min_unit\": 1,"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfeb2761_9a88d8c6","line":140,"in_reply_to":"dfeb2761_8cd554bc","updated":"2017-03-31 18:30:30.000000000","message":"Yeah, VGPU should be added to the list of standardized resource classes, IMHO.","commit_id":"044903aaabed1c06c47052b68b7b9cc30b8ec422"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"079853f91661f8f9db8b10afd2b9e3b9178f6733","unresolved":false,"context_lines":[{"line_number":151,"context_line":"Note: Before the traits feature got implemented, we can only schedule resource"},{"line_number":152,"context_line":"providers simply basing on the resource class of VGPU. After traits got ready,"},{"line_number":153,"context_line":"we can add traits for the resource provider then it\u0027s able to filter resource"},{"line_number":154,"context_line":"providers basing on the VGPU\u0027s characteristics."},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"5. At spawning an instance, the virt drivers should retrieve the VGPU resource"},{"line_number":157,"context_line":"specs from the instance request specs and map them to the proper VGPU type and"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfeb2761_9145711a","line":154,"updated":"2017-03-31 10:02:34.000000000","message":"Please clarify that : if we merge custom RCs like you said, you wouldn\u0027t be able to ask for a specific physical GPU. Fine with you ?","commit_id":"044903aaabed1c06c47052b68b7b9cc30b8ec422"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"ed989e288790ae86678a34d5c18052c5811703ed","unresolved":false,"context_lines":[{"line_number":151,"context_line":"Note: Before the traits feature got implemented, we can only schedule resource"},{"line_number":152,"context_line":"providers simply basing on the resource class of VGPU. After traits got ready,"},{"line_number":153,"context_line":"we can add traits for the resource provider then it\u0027s able to filter resource"},{"line_number":154,"context_line":"providers basing on the VGPU\u0027s characteristics."},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"5. At spawning an instance, the virt drivers should retrieve the VGPU resource"},{"line_number":157,"context_line":"specs from the instance request specs and map them to the proper VGPU type and"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfeb2761_a7083328","line":154,"in_reply_to":"dfeb2761_9145711a","updated":"2017-03-31 10:57:28.000000000","message":"In XenServer, the GPU is treated as a special type of VGPU - passthrough. So it should works but it should specify PGPU in the white-list.\nDo you see any issue for libvirt?\nthanks.","commit_id":"044903aaabed1c06c47052b68b7b9cc30b8ec422"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"079853f91661f8f9db8b10afd2b9e3b9178f6733","unresolved":false,"context_lines":[{"line_number":156,"context_line":"5. At spawning an instance, the virt drivers should retrieve the VGPU resource"},{"line_number":157,"context_line":"specs from the instance request specs and map them to the proper VGPU type and"},{"line_number":158,"context_line":"and relative information(e.g. the GPU group in XenAPI) to create and/or"},{"line_number":159,"context_line":"associating VGPU to the instance. "},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"6. We need define vgpu_whitelist in nova.conf to specify which VGPU models"},{"line_number":162,"context_line":"are enabled, so virt driver can determine which VGPUs will be exposed and"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfeb2761_51c24987","line":159,"updated":"2017-03-31 10:02:34.000000000","message":"left space.","commit_id":"044903aaabed1c06c47052b68b7b9cc30b8ec422"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"ed989e288790ae86678a34d5c18052c5811703ed","unresolved":false,"context_lines":[{"line_number":156,"context_line":"5. At spawning an instance, the virt drivers should retrieve the VGPU resource"},{"line_number":157,"context_line":"specs from the instance request specs and map them to the proper VGPU type and"},{"line_number":158,"context_line":"and relative information(e.g. the GPU group in XenAPI) to create and/or"},{"line_number":159,"context_line":"associating VGPU to the instance. "},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"6. We need define vgpu_whitelist in nova.conf to specify which VGPU models"},{"line_number":162,"context_line":"are enabled, so virt driver can determine which VGPUs will be exposed and"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfeb2761_67122b5b","line":159,"in_reply_to":"dfeb2761_51c24987","updated":"2017-03-31 10:57:28.000000000","message":"will remove it in the next patch.","commit_id":"044903aaabed1c06c47052b68b7b9cc30b8ec422"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"77292b60811b32e3f9b9e0f9297d1ae6948a4b77","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/add-support-for-vgpu"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Add the feature to support Virtual GPU (VGPU)."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Problem description"},{"line_number":16,"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":7,"id":"dfeb2761_6edd5113","line":13,"updated":"2017-03-31 21:50:27.000000000","message":"s/Add the feature to support/Add support for/","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"917c8d810b303fb598b516fab2339b6b6baca440","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/add-support-for-vgpu"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Add the feature to support Virtual GPU (VGPU)."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Problem description"},{"line_number":16,"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":7,"id":"dfeb2761_f4748f9b","line":13,"in_reply_to":"dfeb2761_6edd5113","updated":"2017-04-01 11:51:46.000000000","message":"Done","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"77292b60811b32e3f9b9e0f9297d1ae6948a4b77","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"With some graphics virtualization solutions e.g. Intel\u0027s GVT-g and NVIDIA GRID"},{"line_number":19,"context_line":"VGPU, a single physical Graphics Processing Unit (PGPU) can be virtualized as"},{"line_number":20,"context_line":"multiple virtual Graphics Processing Units(VGPU). And some hypervisors support"},{"line_number":21,"context_line":"to boot VMs with VGPU to accelerate graphics processing. But presently Nova"},{"line_number":22,"context_line":"can\u0027t support VGPU. This proposal is to give a solution in Nova to support"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_4ee28dd7","line":19,"updated":"2017-03-31 21:50:27.000000000","message":"Might be nice to include links to the Intel GVT-g and NVIDIA GRID specs.","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"917c8d810b303fb598b516fab2339b6b6baca440","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"With some graphics virtualization solutions e.g. Intel\u0027s GVT-g and NVIDIA GRID"},{"line_number":19,"context_line":"VGPU, a single physical Graphics Processing Unit (PGPU) can be virtualized as"},{"line_number":20,"context_line":"multiple virtual Graphics Processing Units(VGPU). And some hypervisors support"},{"line_number":21,"context_line":"to boot VMs with VGPU to accelerate graphics processing. But presently Nova"},{"line_number":22,"context_line":"can\u0027t support VGPU. This proposal is to give a solution in Nova to support"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_6062fa40","line":19,"in_reply_to":"dfeb2761_4ee28dd7","updated":"2017-04-01 11:51:46.000000000","message":"will add in the next patch.","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"77292b60811b32e3f9b9e0f9297d1ae6948a4b77","unresolved":false,"context_lines":[{"line_number":34,"context_line":"VGPU type: Different types of VGPUs may have different number of supported"},{"line_number":35,"context_line":"display heads and maximum resolutions, and are targeted at different classes"},{"line_number":36,"context_line":"of workload. Some PGPU model (e.g. GRID K2) may potentially support multiple"},{"line_number":37,"context_line":"types of VGPUs, but it can host only one type of the VGPUs at the same time."},{"line_number":38,"context_line":"In order to make it easier for resource tracker, this spec will restrict each"},{"line_number":39,"context_line":"PGPU model to only expose one VGPU model."},{"line_number":40,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_2ee749e7","line":37,"updated":"2017-03-31 21:50:27.000000000","message":"s/at the same time/at a time/","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"917c8d810b303fb598b516fab2339b6b6baca440","unresolved":false,"context_lines":[{"line_number":34,"context_line":"VGPU type: Different types of VGPUs may have different number of supported"},{"line_number":35,"context_line":"display heads and maximum resolutions, and are targeted at different classes"},{"line_number":36,"context_line":"of workload. Some PGPU model (e.g. GRID K2) may potentially support multiple"},{"line_number":37,"context_line":"types of VGPUs, but it can host only one type of the VGPUs at the same time."},{"line_number":38,"context_line":"In order to make it easier for resource tracker, this spec will restrict each"},{"line_number":39,"context_line":"PGPU model to only expose one VGPU model."},{"line_number":40,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_147013a5","line":37,"in_reply_to":"dfeb2761_2ee749e7","updated":"2017-04-01 11:51:46.000000000","message":"Done","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"77292b60811b32e3f9b9e0f9297d1ae6948a4b77","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    Example 1: Intel Corporation Iris Pro Graphics 580"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    +----------------+------------------------------------------+"},{"line_number":46,"context_line":"    | PGPU model     |Intel Corporation Iris Pro Graphics P6300 |"},{"line_number":47,"context_line":"    +----------------+------------------------------------------+"},{"line_number":48,"context_line":"    | VGPU model     | Intel GVT-g                              |"},{"line_number":49,"context_line":"    +----------------+------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_0eec85c5","line":46,"updated":"2017-03-31 21:50:27.000000000","message":"Is the above the card type or the pGPU model?","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"917c8d810b303fb598b516fab2339b6b6baca440","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    Example 1: Intel Corporation Iris Pro Graphics 580"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    +----------------+------------------------------------------+"},{"line_number":46,"context_line":"    | PGPU model     |Intel Corporation Iris Pro Graphics P6300 |"},{"line_number":47,"context_line":"    +----------------+------------------------------------------+"},{"line_number":48,"context_line":"    | VGPU model     | Intel GVT-g                              |"},{"line_number":49,"context_line":"    +----------------+------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_77e3e134","line":46,"in_reply_to":"dfeb2761_0eec85c5","updated":"2017-04-01 11:51:46.000000000","message":"Iris Pro Graphics P6300 is the PGPU model. see here for reference: https://en.wikipedia.org/wiki/Intel_HD_and_Iris_Graphics\n\nBut obviously the \"580\" in the above line is wrong.","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"77292b60811b32e3f9b9e0f9297d1ae6948a4b77","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"This spec will take XenAPI (the virt driver for XenServer) as the example"},{"line_number":75,"context_line":"to explain the proposal. XenServer uses gpu-group to manage GPUs. A gpu-group"},{"line_number":76,"context_line":"is a collection of physical GPUs, all of the same type. XenServer automatically"},{"line_number":77,"context_line":"creates gpu-group objects at startup to represent the distinct types of"},{"line_number":78,"context_line":"physical GPU present on the platform. Once XenServer receives VGPU creation"},{"line_number":79,"context_line":"request, it will try to find an available PGPU from the target group."}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_eed041fa","line":76,"updated":"2017-03-31 21:50:27.000000000","message":"by \"all of the same type\", are you referring to \"all of the same VGPU model\"? or all with the same physical GPU model?","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"917c8d810b303fb598b516fab2339b6b6baca440","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"This spec will take XenAPI (the virt driver for XenServer) as the example"},{"line_number":75,"context_line":"to explain the proposal. XenServer uses gpu-group to manage GPUs. A gpu-group"},{"line_number":76,"context_line":"is a collection of physical GPUs, all of the same type. XenServer automatically"},{"line_number":77,"context_line":"creates gpu-group objects at startup to represent the distinct types of"},{"line_number":78,"context_line":"physical GPU present on the platform. Once XenServer receives VGPU creation"},{"line_number":79,"context_line":"request, it will try to find an available PGPU from the target group."}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_0588e0e4","line":76,"in_reply_to":"dfeb2761_eed041fa","updated":"2017-04-01 11:51:46.000000000","message":"it is \"all with the same physical GPU model\".","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"77292b60811b32e3f9b9e0f9297d1ae6948a4b77","unresolved":false,"context_lines":[{"line_number":75,"context_line":"to explain the proposal. XenServer uses gpu-group to manage GPUs. A gpu-group"},{"line_number":76,"context_line":"is a collection of physical GPUs, all of the same type. XenServer automatically"},{"line_number":77,"context_line":"creates gpu-group objects at startup to represent the distinct types of"},{"line_number":78,"context_line":"physical GPU present on the platform. Once XenServer receives VGPU creation"},{"line_number":79,"context_line":"request, it will try to find an available PGPU from the target group."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"- Boot VM with VGPU in OpenStack"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_cecd7d5e","line":78,"updated":"2017-03-31 21:50:27.000000000","message":"How does XenServer discover the pGPUs on the system and their capabilities? Is this something that is vendor-specific or is there a standardized (udev?) way of discovering this information?","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"dc67f09129ed9e3f4c44dc5b6b26a326036bed7a","unresolved":false,"context_lines":[{"line_number":75,"context_line":"to explain the proposal. XenServer uses gpu-group to manage GPUs. A gpu-group"},{"line_number":76,"context_line":"is a collection of physical GPUs, all of the same type. XenServer automatically"},{"line_number":77,"context_line":"creates gpu-group objects at startup to represent the distinct types of"},{"line_number":78,"context_line":"physical GPU present on the platform. Once XenServer receives VGPU creation"},{"line_number":79,"context_line":"request, it will try to find an available PGPU from the target group."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"- Boot VM with VGPU in OpenStack"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_ad658d47","line":78,"in_reply_to":"dfeb2761_cecd7d5e","updated":"2017-04-02 14:52:05.000000000","message":"It\u0027s vendor-specific:XenServer reads configuration files provided by the GPU vendor. These specify the pgpu PCI vendor:device IDs and the supported vgpu types on that specific PGPU.","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"77292b60811b32e3f9b9e0f9297d1ae6948a4b77","unresolved":false,"context_lines":[{"line_number":81,"context_line":"- Boot VM with VGPU in OpenStack"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"As a cloud administrator, Bob should be able to define a flavor which has"},{"line_number":84,"context_line":"the capability of VGPU with desired model name."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"As an end user, Bob should be allowed to boot VMs which having VGPU"},{"line_number":87,"context_line":"attached by using the pre-defined flavor."}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_aeda3914","line":84,"updated":"2017-03-31 21:50:27.000000000","message":"s/has the capability of VGPU/requests an amount of VGPU resources along with a set of required traits indicating some GPU-specific attributes/","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"917c8d810b303fb598b516fab2339b6b6baca440","unresolved":false,"context_lines":[{"line_number":81,"context_line":"- Boot VM with VGPU in OpenStack"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"As a cloud administrator, Bob should be able to define a flavor which has"},{"line_number":84,"context_line":"the capability of VGPU with desired model name."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"As an end user, Bob should be allowed to boot VMs which having VGPU"},{"line_number":87,"context_line":"attached by using the pre-defined flavor."}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_ed26feb7","line":84,"in_reply_to":"dfeb2761_aeda3914","updated":"2017-04-01 11:51:46.000000000","message":"agreed.","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"77292b60811b32e3f9b9e0f9297d1ae6948a4b77","unresolved":false,"context_lines":[{"line_number":83,"context_line":"As a cloud administrator, Bob should be able to define a flavor which has"},{"line_number":84,"context_line":"the capability of VGPU with desired model name."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"As an end user, Bob should be allowed to boot VMs which having VGPU"},{"line_number":87,"context_line":"attached by using the pre-defined flavor."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_8ed775ee","line":86,"updated":"2017-03-31 21:50:27.000000000","message":"s/which having VGPU attached/which have VGPUs/","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"917c8d810b303fb598b516fab2339b6b6baca440","unresolved":false,"context_lines":[{"line_number":83,"context_line":"As a cloud administrator, Bob should be able to define a flavor which has"},{"line_number":84,"context_line":"the capability of VGPU with desired model name."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"As an end user, Bob should be allowed to boot VMs which having VGPU"},{"line_number":87,"context_line":"attached by using the pre-defined flavor."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_0d2242a5","line":86,"in_reply_to":"dfeb2761_8ed775ee","updated":"2017-04-01 11:51:46.000000000","message":"agreed","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"77292b60811b32e3f9b9e0f9297d1ae6948a4b77","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"1. The feature of traits is targeted to support representing *qualitative*"},{"line_number":93,"context_line":"aspects for resources to differenitiate their characteristics[os-traits]."},{"line_number":94,"context_line":"(V)GPUs also have different characteristics - e.g.  model name, number of"},{"line_number":95,"context_line":"display heads, maximum resolutions, and framebuffer size. As usally we can"},{"line_number":96,"context_line":"get other characteristics basing on the model name, here we only define"},{"line_number":97,"context_line":"traits with model name in os-traits. We can add other traits in the"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_6e067189","line":94,"updated":"2017-03-31 21:50:27.000000000","message":"The above is technically incorrect. The VGPU does not actually have different characteristics. The VGPU is simply a resource. It is the *resource provider* that has traits associated with it. In this case, the resource provider is the *physical GPU device*. That PGPU device will have a resource provider record in the placement API, an inventory of X amount of VGPU resources and a collection of associated string traits.","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"917c8d810b303fb598b516fab2339b6b6baca440","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"1. The feature of traits is targeted to support representing *qualitative*"},{"line_number":93,"context_line":"aspects for resources to differenitiate their characteristics[os-traits]."},{"line_number":94,"context_line":"(V)GPUs also have different characteristics - e.g.  model name, number of"},{"line_number":95,"context_line":"display heads, maximum resolutions, and framebuffer size. As usally we can"},{"line_number":96,"context_line":"get other characteristics basing on the model name, here we only define"},{"line_number":97,"context_line":"traits with model name in os-traits. We can add other traits in the"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_6d19ce77","line":94,"in_reply_to":"dfeb2761_6e067189","updated":"2017-04-01 11:51:46.000000000","message":"understood. Thanks for the explanation.","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"77292b60811b32e3f9b9e0f9297d1ae6948a4b77","unresolved":false,"context_lines":[{"line_number":92,"context_line":"1. The feature of traits is targeted to support representing *qualitative*"},{"line_number":93,"context_line":"aspects for resources to differenitiate their characteristics[os-traits]."},{"line_number":94,"context_line":"(V)GPUs also have different characteristics - e.g.  model name, number of"},{"line_number":95,"context_line":"display heads, maximum resolutions, and framebuffer size. As usally we can"},{"line_number":96,"context_line":"get other characteristics basing on the model name, here we only define"},{"line_number":97,"context_line":"traits with model name in os-traits. We can add other traits in the"},{"line_number":98,"context_line":"future per need. The trait of model name can be associated to the VGPU"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_4e0bad8d","line":95,"updated":"2017-03-31 21:50:27.000000000","message":"Model names are not actually traits :) Traits are boolean attributes. The resource provider either has a particular trait or it doesn\u0027t have a particular trait. In other words, traits are capabilities, not adjectives. Think in terms of \"can this resource provider support X?\" or \"does this resource provider have X?\" where \"X\" is a capability (trait).\n\nYou wouldn\u0027t ask \"can this PGPU support Intel Iris Pro Graphics P6300?\". Therefore the model name is not a trait.","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"917c8d810b303fb598b516fab2339b6b6baca440","unresolved":false,"context_lines":[{"line_number":92,"context_line":"1. The feature of traits is targeted to support representing *qualitative*"},{"line_number":93,"context_line":"aspects for resources to differenitiate their characteristics[os-traits]."},{"line_number":94,"context_line":"(V)GPUs also have different characteristics - e.g.  model name, number of"},{"line_number":95,"context_line":"display heads, maximum resolutions, and framebuffer size. As usally we can"},{"line_number":96,"context_line":"get other characteristics basing on the model name, here we only define"},{"line_number":97,"context_line":"traits with model name in os-traits. We can add other traits in the"},{"line_number":98,"context_line":"future per need. The trait of model name can be associated to the VGPU"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_4af03068","line":95,"in_reply_to":"dfeb2761_4e0bad8d","updated":"2017-04-01 11:51:46.000000000","message":"Ok. Then can we make the VGPU model as the RP\u0027s trait? In another word, can we say \"can this resource provider supports/has VGPU model - K160Q\"? And \"can this resource provider support passthrough?\"","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"77292b60811b32e3f9b9e0f9297d1ae6948a4b77","unresolved":false,"context_lines":[{"line_number":107,"context_line":"  GPU_MODEL_GVT_G \u003d NS_GPU + \u0027MODEL_GVT_G\u0027"},{"line_number":108,"context_line":"  GPU_MODEL_K1 \u003d  NS_GPU + \u0027MODEL_K1\u0027"},{"line_number":109,"context_line":"  GPU_MODEL_K120Q \u003d NS_GPU + \u0027MODEL_K120Q\u0027"},{"line_number":110,"context_line":"  …"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"2.  Define a new custom resource for VGPU."},{"line_number":113,"context_line":"In virt driver, it will invoke ResourceClass.normalize_name(\u0027VGPU\u0027) to get"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_2e006967","line":110,"updated":"2017-03-31 21:50:27.000000000","message":"See above. These aren\u0027t traits.\n\nThere *should* be, however, traits added to os-traits that indicate GPU capabilities around max resolution size. For instance, we could add:\n\n HW_GPU_RESOLUTION_2560_1600\n HW_GPU_RESOLUTION_1920_1200\n\netc, and PGPU resource providers would be decorate with traits for each supported resolution size. Make sense?\n\nNot sure about framebuffer size or display heads. Is that something that a flavor would need to specify in order for the scheduler to determine a suitable compute host?","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"917c8d810b303fb598b516fab2339b6b6baca440","unresolved":false,"context_lines":[{"line_number":107,"context_line":"  GPU_MODEL_GVT_G \u003d NS_GPU + \u0027MODEL_GVT_G\u0027"},{"line_number":108,"context_line":"  GPU_MODEL_K1 \u003d  NS_GPU + \u0027MODEL_K1\u0027"},{"line_number":109,"context_line":"  GPU_MODEL_K120Q \u003d NS_GPU + \u0027MODEL_K120Q\u0027"},{"line_number":110,"context_line":"  …"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"2.  Define a new custom resource for VGPU."},{"line_number":113,"context_line":"In virt driver, it will invoke ResourceClass.normalize_name(\u0027VGPU\u0027) to get"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_4a63901b","line":110,"in_reply_to":"dfeb2761_2e006967","updated":"2017-04-01 11:51:46.000000000","message":"Yes, agreed we can define max resolutions and display heads. Not sure about framebuffer size which seems be non-discrete value. Maybe leave it for future work.\nParticularly as said above, can we treat the VGPU type as PGPU\u0027s capability? So users can be allowed to specify which VGPU type to be created?","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"77292b60811b32e3f9b9e0f9297d1ae6948a4b77","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"2.  Define a new custom resource for VGPU."},{"line_number":113,"context_line":"In virt driver, it will invoke ResourceClass.normalize_name(\u0027VGPU\u0027) to get"},{"line_number":114,"context_line":"the resource class name."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"3. Tracking the VGPU resources:"},{"line_number":117,"context_line":"We will use the nested [resource-provider] to tracking the VGPU resources."}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_0e05a577","line":114,"updated":"2017-03-31 21:50:27.000000000","message":"Actually, I think there should be a standard \"VGPU\" resource class. :)","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"917c8d810b303fb598b516fab2339b6b6baca440","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"2.  Define a new custom resource for VGPU."},{"line_number":113,"context_line":"In virt driver, it will invoke ResourceClass.normalize_name(\u0027VGPU\u0027) to get"},{"line_number":114,"context_line":"the resource class name."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"3. Tracking the VGPU resources:"},{"line_number":117,"context_line":"We will use the nested [resource-provider] to tracking the VGPU resources."}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_ca7680d9","line":114,"in_reply_to":"dfeb2761_0e05a577","updated":"2017-04-01 11:51:46.000000000","message":"awesome. I\u0027m happy to know we can make it as standard resource class. thanks.","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"77292b60811b32e3f9b9e0f9297d1ae6948a4b77","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":" resource provider:              compute_node"},{"line_number":121,"context_line":"                             /        |         \\"},{"line_number":122,"context_line":" resource provider:  VGPU_RP_1   VGPU_RP_2  … VGPU_RP_n"},{"line_number":123,"context_line":"                           /          |            \\"},{"line_number":124,"context_line":" inventory:  {\u0027VGPU\u0027: amount_1} {\u0027VGPU\u0027: amount_2} … {\u0027VGPU\u0027: amount_n}"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_eef96180","line":122,"updated":"2017-03-31 21:50:27.000000000","message":"Almost :) Just change VGPU to PGPU above. Each physical GPU is a resource provider.","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"917c8d810b303fb598b516fab2339b6b6baca440","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":" resource provider:              compute_node"},{"line_number":121,"context_line":"                             /        |         \\"},{"line_number":122,"context_line":" resource provider:  VGPU_RP_1   VGPU_RP_2  … VGPU_RP_n"},{"line_number":123,"context_line":"                           /          |            \\"},{"line_number":124,"context_line":" inventory:  {\u0027VGPU\u0027: amount_1} {\u0027VGPU\u0027: amount_2} … {\u0027VGPU\u0027: amount_n}"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_0a46a87d","line":122,"in_reply_to":"dfeb2761_eef96180","updated":"2017-04-01 11:51:46.000000000","message":"Can we make the resource provider as a logic concept which supply resources? It could be PGPU or a group of same type PGPUs? As the API supplied by XenServer only allow to specify the PGPU group but not the PGPU. (see the explanation in the section of \"GPU group in XenServer\" and the section of \"Alternatives\")","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"77292b60811b32e3f9b9e0f9297d1ae6948a4b77","unresolved":false,"context_lines":[{"line_number":121,"context_line":"                             /        |         \\"},{"line_number":122,"context_line":" resource provider:  VGPU_RP_1   VGPU_RP_2  … VGPU_RP_n"},{"line_number":123,"context_line":"                           /          |            \\"},{"line_number":124,"context_line":" inventory:  {\u0027VGPU\u0027: amount_1} {\u0027VGPU\u0027: amount_2} … {\u0027VGPU\u0027: amount_n}"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"In virt driver (in the function of get_inventory()), it should query the"},{"line_number":127,"context_line":"available VGPU resources and organize the same VGPUs\u0027 a VGPU RP(resource"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_cef69d90","line":124,"updated":"2017-03-31 21:50:27.000000000","message":"Yup, this line is exactly correct.","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"77292b60811b32e3f9b9e0f9297d1ae6948a4b77","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"e.g.::"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":" XenAPI will make VGPU RP for each GPU group and calculate the total"},{"line_number":135,"context_line":" amount of the VGPU in the group."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"The inventory data for VGPU resource should be similar as::"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_aef3599e","line":134,"updated":"2017-03-31 21:50:27.000000000","message":"s/VGPU RP/PGPU resource provider/\n\nAlso, you can remove the \"for each GPU group\" part. That actually isn\u0027t germane to this conversation. As far as Nova is concerned, the virt driver will create resource provider records for each physical GPU it discovers and associate traits and inventory with those resource providers. The placement API does not know or care about any grouping of resource providers (other than via an aggregate, but that\u0027s not what we\u0027re looking at here.","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"917c8d810b303fb598b516fab2339b6b6baca440","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"e.g.::"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":" XenAPI will make VGPU RP for each GPU group and calculate the total"},{"line_number":135,"context_line":" amount of the VGPU in the group."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"The inventory data for VGPU resource should be similar as::"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_ca5fa03f","line":134,"in_reply_to":"dfeb2761_aef3599e","updated":"2017-04-01 11:51:46.000000000","message":"see the above about the special thing about GPU group.","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"77292b60811b32e3f9b9e0f9297d1ae6948a4b77","unresolved":false,"context_lines":[{"line_number":134,"context_line":" XenAPI will make VGPU RP for each GPU group and calculate the total"},{"line_number":135,"context_line":" amount of the VGPU in the group."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"The inventory data for VGPU resource should be similar as::"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":" {"},{"line_number":140,"context_line":"  \"resource_class\": \"CUSTOM_VGPU\","}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_8ef09592","line":137,"updated":"2017-03-31 21:50:27.000000000","message":"s/VGPU resource/PGPU resource provider/\n\ns/should be similar as/would look like/","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"77292b60811b32e3f9b9e0f9297d1ae6948a4b77","unresolved":false,"context_lines":[{"line_number":137,"context_line":"The inventory data for VGPU resource should be similar as::"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":" {"},{"line_number":140,"context_line":"  \"resource_class\": \"CUSTOM_VGPU\","},{"line_number":141,"context_line":"  \"total\": 7,"},{"line_number":142,"context_line":"  \"reserved\": 0,"},{"line_number":143,"context_line":"  \"min_unit\": 1,"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_6e2b11eb","line":140,"updated":"2017-03-31 21:50:27.000000000","message":"just \"VGPU\"...","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"917c8d810b303fb598b516fab2339b6b6baca440","unresolved":false,"context_lines":[{"line_number":137,"context_line":"The inventory data for VGPU resource should be similar as::"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":" {"},{"line_number":140,"context_line":"  \"resource_class\": \"CUSTOM_VGPU\","},{"line_number":141,"context_line":"  \"total\": 7,"},{"line_number":142,"context_line":"  \"reserved\": 0,"},{"line_number":143,"context_line":"  \"min_unit\": 1,"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_8a59985b","line":140,"in_reply_to":"dfeb2761_6e2b11eb","updated":"2017-04-01 11:51:46.000000000","message":"yeah, will make VGPU as standard resource.","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"77292b60811b32e3f9b9e0f9297d1ae6948a4b77","unresolved":false,"context_lines":[{"line_number":151,"context_line":"Note: Before the traits feature got implemented, we can only schedule resource"},{"line_number":152,"context_line":"providers simply basing on the resource class of VGPU. After traits got ready,"},{"line_number":153,"context_line":"we can add traits for the resource provider then it\u0027s able to filter resource"},{"line_number":154,"context_line":"providers basing on the VGPU\u0027s characteristics."},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"5. At spawning an instance, the virt drivers should retrieve the VGPU resource"},{"line_number":157,"context_line":"specs from the instance request specs and map them to the proper VGPU type and"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_4e304d57","line":154,"updated":"2017-03-31 21:50:27.000000000","message":"Traits are already well on their way to being merged, so actually it\u0027s probably fine to remove the language around \"After traits got ready\". Just assume traits is complete for this spec.\n\nAlso, s/VGPU\u0027s characteristics/PGPU resource provider traits/","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"917c8d810b303fb598b516fab2339b6b6baca440","unresolved":false,"context_lines":[{"line_number":151,"context_line":"Note: Before the traits feature got implemented, we can only schedule resource"},{"line_number":152,"context_line":"providers simply basing on the resource class of VGPU. After traits got ready,"},{"line_number":153,"context_line":"we can add traits for the resource provider then it\u0027s able to filter resource"},{"line_number":154,"context_line":"providers basing on the VGPU\u0027s characteristics."},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"5. At spawning an instance, the virt drivers should retrieve the VGPU resource"},{"line_number":157,"context_line":"specs from the instance request specs and map them to the proper VGPU type and"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_4a31500b","line":154,"in_reply_to":"dfeb2761_4e304d57","updated":"2017-04-01 11:51:46.000000000","message":"I\u0027m happy to update this accordingly:-)","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"77292b60811b32e3f9b9e0f9297d1ae6948a4b77","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":" vgpu_whitelist\u003d[{\u0027vendor-name\u0027: \u0027Intel Corporation\u0027,"},{"line_number":172,"context_line":"                  \u0027device-name\u0027: \u0027Iris Pro Graphics P6300\u0027,"},{"line_number":173,"context_line":"                  \u0027vgpu_model\u0027: \u0027GPU_MODEL_GVT_G\u0027}]"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"Alternatives"},{"line_number":176,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_2e350947","line":173,"updated":"2017-03-31 21:50:27.000000000","message":"Meh, I\u0027m not thrilled with the above, because it\u0027s so similar to the (awful IMHO) pci_passthrough_whitelist. But at the same time, I understand that certain pGPUs are not actually PCI devices and therefore we will need some mechanism of indicating which devices (non-PCI) the virt driver can consider for exposing to guests.","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"917c8d810b303fb598b516fab2339b6b6baca440","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":" vgpu_whitelist\u003d[{\u0027vendor-name\u0027: \u0027Intel Corporation\u0027,"},{"line_number":172,"context_line":"                  \u0027device-name\u0027: \u0027Iris Pro Graphics P6300\u0027,"},{"line_number":173,"context_line":"                  \u0027vgpu_model\u0027: \u0027GPU_MODEL_GVT_G\u0027}]"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"Alternatives"},{"line_number":176,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_8a2e38a3","line":173,"in_reply_to":"dfeb2761_2e350947","updated":"2017-04-01 11:51:46.000000000","message":"Can we just define a field in nova config file to specify the enabled VGPU capability - e.g. \nenabled_vgpu_cap \u003d [\"VGPU_CAP_GVT_G\"]","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"77292b60811b32e3f9b9e0f9297d1ae6948a4b77","unresolved":false,"context_lines":[{"line_number":244,"context_line":"Work Items"},{"line_number":245,"context_line":"----------"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    1. Define traits into os-traits for VGPU;"},{"line_number":248,"context_line":"    2. In virt driver, add code to:"},{"line_number":249,"context_line":"       - query needed data for VGPU which is in the whitelist"},{"line_number":250,"context_line":"       - generate the nested resource providers"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_0e3a4535","line":247,"updated":"2017-03-31 21:50:27.000000000","message":"s/VGPU/PGPUs/ :)","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"917c8d810b303fb598b516fab2339b6b6baca440","unresolved":false,"context_lines":[{"line_number":244,"context_line":"Work Items"},{"line_number":245,"context_line":"----------"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    1. Define traits into os-traits for VGPU;"},{"line_number":248,"context_line":"    2. In virt driver, add code to:"},{"line_number":249,"context_line":"       - query needed data for VGPU which is in the whitelist"},{"line_number":250,"context_line":"       - generate the nested resource providers"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_6a041418","line":247,"in_reply_to":"dfeb2761_0e3a4535","updated":"2017-04-01 11:51:46.000000000","message":"VGPU \u003d\u003e VGPU\u0027s resource provider? Then the resource provider could be PGPU or a PGPU group which will supply same type of VGPUs.","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"77292b60811b32e3f9b9e0f9297d1ae6948a4b77","unresolved":false,"context_lines":[{"line_number":249,"context_line":"       - query needed data for VGPU which is in the whitelist"},{"line_number":250,"context_line":"       - generate the nested resource providers"},{"line_number":251,"context_line":"       - generate the inventory data for resource providers"},{"line_number":252,"context_line":"       - mapping VGPU\u0027s characteristics to the traits defined in os-traits"},{"line_number":253,"context_line":"       - associate these traits to the resource providers"},{"line_number":254,"context_line":"       - mapping traits to the required metadata data"},{"line_number":255,"context_line":"       - basing on the metadata for VGPU to create or/and attach VGPU to instance"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dfeb2761_ee3e0128","line":252,"updated":"2017-03-31 21:50:27.000000000","message":"s/VGPU\u0027s/PGPU\u0027s/ :)","commit_id":"05890e931d91dd0e4bb3fbb1f3397ba5a913702c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0c8acd42ab91733404a2ed58e63a604767819ca0","unresolved":false,"context_lines":[{"line_number":32,"context_line":"graphics processing."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"VGPU type: Some PGPUs (e.g. GRID K2) support several different types of"},{"line_number":35,"context_line":"virtual GPU by giving different profiles. Each profiles have a fixed amount"},{"line_number":36,"context_line":"of frame buffer, number of supported display heads and maximum resolutions,"},{"line_number":37,"context_line":"and are targeted at different classes of workload of VGPUs. Due to their"},{"line_number":38,"context_line":"different resource requirements, the maximum number of VGPUs that can be"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dfeb2761_c046217d","line":35,"range":{"start_line":35,"start_character":8,"end_line":35,"end_character":11},"updated":"2017-04-04 11:04:41.000000000","message":"nit: GPU*s*","commit_id":"42c3e11dc5d6b4b869c4ce89bbecda642b033f1a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0c8acd42ab91733404a2ed58e63a604767819ca0","unresolved":false,"context_lines":[{"line_number":32,"context_line":"graphics processing."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"VGPU type: Some PGPUs (e.g. GRID K2) support several different types of"},{"line_number":35,"context_line":"virtual GPU by giving different profiles. Each profiles have a fixed amount"},{"line_number":36,"context_line":"of frame buffer, number of supported display heads and maximum resolutions,"},{"line_number":37,"context_line":"and are targeted at different classes of workload of VGPUs. Due to their"},{"line_number":38,"context_line":"different resource requirements, the maximum number of VGPUs that can be"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dfeb2761_a03e7dd7","line":35,"range":{"start_line":35,"start_character":47,"end_line":35,"end_character":55},"updated":"2017-04-04 11:04:41.000000000","message":"nit: profile","commit_id":"42c3e11dc5d6b4b869c4ce89bbecda642b033f1a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0c8acd42ab91733404a2ed58e63a604767819ca0","unresolved":false,"context_lines":[{"line_number":37,"context_line":"and are targeted at different classes of workload of VGPUs. Due to their"},{"line_number":38,"context_line":"different resource requirements, the maximum number of VGPUs that can be"},{"line_number":39,"context_line":"created simultaneously on a PGPU varies according to the VGPU type. In order"},{"line_number":40,"context_line":"to make it easier for resource tracker, this spec will restrict each PGPU"},{"line_number":41,"context_line":"model to only expose one VGPU type."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"The following are examples for different profiles on PGPU::"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dfeb2761_402fb1a0","line":40,"range":{"start_line":40,"start_character":31,"end_line":40,"end_character":38},"updated":"2017-04-04 11:04:41.000000000","message":"s/tracker/tracking","commit_id":"42c3e11dc5d6b4b869c4ce89bbecda642b033f1a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0c8acd42ab91733404a2ed58e63a604767819ca0","unresolved":false,"context_lines":[{"line_number":38,"context_line":"different resource requirements, the maximum number of VGPUs that can be"},{"line_number":39,"context_line":"created simultaneously on a PGPU varies according to the VGPU type. In order"},{"line_number":40,"context_line":"to make it easier for resource tracker, this spec will restrict each PGPU"},{"line_number":41,"context_line":"model to only expose one VGPU type."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"The following are examples for different profiles on PGPU::"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"dfeb2761_db2bb47f","line":41,"updated":"2017-04-04 11:04:41.000000000","message":"how do you provide the supported relationship between pGPU models and vGPU models ? AFAIK, it\u0027s depending on how the virt driver returns the capabilities, and it\u0027s very different between Xen and libvirt.","commit_id":"42c3e11dc5d6b4b869c4ce89bbecda642b033f1a"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"b5549c74841a9a9b9e3b99dc9a7bd59085fa9f16","unresolved":false,"context_lines":[{"line_number":38,"context_line":"different resource requirements, the maximum number of VGPUs that can be"},{"line_number":39,"context_line":"created simultaneously on a PGPU varies according to the VGPU type. In order"},{"line_number":40,"context_line":"to make it easier for resource tracker, this spec will restrict each PGPU"},{"line_number":41,"context_line":"model to only expose one VGPU type."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"The following are examples for different profiles on PGPU::"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"dfeb2761_eb533d16","line":41,"in_reply_to":"dfeb2761_db2bb47f","updated":"2017-04-04 14:14:09.000000000","message":"virt driver should discover the PGUs and the capacity for each VGPU models; but currently we don\u0027t have a good way to track multiple VGPU\u0027s capacity in one resource provider. I chatted with Jaypipes and John Garbutt on it and both thought we could expose only one VGPU type for each PGPU in the same host. In order to support different VGPU types, we can enable different types in different hosts.\nSo I proposed to add a new virt driver configuration to specify the enabled VGPU types(see line 191); so virt driver only report the capacity for the enabled VGPU types.","commit_id":"42c3e11dc5d6b4b869c4ce89bbecda642b033f1a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0c8acd42ab91733404a2ed58e63a604767819ca0","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    +----------------+------------------------------------------+"},{"line_number":48,"context_line":"    | PGPU model     |Intel Corporation Iris Pro Graphics P6300 |"},{"line_number":49,"context_line":"    +----------------+------------------------------------------+"},{"line_number":50,"context_line":"    | VGPU model     | Intel GVT-g                              |"},{"line_number":51,"context_line":"    +----------------+------------------------------------------+"},{"line_number":52,"context_line":"    |Framebuffer size| 128 MB                                   |"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dfeb2761_db50540d","line":49,"updated":"2017-04-04 11:04:41.000000000","message":"how many pGPUs ? AFAIK, only one, right?","commit_id":"42c3e11dc5d6b4b869c4ce89bbecda642b033f1a"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"fd16f9c1a553fc10ecea26ddb507b83d35c56e39","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    +----------------+------------------------------------------+"},{"line_number":48,"context_line":"    | PGPU model     |Intel Corporation Iris Pro Graphics P6300 |"},{"line_number":49,"context_line":"    +----------------+------------------------------------------+"},{"line_number":50,"context_line":"    | VGPU model     | Intel GVT-g                              |"},{"line_number":51,"context_line":"    +----------------+------------------------------------------+"},{"line_number":52,"context_line":"    |Framebuffer size| 128 MB                                   |"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dfeb2761_edafb927","line":49,"in_reply_to":"dfeb2761_db50540d","updated":"2017-09-19 10:45:41.000000000","message":"yes, one pgpu per card. the graphics model is integrated in the CPU.","commit_id":"42c3e11dc5d6b4b869c4ce89bbecda642b033f1a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0c8acd42ab91733404a2ed58e63a604767819ca0","unresolved":false,"context_lines":[{"line_number":90,"context_line":"receives VGPU creation request, it will try to search in the target group"},{"line_number":91,"context_line":"and find a GPU which can supply the requested VGPU. In another word, we can\u0027t"},{"line_number":92,"context_line":"specify which PGPU the VGPU to be created on. XenServer will find a proper"},{"line_number":93,"context_line":"PGPU basing on the policy automatically."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"- Boot VM with VGPU in OpenStack"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"dfeb2761_5b6564e0","line":93,"updated":"2017-04-04 11:04:41.000000000","message":"I\u0027d like to discuss how libvirt provides capabilities for that too.","commit_id":"42c3e11dc5d6b4b869c4ce89bbecda642b033f1a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0c8acd42ab91733404a2ed58e63a604767819ca0","unresolved":false,"context_lines":[{"line_number":106,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"1. The feature of traits is targeted to support representing *qualitative*"},{"line_number":109,"context_line":"   aspects for resources to differenitiate their characteristics[os-traits]."},{"line_number":110,"context_line":"   GPUs with a predefined VGPU profile also have different characteristics:"},{"line_number":111,"context_line":"   e.g. the number of display heads, maximum resolutions, and framebuffer size."},{"line_number":112,"context_line":"   Let\u0027s define traits in os-traits for GPUs. These traits can be associated to"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dfeb2761_369f5760","line":109,"range":{"start_line":109,"start_character":28,"end_line":109,"end_character":42},"updated":"2017-04-04 11:04:41.000000000","message":"differenciate","commit_id":"42c3e11dc5d6b4b869c4ce89bbecda642b033f1a"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"3cf3f81db060213f644535db74af8d268537d8c4","unresolved":false,"context_lines":[{"line_number":106,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"1. The feature of traits is targeted to support representing *qualitative*"},{"line_number":109,"context_line":"   aspects for resources to differenitiate their characteristics[os-traits]."},{"line_number":110,"context_line":"   GPUs with a predefined VGPU profile also have different characteristics:"},{"line_number":111,"context_line":"   e.g. the number of display heads, maximum resolutions, and framebuffer size."},{"line_number":112,"context_line":"   Let\u0027s define traits in os-traits for GPUs. These traits can be associated to"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dfeb2761_c9599c35","line":109,"in_reply_to":"dfeb2761_369f5760","updated":"2017-04-04 16:51:40.000000000","message":"with a t: differentiate","commit_id":"42c3e11dc5d6b4b869c4ce89bbecda642b033f1a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0c8acd42ab91733404a2ed58e63a604767819ca0","unresolved":false,"context_lines":[{"line_number":163,"context_line":"     \"max_unit\": 1,"},{"line_number":164,"context_line":"     \"step_size\": 1,"},{"line_number":165,"context_line":"     \"allocation_ratio\": 1.0"},{"line_number":166,"context_line":"    }"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"4. Scheduler: The resource providers will be filtered by placement basing on"},{"line_number":169,"context_line":"   the resource class and traits [Resource-providers-scheduler]."}],"source_content_type":"text/x-rst","patch_set":10,"id":"dfeb2761_56c77b46","line":166,"updated":"2017-04-04 11:04:41.000000000","message":"again, how the virt driver knows how many vGPUs per pGPU type it can return ? For example, say a K1, it really depends on the type given vGPUs can be different between types","commit_id":"42c3e11dc5d6b4b869c4ce89bbecda642b033f1a"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"b5549c74841a9a9b9e3b99dc9a7bd59085fa9f16","unresolved":false,"context_lines":[{"line_number":163,"context_line":"     \"max_unit\": 1,"},{"line_number":164,"context_line":"     \"step_size\": 1,"},{"line_number":165,"context_line":"     \"allocation_ratio\": 1.0"},{"line_number":166,"context_line":"    }"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"4. Scheduler: The resource providers will be filtered by placement basing on"},{"line_number":169,"context_line":"   the resource class and traits [Resource-providers-scheduler]."}],"source_content_type":"text/x-rst","patch_set":10,"id":"dfeb2761_40ee88ed","line":166,"in_reply_to":"dfeb2761_56c77b46","updated":"2017-04-04 14:14:09.000000000","message":"Indeed. See the above response.","commit_id":"42c3e11dc5d6b4b869c4ce89bbecda642b033f1a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Problem description"},{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"With some graphics virtualization solutions e.g. Intel\u0027s GVT-g[igvt-g] and"},{"line_number":19,"context_line":"NVIDIA GRID [GRID-vGPU-User-Guide] VGPU, a single physical Graphics Processing"},{"line_number":20,"context_line":"Unit (PGPU) can be virtualized as multiple virtual Graphics Processing"},{"line_number":21,"context_line":"Units(VGPU). And some hypervisors support to boot VMs with VGPU to accelerate"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_524a3555","line":18,"range":{"start_line":18,"start_character":62,"end_line":18,"end_character":70},"updated":"2017-04-06 11:07:05.000000000","message":"I assume you\u0027re trying to do links, but that\u0027s not how you do them. What you want is one of the following:\n\nAnonymous links:\n\n   `Intel\u0027s GVT-g`__\n\n   __ link-to-gvt-g-info\n\nCitation links:\n\n    Intel\u0027s GVT-g [1]_\n\n    .. _[1]: link-to-gvt-g-info\n\nOr reference links:\n\n   `Intel\u0027s GVT-g`_\n\n   .. _Intel\u0027s GVT-g: link-to-gvt-g-info\n\nDitto for the rest of the document","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"With some graphics virtualization solutions e.g. Intel\u0027s GVT-g[igvt-g] and"},{"line_number":19,"context_line":"NVIDIA GRID [GRID-vGPU-User-Guide] VGPU, a single physical Graphics Processing"},{"line_number":20,"context_line":"Unit (PGPU) can be virtualized as multiple virtual Graphics Processing"},{"line_number":21,"context_line":"Units(VGPU). And some hypervisors support to boot VMs with VGPU to accelerate"},{"line_number":22,"context_line":"graphics processing. But presently Nova can\u0027t support VGPU. This proposal is"},{"line_number":23,"context_line":"to give a solution in Nova to support VGPU."}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_52911599","line":20,"range":{"start_line":20,"start_character":6,"end_line":20,"end_character":10},"updated":"2017-04-06 11:07:05.000000000","message":"Can you use \u0027pGPU\u0027 (like \u0027pCPU\u0027). Ditto for vGPU","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f3fc98ecb643875b332bafaf1ef7f6af5d78eb54","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"With some graphics virtualization solutions e.g. Intel\u0027s GVT-g[igvt-g] and"},{"line_number":19,"context_line":"NVIDIA GRID [GRID-vGPU-User-Guide] VGPU, a single physical Graphics Processing"},{"line_number":20,"context_line":"Unit (PGPU) can be virtualized as multiple virtual Graphics Processing"},{"line_number":21,"context_line":"Units(VGPU). And some hypervisors support to boot VMs with VGPU to accelerate"},{"line_number":22,"context_line":"graphics processing. But presently Nova can\u0027t support VGPU. This proposal is"},{"line_number":23,"context_line":"to give a solution in Nova to support VGPU."}],"source_content_type":"text/x-rst","patch_set":11,"id":"7ffa3b31_d399c51f","line":20,"range":{"start_line":20,"start_character":6,"end_line":20,"end_character":10},"in_reply_to":"bff0334d_181bf972","updated":"2017-04-14 19:32:56.000000000","message":"Use vGPU. NVIDIA also claims to trademark the name \"Tesla\", which clearly they cannot. Use vGPU and pGPU.","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"8f585930b8a1f09b856fe0e2ecc985a1e3d9a19a","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"With some graphics virtualization solutions e.g. Intel\u0027s GVT-g[igvt-g] and"},{"line_number":19,"context_line":"NVIDIA GRID [GRID-vGPU-User-Guide] VGPU, a single physical Graphics Processing"},{"line_number":20,"context_line":"Unit (PGPU) can be virtualized as multiple virtual Graphics Processing"},{"line_number":21,"context_line":"Units(VGPU). And some hypervisors support to boot VMs with VGPU to accelerate"},{"line_number":22,"context_line":"graphics processing. But presently Nova can\u0027t support VGPU. This proposal is"},{"line_number":23,"context_line":"to give a solution in Nova to support VGPU."}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_181bf972","line":20,"range":{"start_line":20,"start_character":6,"end_line":20,"end_character":10},"in_reply_to":"bff0334d_52911599","updated":"2017-04-12 15:37:14.000000000","message":"Unfortunately vGPU is the trademark of NVIDIA. So we\u0027d use VGPU; and use PGPU to just make it consistent in the same spec.\nhttps://www.nvidia.com/en-us/about-nvidia/legal-info/","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"With some graphics virtualization solutions e.g. Intel\u0027s GVT-g[igvt-g] and"},{"line_number":19,"context_line":"NVIDIA GRID [GRID-vGPU-User-Guide] VGPU, a single physical Graphics Processing"},{"line_number":20,"context_line":"Unit (PGPU) can be virtualized as multiple virtual Graphics Processing"},{"line_number":21,"context_line":"Units(VGPU). And some hypervisors support to boot VMs with VGPU to accelerate"},{"line_number":22,"context_line":"graphics processing. But presently Nova can\u0027t support VGPU. This proposal is"},{"line_number":23,"context_line":"to give a solution in Nova to support VGPU."},{"line_number":24,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_72d9b981","line":21,"range":{"start_line":20,"start_character":12,"end_line":21,"end_character":12},"updated":"2017-04-06 11:07:05.000000000","message":"I\u0027m not familiar with this technology. It sounds similar to SR-IOV. Any connection? Even if they\u0027re not the same, perhaps you could mention that this does a similar thing for graphics as SR-IOV does for general PCI devices (though usually NICs)?","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"04e1b1aed9e38b8a3bd4469db279fc8474e00a56","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"With some graphics virtualization solutions e.g. Intel\u0027s GVT-g[igvt-g] and"},{"line_number":19,"context_line":"NVIDIA GRID [GRID-vGPU-User-Guide] VGPU, a single physical Graphics Processing"},{"line_number":20,"context_line":"Unit (PGPU) can be virtualized as multiple virtual Graphics Processing"},{"line_number":21,"context_line":"Units(VGPU). And some hypervisors support to boot VMs with VGPU to accelerate"},{"line_number":22,"context_line":"graphics processing. But presently Nova can\u0027t support VGPU. This proposal is"},{"line_number":23,"context_line":"to give a solution in Nova to support VGPU."},{"line_number":24,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_e5e025fd","line":21,"range":{"start_line":20,"start_character":12,"end_line":21,"end_character":12},"in_reply_to":"bff0334d_72d9b981","updated":"2017-04-07 17:31:30.000000000","message":"yeah, looks similarly. But actually not real SR-IOV with gvt-g and Nvidia grid. The VGPUs are not real PCI devices so not VFs.","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":25,"context_line":"Use Cases"},{"line_number":26,"context_line":"----------"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"- VGPUs brief:"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Some VGPU capable graphics processor units can simulate multiple VGPUs on a"},{"line_number":31,"context_line":"single physical GPU(PGPU). We can assign the VGPUs to VMs to accelerate"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_52b8f528","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":14},"updated":"2017-04-06 11:07:05.000000000","message":"This won\u0027t render as you\u0027d like. Could you use rubric (an unindexed header) instead?\n\n  .. rubric:: VGPU Overview","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":31,"context_line":"single physical GPU(PGPU). We can assign the VGPUs to VMs to accelerate"},{"line_number":32,"context_line":"graphics processing."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"VGPU type: Some PGPUs (e.g. GRID K2) support several different types of"},{"line_number":35,"context_line":"virtual GPUs by giving different profiles. Each profile has a fixed amount"},{"line_number":36,"context_line":"of frame buffer, number of supported display heads and maximum resolutions,"},{"line_number":37,"context_line":"and are targeted at different classes of workload of VGPUs. Due to their"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_b282a14e","line":34,"range":{"start_line":34,"start_character":0,"end_line":34,"end_character":11},"updated":"2017-04-06 11:07:05.000000000","message":"This looks like a heading (or rubric?)","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":34,"context_line":"VGPU type: Some PGPUs (e.g. GRID K2) support several different types of"},{"line_number":35,"context_line":"virtual GPUs by giving different profiles. Each profile has a fixed amount"},{"line_number":36,"context_line":"of frame buffer, number of supported display heads and maximum resolutions,"},{"line_number":37,"context_line":"and are targeted at different classes of workload of VGPUs. Due to their"},{"line_number":38,"context_line":"different resource requirements, the maximum number of VGPUs that can be"},{"line_number":39,"context_line":"created simultaneously on a PGPU varies according to the VGPU type. In order"},{"line_number":40,"context_line":"to make it easier for resource tracking, this spec will restrict each PGPU"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_12370db3","line":37,"range":{"start_line":37,"start_character":50,"end_line":37,"end_character":58},"updated":"2017-04-06 11:07:05.000000000","message":"this last bit seems unnecessary","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"The following are examples for different profiles on PGPU::"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    Example 1: Intel(R) Xeon(R) CPU E3-1285 v4"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    +----------------+------------------------------------+"},{"line_number":48,"context_line":"    | Card Type      | Intel(R) Xeon(R) CPU E3-1285 v4    |"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_7247791f","line":45,"range":{"start_line":45,"start_character":4,"end_line":45,"end_character":46},"updated":"2017-04-06 11:07:05.000000000","message":"this looks like a rubric also. Also, surely the","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    Example 1: Intel(R) Xeon(R) CPU E3-1285 v4"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    +----------------+------------------------------------+"},{"line_number":48,"context_line":"    | Card Type      | Intel(R) Xeon(R) CPU E3-1285 v4    |"},{"line_number":49,"context_line":"    +----------------+------------------------------------+"},{"line_number":50,"context_line":"    | No. of PGPUs   | 1                                  |"},{"line_number":51,"context_line":"    +----------------+------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_326a1180","line":48,"range":{"start_line":48,"start_character":6,"end_line":48,"end_character":54},"updated":"2017-04-06 11:07:05.000000000","message":"This doesn\u0027t look like a card :)","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"04e1b1aed9e38b8a3bd4469db279fc8474e00a56","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    Example 1: Intel(R) Xeon(R) CPU E3-1285 v4"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    +----------------+------------------------------------+"},{"line_number":48,"context_line":"    | Card Type      | Intel(R) Xeon(R) CPU E3-1285 v4    |"},{"line_number":49,"context_line":"    +----------------+------------------------------------+"},{"line_number":50,"context_line":"    | No. of PGPUs   | 1                                  |"},{"line_number":51,"context_line":"    +----------------+------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_25a5edb5","line":48,"range":{"start_line":48,"start_character":6,"end_line":48,"end_character":54},"in_reply_to":"bff0334d_326a1180","updated":"2017-04-07 17:31:30.000000000","message":"it\u0027s CPU with integration GPU.Use the same table as NVIDIA GPU. will update it.","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"429b875c34d9b3b9d691e4aaaaea0feeab714e94","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    +----------------+------------------------------------+"},{"line_number":56,"context_line":"    |Framebuffer size| 128 MB                             |"},{"line_number":57,"context_line":"    +----------------+------------------------------------+"},{"line_number":58,"context_line":"    | Max heads      | 1                                  |"},{"line_number":59,"context_line":"    +----------------+------------------------------------+"},{"line_number":60,"context_line":"    | Max Resolution | 1920x1080                          |"},{"line_number":61,"context_line":"    +----------------+------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_85322f5d","line":58,"range":{"start_line":58,"start_character":6,"end_line":58,"end_character":15},"updated":"2017-04-11 09:49:48.000000000","message":"May I ask what is head?","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"4b6070a54de9c2ad1da37a9e2997e2695dacaa42","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    +----------------+------------------------------------+"},{"line_number":56,"context_line":"    |Framebuffer size| 128 MB                             |"},{"line_number":57,"context_line":"    +----------------+------------------------------------+"},{"line_number":58,"context_line":"    | Max heads      | 1                                  |"},{"line_number":59,"context_line":"    +----------------+------------------------------------+"},{"line_number":60,"context_line":"    | Max Resolution | 1920x1080                          |"},{"line_number":61,"context_line":"    +----------------+------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_7c6c599b","line":58,"range":{"start_line":58,"start_character":6,"end_line":58,"end_character":15},"in_reply_to":"bff0334d_85322f5d","updated":"2017-04-11 15:58:51.000000000","message":"*heads* at here means the \"virtual display outputs\".","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"429b875c34d9b3b9d691e4aaaaea0feeab714e94","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    +----------------+------------------------------------+"},{"line_number":69,"context_line":"    | Card Type      | NVIDIA GRID K1                     |"},{"line_number":70,"context_line":"    +----------------+------------------------------------+"},{"line_number":71,"context_line":"    | No. of PGPUs   | 4                                  |"},{"line_number":72,"context_line":"    +----------------+------------------------------------+"},{"line_number":73,"context_line":"    | FB size (MB)   | 4096 |2048 |1024 |512  | 256       |"},{"line_number":74,"context_line":"    +----------------+------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_9b95ee35","line":71,"range":{"start_line":71,"start_character":6,"end_line":71,"end_character":18},"updated":"2017-04-11 09:49:48.000000000","message":"Number of VGPU?","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"4b6070a54de9c2ad1da37a9e2997e2695dacaa42","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    +----------------+------------------------------------+"},{"line_number":69,"context_line":"    | Card Type      | NVIDIA GRID K1                     |"},{"line_number":70,"context_line":"    +----------------+------------------------------------+"},{"line_number":71,"context_line":"    | No. of PGPUs   | 4                                  |"},{"line_number":72,"context_line":"    +----------------+------------------------------------+"},{"line_number":73,"context_line":"    | FB size (MB)   | 4096 |2048 |1024 |512  | 256       |"},{"line_number":74,"context_line":"    +----------------+------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_9ce4bd0e","line":71,"range":{"start_line":71,"start_character":6,"end_line":71,"end_character":18},"in_reply_to":"bff0334d_9b95ee35","updated":"2017-04-11 15:58:51.000000000","message":"here it\u0027s PGPU. K1 has two PGPUs; In line 82, it\u0027s the \"number of vGPUs per PGPU\".","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    | No. of vGPUs   |                                    |"},{"line_number":63,"context_line":"    |    per GPU     | 7                                  |"},{"line_number":64,"context_line":"    +----------------+------------------------------------+"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    Example 2: NVIDIA GRID K1"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    +----------------+------------------------------------+"},{"line_number":69,"context_line":"    | Card Type      | NVIDIA GRID K1                     |"},{"line_number":70,"context_line":"    +----------------+------------------------------------+"},{"line_number":71,"context_line":"    | No. of PGPUs   | 4                                  |"},{"line_number":72,"context_line":"    +----------------+------------------------------------+"},{"line_number":73,"context_line":"    | FB size (MB)   | 4096 |2048 |1024 |512  | 256       |"},{"line_number":74,"context_line":"    +----------------+------------------------------------+"},{"line_number":75,"context_line":"    | Max heads      |   4  |  4  |  2  |  2  |  2        |"},{"line_number":76,"context_line":"    +----------------+------------------------------------+"},{"line_number":77,"context_line":"    | VGPU model     | K180Q|K160Q|K140Q|K120Q|    K100   |"},{"line_number":78,"context_line":"    +----------------+------------------------------------+"},{"line_number":79,"context_line":"    | Max Resolution |    2560x1600           | 1920×1200 |"},{"line_number":80,"context_line":"    +----------------+------------------------------------+"},{"line_number":81,"context_line":"    | No. of vGPUs   |      |     |     |     |           |"},{"line_number":82,"context_line":"    |    per GPU     |  1   |  2  | 4   |  8  |     8     |"},{"line_number":83,"context_line":"    +----------------+------+-----+-----+-----+-----------+"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"- GPU group in XenServer:"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_122eed42","line":83,"range":{"start_line":65,"start_character":0,"end_line":83,"end_character":59},"updated":"2017-04-06 11:07:05.000000000","message":"I doubt this needs to be indented?","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    +----------------+------+-----+-----+-----+-----------+"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"- GPU group in XenServer:"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"As the firt virt driver attempting to support VGPU, XenAPI (the virt driver"},{"line_number":89,"context_line":"for XenServer) will be used as the example to explain the proposal. XenServer"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_9221dd50","line":86,"range":{"start_line":86,"start_character":0,"end_line":86,"end_character":25},"updated":"2017-04-06 11:07:05.000000000","message":"Rubric","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"As the firt virt driver attempting to support VGPU, XenAPI (the virt driver"},{"line_number":89,"context_line":"for XenServer) will be used as the example to explain the proposal. XenServer"},{"line_number":90,"context_line":"uses PGPU group to manage GPUs. A PGPU group is a collection of PGPUs which"},{"line_number":91,"context_line":"belong to the same model. XenServer automatically creates gpu-group objects"},{"line_number":92,"context_line":"at startup to represent the distinct types of PGPU present on the platform."},{"line_number":93,"context_line":"And it supplies API to create VGPU on a specific PGPU group. Once XenServer"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_b2e18101","line":90,"range":{"start_line":90,"start_character":5,"end_line":90,"end_character":15},"updated":"2017-04-06 11:07:05.000000000","message":"*pGPU groups*","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":88,"context_line":"As the firt virt driver attempting to support VGPU, XenAPI (the virt driver"},{"line_number":89,"context_line":"for XenServer) will be used as the example to explain the proposal. XenServer"},{"line_number":90,"context_line":"uses PGPU group to manage GPUs. A PGPU group is a collection of PGPUs which"},{"line_number":91,"context_line":"belong to the same model. XenServer automatically creates gpu-group objects"},{"line_number":92,"context_line":"at startup to represent the distinct types of PGPU present on the platform."},{"line_number":93,"context_line":"And it supplies API to create VGPU on a specific PGPU group. Once XenServer"},{"line_number":94,"context_line":"receives VGPU creation request, it will try to search in the target group"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_f2c02953","line":91,"range":{"start_line":91,"start_character":58,"end_line":91,"end_character":67},"updated":"2017-04-06 11:07:05.000000000","message":"format as ``code``?","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"8f585930b8a1f09b856fe0e2ecc985a1e3d9a19a","unresolved":false,"context_lines":[{"line_number":88,"context_line":"As the firt virt driver attempting to support VGPU, XenAPI (the virt driver"},{"line_number":89,"context_line":"for XenServer) will be used as the example to explain the proposal. XenServer"},{"line_number":90,"context_line":"uses PGPU group to manage GPUs. A PGPU group is a collection of PGPUs which"},{"line_number":91,"context_line":"belong to the same model. XenServer automatically creates gpu-group objects"},{"line_number":92,"context_line":"at startup to represent the distinct types of PGPU present on the platform."},{"line_number":93,"context_line":"And it supplies API to create VGPU on a specific PGPU group. Once XenServer"},{"line_number":94,"context_line":"receives VGPU creation request, it will try to search in the target group"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_216fa52b","line":91,"range":{"start_line":91,"start_character":58,"end_line":91,"end_character":67},"in_reply_to":"bff0334d_f2c02953","updated":"2017-04-12 15:37:14.000000000","message":"Done","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":90,"context_line":"uses PGPU group to manage GPUs. A PGPU group is a collection of PGPUs which"},{"line_number":91,"context_line":"belong to the same model. XenServer automatically creates gpu-group objects"},{"line_number":92,"context_line":"at startup to represent the distinct types of PGPU present on the platform."},{"line_number":93,"context_line":"And it supplies API to create VGPU on a specific PGPU group. Once XenServer"},{"line_number":94,"context_line":"receives VGPU creation request, it will try to search in the target group"},{"line_number":95,"context_line":"and find a GPU which can supply the requested VGPU. In another word, we can\u0027t"},{"line_number":96,"context_line":"specify which PGPU the VGPU to be created on. XenServer will find a proper"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_b2af4193","line":93,"range":{"start_line":93,"start_character":0,"end_line":93,"end_character":22},"updated":"2017-04-06 11:07:05.000000000","message":"What does this mean? What API is it \"supplying\" (I assume you mean \"calling\")?","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"04e1b1aed9e38b8a3bd4469db279fc8474e00a56","unresolved":false,"context_lines":[{"line_number":90,"context_line":"uses PGPU group to manage GPUs. A PGPU group is a collection of PGPUs which"},{"line_number":91,"context_line":"belong to the same model. XenServer automatically creates gpu-group objects"},{"line_number":92,"context_line":"at startup to represent the distinct types of PGPU present on the platform."},{"line_number":93,"context_line":"And it supplies API to create VGPU on a specific PGPU group. Once XenServer"},{"line_number":94,"context_line":"receives VGPU creation request, it will try to search in the target group"},{"line_number":95,"context_line":"and find a GPU which can supply the requested VGPU. In another word, we can\u0027t"},{"line_number":96,"context_line":"specify which PGPU the VGPU to be created on. XenServer will find a proper"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_050f8989","line":93,"range":{"start_line":93,"start_character":0,"end_line":93,"end_character":22},"in_reply_to":"bff0334d_b2af4193","updated":"2017-04-07 17:31:30.000000000","message":"I mean XS will expose the API which be used by applications to create VGPU.\nhttp://xapi-project.github.io/xen-api/classes/vgpu.html\nVGPU ref create (session ref, VM ref, GPU_group ref, string, (string → string) map, VGPU_type ref)","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":91,"context_line":"belong to the same model. XenServer automatically creates gpu-group objects"},{"line_number":92,"context_line":"at startup to represent the distinct types of PGPU present on the platform."},{"line_number":93,"context_line":"And it supplies API to create VGPU on a specific PGPU group. Once XenServer"},{"line_number":94,"context_line":"receives VGPU creation request, it will try to search in the target group"},{"line_number":95,"context_line":"and find a GPU which can supply the requested VGPU. In another word, we can\u0027t"},{"line_number":96,"context_line":"specify which PGPU the VGPU to be created on. XenServer will find a proper"},{"line_number":97,"context_line":"PGPU basing on the policy automatically."}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_92943d46","line":94,"range":{"start_line":94,"start_character":9,"end_line":94,"end_character":14},"updated":"2017-04-06 11:07:05.000000000","message":"* a vGPU","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":91,"context_line":"belong to the same model. XenServer automatically creates gpu-group objects"},{"line_number":92,"context_line":"at startup to represent the distinct types of PGPU present on the platform."},{"line_number":93,"context_line":"And it supplies API to create VGPU on a specific PGPU group. Once XenServer"},{"line_number":94,"context_line":"receives VGPU creation request, it will try to search in the target group"},{"line_number":95,"context_line":"and find a GPU which can supply the requested VGPU. In another word, we can\u0027t"},{"line_number":96,"context_line":"specify which PGPU the VGPU to be created on. XenServer will find a proper"},{"line_number":97,"context_line":"PGPU basing on the policy automatically."},{"line_number":98,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_d283e503","line":95,"range":{"start_line":94,"start_character":40,"end_line":95,"end_character":8},"updated":"2017-04-06 11:07:05.000000000","message":"It won\u0027t *try* to search - it *will* search :)\n\n  it will search the target group for a GPU","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":92,"context_line":"at startup to represent the distinct types of PGPU present on the platform."},{"line_number":93,"context_line":"And it supplies API to create VGPU on a specific PGPU group. Once XenServer"},{"line_number":94,"context_line":"receives VGPU creation request, it will try to search in the target group"},{"line_number":95,"context_line":"and find a GPU which can supply the requested VGPU. In another word, we can\u0027t"},{"line_number":96,"context_line":"specify which PGPU the VGPU to be created on. XenServer will find a proper"},{"line_number":97,"context_line":"PGPU basing on the policy automatically."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"- Boot VM with VGPU in OpenStack"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_d298856b","line":96,"range":{"start_line":95,"start_character":52,"end_line":96,"end_character":7},"updated":"2017-04-06 11:07:05.000000000","message":"Let\u0027s say:\n\n  **It is not possible to specify...**\n\nIn bold because this is really important (it\u0027s also how we do NUMA topologies)","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"8f585930b8a1f09b856fe0e2ecc985a1e3d9a19a","unresolved":false,"context_lines":[{"line_number":92,"context_line":"at startup to represent the distinct types of PGPU present on the platform."},{"line_number":93,"context_line":"And it supplies API to create VGPU on a specific PGPU group. Once XenServer"},{"line_number":94,"context_line":"receives VGPU creation request, it will try to search in the target group"},{"line_number":95,"context_line":"and find a GPU which can supply the requested VGPU. In another word, we can\u0027t"},{"line_number":96,"context_line":"specify which PGPU the VGPU to be created on. XenServer will find a proper"},{"line_number":97,"context_line":"PGPU basing on the policy automatically."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"- Boot VM with VGPU in OpenStack"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_61812dc3","line":96,"range":{"start_line":95,"start_character":52,"end_line":96,"end_character":7},"in_reply_to":"bff0334d_d298856b","updated":"2017-04-12 15:37:14.000000000","message":"Done","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a58327804da0089b0bda41edbecf05aa39fbed3b","unresolved":false,"context_lines":[{"line_number":94,"context_line":"receives VGPU creation request, it will try to search in the target group"},{"line_number":95,"context_line":"and find a GPU which can supply the requested VGPU. In another word, we can\u0027t"},{"line_number":96,"context_line":"specify which PGPU the VGPU to be created on. XenServer will find a proper"},{"line_number":97,"context_line":"PGPU basing on the policy automatically."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"- Boot VM with VGPU in OpenStack"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_2012df59","line":97,"updated":"2017-04-05 16:34:17.000000000","message":"I think it would be worth if some libvirt seasoned people could chime in and give ideas on how the libvirt capabilities are exposed wrt vGPU.","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":25,"context_line":"Use Cases"},{"line_number":26,"context_line":"----------"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"- VGPUs brief:"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Some VGPU capable graphics processor units can simulate multiple VGPUs on a"},{"line_number":31,"context_line":"single physical GPU(PGPU). We can assign the VGPUs to VMs to accelerate"},{"line_number":32,"context_line":"graphics processing."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"VGPU type: Some PGPUs (e.g. GRID K2) support several different types of"},{"line_number":35,"context_line":"virtual GPUs by giving different profiles. Each profile has a fixed amount"},{"line_number":36,"context_line":"of frame buffer, number of supported display heads and maximum resolutions,"},{"line_number":37,"context_line":"and are targeted at different classes of workload of VGPUs. Due to their"},{"line_number":38,"context_line":"different resource requirements, the maximum number of VGPUs that can be"},{"line_number":39,"context_line":"created simultaneously on a PGPU varies according to the VGPU type. In order"},{"line_number":40,"context_line":"to make it easier for resource tracking, this spec will restrict each PGPU"},{"line_number":41,"context_line":"model to only expose one VGPU type."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"The following are examples for different profiles on PGPU::"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    Example 1: Intel(R) Xeon(R) CPU E3-1285 v4"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    +----------------+------------------------------------+"},{"line_number":48,"context_line":"    | Card Type      | Intel(R) Xeon(R) CPU E3-1285 v4    |"},{"line_number":49,"context_line":"    +----------------+------------------------------------+"},{"line_number":50,"context_line":"    | No. of PGPUs   | 1                                  |"},{"line_number":51,"context_line":"    +----------------+------------------------------------+"},{"line_number":52,"context_line":"    | PGPU model     | Iris Pro Graphics P6300            |"},{"line_number":53,"context_line":"    +----------------+------------------------------------+"},{"line_number":54,"context_line":"    | VGPU model     | Intel GVT-g                        |"},{"line_number":55,"context_line":"    +----------------+------------------------------------+"},{"line_number":56,"context_line":"    |Framebuffer size| 128 MB                             |"},{"line_number":57,"context_line":"    +----------------+------------------------------------+"},{"line_number":58,"context_line":"    | Max heads      | 1                                  |"},{"line_number":59,"context_line":"    +----------------+------------------------------------+"},{"line_number":60,"context_line":"    | Max Resolution | 1920x1080                          |"},{"line_number":61,"context_line":"    +----------------+------------------------------------+"},{"line_number":62,"context_line":"    | No. of vGPUs   |                                    |"},{"line_number":63,"context_line":"    |    per GPU     | 7                                  |"},{"line_number":64,"context_line":"    +----------------+------------------------------------+"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    Example 2: NVIDIA GRID K1"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    +----------------+------------------------------------+"},{"line_number":69,"context_line":"    | Card Type      | NVIDIA GRID K1                     |"},{"line_number":70,"context_line":"    +----------------+------------------------------------+"},{"line_number":71,"context_line":"    | No. of PGPUs   | 4                                  |"},{"line_number":72,"context_line":"    +----------------+------------------------------------+"},{"line_number":73,"context_line":"    | FB size (MB)   | 4096 |2048 |1024 |512  | 256       |"},{"line_number":74,"context_line":"    +----------------+------------------------------------+"},{"line_number":75,"context_line":"    | Max heads      |   4  |  4  |  2  |  2  |  2        |"},{"line_number":76,"context_line":"    +----------------+------------------------------------+"},{"line_number":77,"context_line":"    | VGPU model     | K180Q|K160Q|K140Q|K120Q|    K100   |"},{"line_number":78,"context_line":"    +----------------+------------------------------------+"},{"line_number":79,"context_line":"    | Max Resolution |    2560x1600           | 1920×1200 |"},{"line_number":80,"context_line":"    +----------------+------------------------------------+"},{"line_number":81,"context_line":"    | No. of vGPUs   |      |     |     |     |           |"},{"line_number":82,"context_line":"    |    per GPU     |  1   |  2  | 4   |  8  |     8     |"},{"line_number":83,"context_line":"    +----------------+------+-----+-----+-----+-----------+"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"- GPU group in XenServer:"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"As the firt virt driver attempting to support VGPU, XenAPI (the virt driver"},{"line_number":89,"context_line":"for XenServer) will be used as the example to explain the proposal. XenServer"},{"line_number":90,"context_line":"uses PGPU group to manage GPUs. A PGPU group is a collection of PGPUs which"},{"line_number":91,"context_line":"belong to the same model. XenServer automatically creates gpu-group objects"},{"line_number":92,"context_line":"at startup to represent the distinct types of PGPU present on the platform."},{"line_number":93,"context_line":"And it supplies API to create VGPU on a specific PGPU group. Once XenServer"},{"line_number":94,"context_line":"receives VGPU creation request, it will try to search in the target group"},{"line_number":95,"context_line":"and find a GPU which can supply the requested VGPU. In another word, we can\u0027t"},{"line_number":96,"context_line":"specify which PGPU the VGPU to be created on. XenServer will find a proper"},{"line_number":97,"context_line":"PGPU basing on the policy automatically."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"- Boot VM with VGPU in OpenStack"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_1206ed87","line":97,"range":{"start_line":28,"start_character":0,"end_line":97,"end_character":40},"updated":"2017-04-06 11:07:05.000000000","message":"This entire body of text belongs in the previous section. Only the last paragraph should be included here","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":94,"context_line":"receives VGPU creation request, it will try to search in the target group"},{"line_number":95,"context_line":"and find a GPU which can supply the requested VGPU. In another word, we can\u0027t"},{"line_number":96,"context_line":"specify which PGPU the VGPU to be created on. XenServer will find a proper"},{"line_number":97,"context_line":"PGPU basing on the policy automatically."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"- Boot VM with VGPU in OpenStack"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_f2e149d2","line":97,"in_reply_to":"bff0334d_2012df59","updated":"2017-04-06 11:07:05.000000000","message":"Yes. I\u0027m not familiar with the libvirt APIs around this. I think you need to provide at least some research on support in other drivers like libvirt/KVM, libvirt/xen and Hyper-V. You don\u0027t necessarily have to implement any of these, mind","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"4b6070a54de9c2ad1da37a9e2997e2695dacaa42","unresolved":false,"context_lines":[{"line_number":94,"context_line":"receives VGPU creation request, it will try to search in the target group"},{"line_number":95,"context_line":"and find a GPU which can supply the requested VGPU. In another word, we can\u0027t"},{"line_number":96,"context_line":"specify which PGPU the VGPU to be created on. XenServer will find a proper"},{"line_number":97,"context_line":"PGPU basing on the policy automatically."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"- Boot VM with VGPU in OpenStack"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_fcb069df","line":97,"in_reply_to":"bff0334d_2587e3b7","updated":"2017-04-11 15:58:51.000000000","message":"That\u0027s true. I think I should put background information at here to explain how the GPUs are organized so that we can make decision how to create ResourceProviders.","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"429b875c34d9b3b9d691e4aaaaea0feeab714e94","unresolved":false,"context_lines":[{"line_number":94,"context_line":"receives VGPU creation request, it will try to search in the target group"},{"line_number":95,"context_line":"and find a GPU which can supply the requested VGPU. In another word, we can\u0027t"},{"line_number":96,"context_line":"specify which PGPU the VGPU to be created on. XenServer will find a proper"},{"line_number":97,"context_line":"PGPU basing on the policy automatically."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"- Boot VM with VGPU in OpenStack"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_2587e3b7","line":97,"in_reply_to":"bff0334d_c556415d","updated":"2017-04-11 09:49:48.000000000","message":"I guess JiangHua is thinking about how to create ResourceProvider for GPU. Create a one ResourceProvider for a GPU, or create a ResourceProvider for a GPU group. But yes, that isn\u0027t belong into this section.","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"04e1b1aed9e38b8a3bd4469db279fc8474e00a56","unresolved":false,"context_lines":[{"line_number":94,"context_line":"receives VGPU creation request, it will try to search in the target group"},{"line_number":95,"context_line":"and find a GPU which can supply the requested VGPU. In another word, we can\u0027t"},{"line_number":96,"context_line":"specify which PGPU the VGPU to be created on. XenServer will find a proper"},{"line_number":97,"context_line":"PGPU basing on the policy automatically."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"- Boot VM with VGPU in OpenStack"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_c556415d","line":97,"in_reply_to":"bff0334d_f2e149d2","updated":"2017-04-07 17:31:30.000000000","message":"yeah. Per my understanding and along with the chat with vladikr(who are working on VGPU with libvirt), libvirt can expose capacity for each PGPU instead of using pgpu groups. So as line151, the resource provider could be PGPU or PGPU group. the driver layer can determine that basing the real situation.","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":96,"context_line":"specify which PGPU the VGPU to be created on. XenServer will find a proper"},{"line_number":97,"context_line":"PGPU basing on the policy automatically."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"- Boot VM with VGPU in OpenStack"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"  - As a cloud administrator, Bob should be able to define flavors which"},{"line_number":102,"context_line":"    requests an amount of VGPU resources along with a set of required traits"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_92f9dd81","line":99,"range":{"start_line":99,"start_character":0,"end_line":99,"end_character":32},"updated":"2017-04-06 11:07:05.000000000","message":"Drop this and deindent the below","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"8f585930b8a1f09b856fe0e2ecc985a1e3d9a19a","unresolved":false,"context_lines":[{"line_number":96,"context_line":"specify which PGPU the VGPU to be created on. XenServer will find a proper"},{"line_number":97,"context_line":"PGPU basing on the policy automatically."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"- Boot VM with VGPU in OpenStack"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"  - As a cloud administrator, Bob should be able to define flavors which"},{"line_number":102,"context_line":"    requests an amount of VGPU resources along with a set of required traits"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_0125c108","line":99,"range":{"start_line":99,"start_character":0,"end_line":99,"end_character":32},"in_reply_to":"bff0334d_92f9dd81","updated":"2017-04-12 15:37:14.000000000","message":"Done","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"- Boot VM with VGPU in OpenStack"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"  - As a cloud administrator, Bob should be able to define flavors which"},{"line_number":102,"context_line":"    requests an amount of VGPU resources along with a set of required traits"},{"line_number":103,"context_line":"    indicating some GPU-specific attributes (e.g. Framebuffer size, Max heads,"},{"line_number":104,"context_line":"    Max Resolution, etc.)."}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_72f65992","line":101,"range":{"start_line":101,"start_character":30,"end_line":101,"end_character":33},"updated":"2017-04-06 11:07:05.000000000","message":"I should","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"8f585930b8a1f09b856fe0e2ecc985a1e3d9a19a","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"- Boot VM with VGPU in OpenStack"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"  - As a cloud administrator, Bob should be able to define flavors which"},{"line_number":102,"context_line":"    requests an amount of VGPU resources along with a set of required traits"},{"line_number":103,"context_line":"    indicating some GPU-specific attributes (e.g. Framebuffer size, Max heads,"},{"line_number":104,"context_line":"    Max Resolution, etc.)."}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_e11f7db4","line":101,"range":{"start_line":101,"start_character":30,"end_line":101,"end_character":33},"in_reply_to":"bff0334d_72f65992","updated":"2017-04-12 15:37:14.000000000","message":"Done","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"429b875c34d9b3b9d691e4aaaaea0feeab714e94","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"  - As a cloud administrator, Bob should be able to define flavors which"},{"line_number":102,"context_line":"    requests an amount of VGPU resources along with a set of required traits"},{"line_number":103,"context_line":"    indicating some GPU-specific attributes (e.g. Framebuffer size, Max heads,"},{"line_number":104,"context_line":"    Max Resolution, etc.)."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"  - As an end user, Bob should be allowed to boot VMs which have VGPUs by"},{"line_number":107,"context_line":"    using the pre-defined flavor."}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_85434f6c","line":104,"range":{"start_line":103,"start_character":50,"end_line":104,"end_character":26},"updated":"2017-04-11 09:49:48.000000000","message":"We can separate this use-case for mulitple items:\n\n\"As a user, I want to boot up a VM with a VGPU which supported Max Resolution 1920x1080 for better display?\"\n\n\"As a user, I want to boot up a VM with a VGPU which framebuffer size is 128MB to get better performance?\"\n\nThat can help us to understand why the user needs to choice the resolution and FB size.","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a58327804da0089b0bda41edbecf05aa39fbed3b","unresolved":false,"context_lines":[{"line_number":101,"context_line":"  - As a cloud administrator, Bob should be able to define flavors which"},{"line_number":102,"context_line":"    requests an amount of VGPU resources along with a set of required traits"},{"line_number":103,"context_line":"    indicating some GPU-specific attributes (e.g. Framebuffer size, Max heads,"},{"line_number":104,"context_line":"    Max Resolution, etc.)."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"  - As an end user, Bob should be allowed to boot VMs which have VGPUs by"},{"line_number":107,"context_line":"    using the pre-defined flavor."}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_a04caf76","line":104,"updated":"2017-04-05 16:34:17.000000000","message":"and I guess also the user would specify the amount of VGPUs in the flavor as an extra spec ? (well, until we decompose flavors into resource queries)","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    indicating some GPU-specific attributes (e.g. Framebuffer size, Max heads,"},{"line_number":104,"context_line":"    Max Resolution, etc.)."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"  - As an end user, Bob should be allowed to boot VMs which have VGPUs by"},{"line_number":107,"context_line":"    using the pre-defined flavor."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_52f3559f","line":106,"range":{"start_line":106,"start_character":20,"end_line":106,"end_character":23},"updated":"2017-04-06 11:07:05.000000000","message":"I should","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a58327804da0089b0bda41edbecf05aa39fbed3b","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    indicating some GPU-specific attributes (e.g. Framebuffer size, Max heads,"},{"line_number":104,"context_line":"    Max Resolution, etc.)."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"  - As an end user, Bob should be allowed to boot VMs which have VGPUs by"},{"line_number":107,"context_line":"    using the pre-defined flavor."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_4074c399","line":106,"range":{"start_line":106,"start_character":20,"end_line":106,"end_character":23},"updated":"2017-04-05 16:34:17.000000000","message":"nit: if you use the same name for defining two roles (user and operator), it\u0027d be worth using separate names (like Alice as a user and Bob as the operator). Or don\u0027t use namely, that\u0027s less confusing.","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"8f585930b8a1f09b856fe0e2ecc985a1e3d9a19a","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    indicating some GPU-specific attributes (e.g. Framebuffer size, Max heads,"},{"line_number":104,"context_line":"    Max Resolution, etc.)."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"  - As an end user, Bob should be allowed to boot VMs which have VGPUs by"},{"line_number":107,"context_line":"    using the pre-defined flavor."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_817e71e1","line":106,"range":{"start_line":106,"start_character":20,"end_line":106,"end_character":23},"in_reply_to":"bff0334d_52f3559f","updated":"2017-04-12 15:37:14.000000000","message":"Done","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"429b875c34d9b3b9d691e4aaaaea0feeab714e94","unresolved":false,"context_lines":[{"line_number":109,"context_line":"Proposed change"},{"line_number":110,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"1. The feature of traits is targeted to support representing *qualitative*"},{"line_number":113,"context_line":"   aspects for resources to differentiate their characteristics[os-traits]."},{"line_number":114,"context_line":"   GPUs with a predefined VGPU profile also have different characteristics:"},{"line_number":115,"context_line":"   e.g. the number of display heads, maximum resolutions, and framebuffer size."}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_a8a18afa","line":112,"range":{"start_line":112,"start_character":61,"end_line":112,"end_character":74},"updated":"2017-04-11 09:49:48.000000000","message":"Maybe we can structure this section like two parts: \u0027qualitative\u0027 and \u0027quantitative\u0027.\n\nThe #1 is for \u0027qualitative\u0027, the #2 and #3 are about \u0027quantitative\u0027","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"4b6070a54de9c2ad1da37a9e2997e2695dacaa42","unresolved":false,"context_lines":[{"line_number":109,"context_line":"Proposed change"},{"line_number":110,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"1. The feature of traits is targeted to support representing *qualitative*"},{"line_number":113,"context_line":"   aspects for resources to differentiate their characteristics[os-traits]."},{"line_number":114,"context_line":"   GPUs with a predefined VGPU profile also have different characteristics:"},{"line_number":115,"context_line":"   e.g. the number of display heads, maximum resolutions, and framebuffer size."}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_fcfe2969","line":112,"range":{"start_line":112,"start_character":61,"end_line":112,"end_character":74},"in_reply_to":"bff0334d_a8a18afa","updated":"2017-04-11 15:58:51.000000000","message":"a good idea. will rework this part.","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"429b875c34d9b3b9d691e4aaaaea0feeab714e94","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    * number of display heads:"},{"line_number":123,"context_line":"      HW_GPU_HEADS_1 \u003d NS_GPU + \u0027HEADS_1\u0027"},{"line_number":124,"context_line":"      HW_GPU_HEADS_2 \u003d NS_GPU + \u0027HEADS_2\u0027"},{"line_number":125,"context_line":"      …"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    * maximum resolutions:"},{"line_number":128,"context_line":"      HW_GPU_MAX_RESOLUTION_1920_1080 \u003d NS_GPU + \"MAX_RESOLUTION_1920_1080\""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_08487659","line":125,"range":{"start_line":125,"start_character":6,"end_line":125,"end_character":7},"updated":"2017-04-11 09:49:48.000000000","message":"What is heads. Do we need to create 10000 heads....","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"4b6070a54de9c2ad1da37a9e2997e2695dacaa42","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    * number of display heads:"},{"line_number":123,"context_line":"      HW_GPU_HEADS_1 \u003d NS_GPU + \u0027HEADS_1\u0027"},{"line_number":124,"context_line":"      HW_GPU_HEADS_2 \u003d NS_GPU + \u0027HEADS_2\u0027"},{"line_number":125,"context_line":"      …"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    * maximum resolutions:"},{"line_number":128,"context_line":"      HW_GPU_MAX_RESOLUTION_1920_1080 \u003d NS_GPU + \"MAX_RESOLUTION_1920_1080\""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_5ca51546","line":125,"range":{"start_line":125,"start_character":6,"end_line":125,"end_character":7},"in_reply_to":"bff0334d_08487659","updated":"2017-04-11 15:58:51.000000000","message":"this is the number of the virtual display outputs. It shouldn\u0027t be that big:-) The larges number supported by NVIDIA GPU is 4. But it looks like this users maybe not care about this factors much. And we plan to use custom traits for VGPU types (we can get the display heads from the VGPU type). So I plan to remove it.","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"429b875c34d9b3b9d691e4aaaaea0feeab714e94","unresolved":false,"context_lines":[{"line_number":129,"context_line":"      HW_GPU_MAX_RESOLUTION_1920_1200 \u003d NS_GPU + \"MAX_RESOLUTION_1920_1200\""},{"line_number":130,"context_line":"      ..."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    * framebuffer size:"},{"line_number":133,"context_line":"      HW_GPU_FB_SIZE_128MB \u003d NS_GPU + \"FB_SIZE_128MB\""},{"line_number":134,"context_line":"      HW_GPU_FB_SIZE_256MB \u003d NS_GPU + \"FB_SIZE_256MB\""},{"line_number":135,"context_line":"      HW_GPU_FB_SIZE_512MB \u003d NS_GPU + \"FB_SIZE_512MB\""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_3b4022a5","line":132,"updated":"2017-04-11 09:49:48.000000000","message":"There should be max number of VGPU for a GPU? And the FB size can be 4096MB, also 512 MB.\n\nBut can I have all the VGPU for a single PGPU to have 4096MB FB, Does that exceed the max of FB which the PGPU have?","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"4b6070a54de9c2ad1da37a9e2997e2695dacaa42","unresolved":false,"context_lines":[{"line_number":129,"context_line":"      HW_GPU_MAX_RESOLUTION_1920_1200 \u003d NS_GPU + \"MAX_RESOLUTION_1920_1200\""},{"line_number":130,"context_line":"      ..."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    * framebuffer size:"},{"line_number":133,"context_line":"      HW_GPU_FB_SIZE_128MB \u003d NS_GPU + \"FB_SIZE_128MB\""},{"line_number":134,"context_line":"      HW_GPU_FB_SIZE_256MB \u003d NS_GPU + \"FB_SIZE_256MB\""},{"line_number":135,"context_line":"      HW_GPU_FB_SIZE_512MB \u003d NS_GPU + \"FB_SIZE_512MB\""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_172e4691","line":132,"in_reply_to":"bff0334d_3b4022a5","updated":"2017-04-11 15:58:51.000000000","message":"We will expose only one VGPU type for each GPU. hypervisor will calculate the max number of the VGPUs basing the size defined with the VGPU type. so the total FB size of VGPUs won\u0027t exceed the GPU\u0027s FB size.","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":115,"context_line":"   e.g. the number of display heads, maximum resolutions, and framebuffer size."},{"line_number":116,"context_line":"   Let\u0027s define traits in os-traits for GPUs. These traits can be associated to"},{"line_number":117,"context_line":"   the resource providers which supply VGPU resources::"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    * define name space for GPU:"},{"line_number":120,"context_line":"      NS_GPU \u003d \"HW_GPU_\""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    * number of display heads:"},{"line_number":123,"context_line":"      HW_GPU_HEADS_1 \u003d NS_GPU + \u0027HEADS_1\u0027"},{"line_number":124,"context_line":"      HW_GPU_HEADS_2 \u003d NS_GPU + \u0027HEADS_2\u0027"},{"line_number":125,"context_line":"      …"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    * maximum resolutions:"},{"line_number":128,"context_line":"      HW_GPU_MAX_RESOLUTION_1920_1080 \u003d NS_GPU + \"MAX_RESOLUTION_1920_1080\""},{"line_number":129,"context_line":"      HW_GPU_MAX_RESOLUTION_1920_1200 \u003d NS_GPU + \"MAX_RESOLUTION_1920_1200\""},{"line_number":130,"context_line":"      ..."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    * framebuffer size:"},{"line_number":133,"context_line":"      HW_GPU_FB_SIZE_128MB \u003d NS_GPU + \"FB_SIZE_128MB\""},{"line_number":134,"context_line":"      HW_GPU_FB_SIZE_256MB \u003d NS_GPU + \"FB_SIZE_256MB\""},{"line_number":135,"context_line":"      HW_GPU_FB_SIZE_512MB \u003d NS_GPU + \"FB_SIZE_512MB\""},{"line_number":136,"context_line":"      ..."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"2. Define a new standard resource class for VGPU."},{"line_number":139,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_324571b4","line":136,"range":{"start_line":118,"start_character":0,"end_line":136,"end_character":9},"updated":"2017-04-06 11:07:05.000000000","message":"I don\u0027t see why this needs to be formatted as code. Could you fix it up","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a58327804da0089b0bda41edbecf05aa39fbed3b","unresolved":false,"context_lines":[{"line_number":133,"context_line":"      HW_GPU_FB_SIZE_128MB \u003d NS_GPU + \"FB_SIZE_128MB\""},{"line_number":134,"context_line":"      HW_GPU_FB_SIZE_256MB \u003d NS_GPU + \"FB_SIZE_256MB\""},{"line_number":135,"context_line":"      HW_GPU_FB_SIZE_512MB \u003d NS_GPU + \"FB_SIZE_512MB\""},{"line_number":136,"context_line":"      ..."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"2. Define a new standard resource class for VGPU."},{"line_number":139,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_20977f93","line":136,"updated":"2017-04-05 16:34:17.000000000","message":"Which specific traits you thinking are worth being defined in the os-traits library and which traits should be custom ?","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"04e1b1aed9e38b8a3bd4469db279fc8474e00a56","unresolved":false,"context_lines":[{"line_number":133,"context_line":"      HW_GPU_FB_SIZE_128MB \u003d NS_GPU + \"FB_SIZE_128MB\""},{"line_number":134,"context_line":"      HW_GPU_FB_SIZE_256MB \u003d NS_GPU + \"FB_SIZE_256MB\""},{"line_number":135,"context_line":"      HW_GPU_FB_SIZE_512MB \u003d NS_GPU + \"FB_SIZE_512MB\""},{"line_number":136,"context_line":"      ..."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"2. Define a new standard resource class for VGPU."},{"line_number":139,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_e5bb856f","line":136,"in_reply_to":"bff0334d_20977f93","updated":"2017-04-07 17:31:30.000000000","message":"Bob has pointed out that gvt-g actually don\u0027t restrict the resolutions or the heads. So ideally we should specify the VGPU types in the traits. Need thinking how to make it reasonable as a trait.","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"429b875c34d9b3b9d691e4aaaaea0feeab714e94","unresolved":false,"context_lines":[{"line_number":133,"context_line":"      HW_GPU_FB_SIZE_128MB \u003d NS_GPU + \"FB_SIZE_128MB\""},{"line_number":134,"context_line":"      HW_GPU_FB_SIZE_256MB \u003d NS_GPU + \"FB_SIZE_256MB\""},{"line_number":135,"context_line":"      HW_GPU_FB_SIZE_512MB \u003d NS_GPU + \"FB_SIZE_512MB\""},{"line_number":136,"context_line":"      ..."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"2. Define a new standard resource class for VGPU."},{"line_number":139,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_e82f9285","line":136,"in_reply_to":"bff0334d_e5bb856f","updated":"2017-04-11 09:49:48.000000000","message":"I also agree to that we shouldn\u0027t talk about VGPU type in the traits.\n\nIf the VGPU didn\u0027t have restrict for the resolutions, we can have a trait called as \u0027MAX_RESOLUTION_unlimited\u0027, and something similar to the headers.","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":135,"context_line":"      HW_GPU_FB_SIZE_512MB \u003d NS_GPU + \"FB_SIZE_512MB\""},{"line_number":136,"context_line":"      ..."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"2. Define a new standard resource class for VGPU."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"3. Tracking the VGPU resources:"},{"line_number":141,"context_line":"   We will use the nested [resource-provider] to tracking the VGPU resources."}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_92279d13","line":138,"range":{"start_line":138,"start_character":16,"end_line":138,"end_character":39},"updated":"2017-04-06 11:07:05.000000000","message":"link to the definitions for what a resource class is/isn\u0027t (the specs?) would be helpful for other reviewers","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"8f585930b8a1f09b856fe0e2ecc985a1e3d9a19a","unresolved":false,"context_lines":[{"line_number":135,"context_line":"      HW_GPU_FB_SIZE_512MB \u003d NS_GPU + \"FB_SIZE_512MB\""},{"line_number":136,"context_line":"      ..."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"2. Define a new standard resource class for VGPU."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"3. Tracking the VGPU resources:"},{"line_number":141,"context_line":"   We will use the nested [resource-provider] to tracking the VGPU resources."}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_013ca12c","line":138,"range":{"start_line":138,"start_character":16,"end_line":138,"end_character":39},"in_reply_to":"bff0334d_92279d13","updated":"2017-04-12 15:37:14.000000000","message":"Done","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"429b875c34d9b3b9d691e4aaaaea0feeab714e94","unresolved":false,"context_lines":[{"line_number":135,"context_line":"      HW_GPU_FB_SIZE_512MB \u003d NS_GPU + \"FB_SIZE_512MB\""},{"line_number":136,"context_line":"      ..."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"2. Define a new standard resource class for VGPU."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"3. Tracking the VGPU resources:"},{"line_number":141,"context_line":"   We will use the nested [resource-provider] to tracking the VGPU resources."}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_5b5e4676","line":138,"range":{"start_line":138,"start_character":16,"end_line":138,"end_character":39},"in_reply_to":"bff0334d_92279d13","updated":"2017-04-11 09:49:48.000000000","message":"We also needs another resource class for FB, see my comments at line 148.","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"429b875c34d9b3b9d691e4aaaaea0feeab714e94","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    resource provider:              compute_node"},{"line_number":145,"context_line":"                                /        |         \\"},{"line_number":146,"context_line":"    resource provider:         RP_1      RP_2  … RP_n"},{"line_number":147,"context_line":"                              /          |            \\"},{"line_number":148,"context_line":"    inventory: {\u0027VGPU\u0027: amount_1} {\u0027VGPU\u0027: amount_2} … {\u0027VGPU\u0027: amount_n}"},{"line_number":149,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_28969a94","line":146,"range":{"start_line":146,"start_character":31,"end_line":146,"end_character":53},"updated":"2017-04-11 09:49:48.000000000","message":"I also think about the Intel GPU is the main memory. So we may have problem with NUMA affinity? how to ensure the memory of GPU is allocated on the same NUMA with VM?","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"429b875c34d9b3b9d691e4aaaaea0feeab714e94","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                                /        |         \\"},{"line_number":146,"context_line":"    resource provider:         RP_1      RP_2  … RP_n"},{"line_number":147,"context_line":"                              /          |            \\"},{"line_number":148,"context_line":"    inventory: {\u0027VGPU\u0027: amount_1} {\u0027VGPU\u0027: amount_2} … {\u0027VGPU\u0027: amount_n}"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"   In virt driver (in the function of get_inventory()), it should query the"},{"line_number":151,"context_line":"   available RPs (resource providers: they could be PGPU or a group of PGPUs"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_7b0b4a7c","line":148,"range":{"start_line":148,"start_character":15,"end_line":148,"end_character":73},"updated":"2017-04-11 09:49:48.000000000","message":"There should be max Framebuffer for the GPU, so we only count the number of VGPU looks like isn\u0027t enough.\n\nIf the PGPU support the max FB size is 4096MB, and support 10 VGPU. But actually I only can create single one VGPU with 4096MB FB.\n\nSo we should have two inventories for single resource provider.\n\nOne is for number of VGPU, another one for the number of FB.","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"4b6070a54de9c2ad1da37a9e2997e2695dacaa42","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                                /        |         \\"},{"line_number":146,"context_line":"    resource provider:         RP_1      RP_2  … RP_n"},{"line_number":147,"context_line":"                              /          |            \\"},{"line_number":148,"context_line":"    inventory: {\u0027VGPU\u0027: amount_1} {\u0027VGPU\u0027: amount_2} … {\u0027VGPU\u0027: amount_n}"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"   In virt driver (in the function of get_inventory()), it should query the"},{"line_number":151,"context_line":"   available RPs (resource providers: they could be PGPU or a group of PGPUs"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_5d1bcfc8","line":148,"range":{"start_line":148,"start_character":15,"end_line":148,"end_character":73},"in_reply_to":"bff0334d_7b0b4a7c","updated":"2017-04-11 15:58:51.000000000","message":"at the moment, we only expose one VGPU type for each PGPU. and each VGPU type has a fixed frame buffer size. So the secondary inventory is not needed.","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":147,"context_line":"                              /          |            \\"},{"line_number":148,"context_line":"    inventory: {\u0027VGPU\u0027: amount_1} {\u0027VGPU\u0027: amount_2} … {\u0027VGPU\u0027: amount_n}"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"   In virt driver (in the function of get_inventory()), it should query the"},{"line_number":151,"context_line":"   available RPs (resource providers: they could be PGPU or a group of PGPUs"},{"line_number":152,"context_line":"   which can supply several amount of VGPU resources); their traits and the"},{"line_number":153,"context_line":"   capacity of VGPUs. Basing on the queried data, it should populate the"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_12626d3f","line":150,"range":{"start_line":150,"start_character":38,"end_line":150,"end_character":53},"updated":"2017-04-06 11:07:05.000000000","message":"format as ``code``","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"8f585930b8a1f09b856fe0e2ecc985a1e3d9a19a","unresolved":false,"context_lines":[{"line_number":147,"context_line":"                              /          |            \\"},{"line_number":148,"context_line":"    inventory: {\u0027VGPU\u0027: amount_1} {\u0027VGPU\u0027: amount_2} … {\u0027VGPU\u0027: amount_n}"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"   In virt driver (in the function of get_inventory()), it should query the"},{"line_number":151,"context_line":"   available RPs (resource providers: they could be PGPU or a group of PGPUs"},{"line_number":152,"context_line":"   which can supply several amount of VGPU resources); their traits and the"},{"line_number":153,"context_line":"   capacity of VGPUs. Basing on the queried data, it should populate the"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_8130b157","line":150,"range":{"start_line":150,"start_character":38,"end_line":150,"end_character":53},"in_reply_to":"bff0334d_12626d3f","updated":"2017-04-12 15:37:14.000000000","message":"Done","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":148,"context_line":"    inventory: {\u0027VGPU\u0027: amount_1} {\u0027VGPU\u0027: amount_2} … {\u0027VGPU\u0027: amount_n}"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"   In virt driver (in the function of get_inventory()), it should query the"},{"line_number":151,"context_line":"   available RPs (resource providers: they could be PGPU or a group of PGPUs"},{"line_number":152,"context_line":"   which can supply several amount of VGPU resources); their traits and the"},{"line_number":153,"context_line":"   capacity of VGPUs. Basing on the queried data, it should populate the"},{"line_number":154,"context_line":"   RPs tree as the model described in the above and associate the traits to"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_92555d53","line":151,"range":{"start_line":151,"start_character":13,"end_line":151,"end_character":37},"updated":"2017-04-06 11:07:05.000000000","message":"definition _then_ initialism, e.g.\n\n   available resource providers (RPs)","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"8f585930b8a1f09b856fe0e2ecc985a1e3d9a19a","unresolved":false,"context_lines":[{"line_number":148,"context_line":"    inventory: {\u0027VGPU\u0027: amount_1} {\u0027VGPU\u0027: amount_2} … {\u0027VGPU\u0027: amount_n}"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"   In virt driver (in the function of get_inventory()), it should query the"},{"line_number":151,"context_line":"   available RPs (resource providers: they could be PGPU or a group of PGPUs"},{"line_number":152,"context_line":"   which can supply several amount of VGPU resources); their traits and the"},{"line_number":153,"context_line":"   capacity of VGPUs. Basing on the queried data, it should populate the"},{"line_number":154,"context_line":"   RPs tree as the model described in the above and associate the traits to"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_a12df5fe","line":151,"range":{"start_line":151,"start_character":13,"end_line":151,"end_character":37},"in_reply_to":"bff0334d_92555d53","updated":"2017-04-12 15:37:14.000000000","message":"Done","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":169,"context_line":"     \"allocation_ratio\": 1.0"},{"line_number":170,"context_line":"    }"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"4. Scheduler: The resource providers will be filtered by placement basing on"},{"line_number":173,"context_line":"   the resource class and traits [Resource-providers-scheduler]."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"5. Define flavor: allow the cloud administrator to create different sizes of"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_12f02d67","line":172,"range":{"start_line":172,"start_character":67,"end_line":172,"end_character":73},"updated":"2017-04-06 11:07:05.000000000","message":"based","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"8f585930b8a1f09b856fe0e2ecc985a1e3d9a19a","unresolved":false,"context_lines":[{"line_number":169,"context_line":"     \"allocation_ratio\": 1.0"},{"line_number":170,"context_line":"    }"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"4. Scheduler: The resource providers will be filtered by placement basing on"},{"line_number":173,"context_line":"   the resource class and traits [Resource-providers-scheduler]."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"5. Define flavor: allow the cloud administrator to create different sizes of"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_c1ec79bc","line":172,"range":{"start_line":172,"start_character":67,"end_line":172,"end_character":73},"in_reply_to":"bff0334d_12f02d67","updated":"2017-04-12 15:37:14.000000000","message":"Done","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a58327804da0089b0bda41edbecf05aa39fbed3b","unresolved":false,"context_lines":[{"line_number":170,"context_line":"    }"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"4. Scheduler: The resource providers will be filtered by placement basing on"},{"line_number":173,"context_line":"   the resource class and traits [Resource-providers-scheduler]."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"5. Define flavor: allow the cloud administrator to create different sizes of"},{"line_number":176,"context_line":"   flavor by specifying the required amount of VGPU and a set of required"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_c069f38b","line":173,"range":{"start_line":173,"start_character":33,"end_line":173,"end_character":64},"updated":"2017-04-05 16:34:17.000000000","message":"nit: not necessary","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"8f585930b8a1f09b856fe0e2ecc985a1e3d9a19a","unresolved":false,"context_lines":[{"line_number":170,"context_line":"    }"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"4. Scheduler: The resource providers will be filtered by placement basing on"},{"line_number":173,"context_line":"   the resource class and traits [Resource-providers-scheduler]."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"5. Define flavor: allow the cloud administrator to create different sizes of"},{"line_number":176,"context_line":"   flavor by specifying the required amount of VGPU and a set of required"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_01f7018d","line":173,"range":{"start_line":173,"start_character":33,"end_line":173,"end_character":64},"in_reply_to":"bff0334d_c069f38b","updated":"2017-04-12 15:37:14.000000000","message":"Done","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a58327804da0089b0bda41edbecf05aa39fbed3b","unresolved":false,"context_lines":[{"line_number":174,"context_line":""},{"line_number":175,"context_line":"5. Define flavor: allow the cloud administrator to create different sizes of"},{"line_number":176,"context_line":"   flavor by specifying the required amount of VGPU and a set of required"},{"line_number":177,"context_line":"   traits indicating some GPU-specific attributes."},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"6. At spawning an instance, the virt drivers should retrieve the VGPU"},{"line_number":180,"context_line":"   resourcespecs from the instance request specs and map them to the proper"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_a0bb8fe3","line":177,"updated":"2017-04-05 16:34:17.000000000","message":"so say I\u0027m asking for a specific trait in my flavor, it could possibly return me NoValidHosts if you can\u0027t find any ResourceProvider that provides that trait. I guess you\u0027re okay with that ?","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":174,"context_line":""},{"line_number":175,"context_line":"5. Define flavor: allow the cloud administrator to create different sizes of"},{"line_number":176,"context_line":"   flavor by specifying the required amount of VGPU and a set of required"},{"line_number":177,"context_line":"   traits indicating some GPU-specific attributes."},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"6. At spawning an instance, the virt drivers should retrieve the VGPU"},{"line_number":180,"context_line":"   resourcespecs from the instance request specs and map them to the proper"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_b2bce169","line":177,"in_reply_to":"bff0334d_a0bb8fe3","updated":"2017-04-06 11:07:05.000000000","message":"That\u0027s how things would work for every other resource, right? If a host can\u0027t satisfy my request, it can\u0027t satisfy it. Simple as that? :)","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"8f585930b8a1f09b856fe0e2ecc985a1e3d9a19a","unresolved":false,"context_lines":[{"line_number":174,"context_line":""},{"line_number":175,"context_line":"5. Define flavor: allow the cloud administrator to create different sizes of"},{"line_number":176,"context_line":"   flavor by specifying the required amount of VGPU and a set of required"},{"line_number":177,"context_line":"   traits indicating some GPU-specific attributes."},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"6. At spawning an instance, the virt drivers should retrieve the VGPU"},{"line_number":180,"context_line":"   resourcespecs from the instance request specs and map them to the proper"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_21fc456e","line":177,"in_reply_to":"bff0334d_b2bce169","updated":"2017-04-12 15:37:14.000000000","message":"Agree with Stephen.","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a58327804da0089b0bda41edbecf05aa39fbed3b","unresolved":false,"context_lines":[{"line_number":181,"context_line":"   VGPU type and relative information(e.g. the GPU group in XenAPI) to create"},{"line_number":182,"context_line":"   and/or associating VGPU to the instance."},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"7. As XenServer by default will expose all of the potential VGPU types for"},{"line_number":185,"context_line":"   PGPUs, which will result into issues to determine and track the VGPU"},{"line_number":186,"context_line":"   capacity, we need define enabled_vgpu_types in nova.conf to specify which"},{"line_number":187,"context_line":"   VGPU types are enabled, so virt driver can determine which VGPUs will be"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_204adf26","line":184,"updated":"2017-04-05 16:34:17.000000000","message":"you should put that bullet way earlier, when you talk about get_inventory()","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":181,"context_line":"   VGPU type and relative information(e.g. the GPU group in XenAPI) to create"},{"line_number":182,"context_line":"   and/or associating VGPU to the instance."},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"7. As XenServer by default will expose all of the potential VGPU types for"},{"line_number":185,"context_line":"   PGPUs, which will result into issues to determine and track the VGPU"},{"line_number":186,"context_line":"   capacity, we need define enabled_vgpu_types in nova.conf to specify which"},{"line_number":187,"context_line":"   VGPU types are enabled, so virt driver can determine which VGPUs will be"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_b27181e3","line":184,"in_reply_to":"bff0334d_204adf26","updated":"2017-04-06 11:07:05.000000000","message":"+1","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"8f585930b8a1f09b856fe0e2ecc985a1e3d9a19a","unresolved":false,"context_lines":[{"line_number":181,"context_line":"   VGPU type and relative information(e.g. the GPU group in XenAPI) to create"},{"line_number":182,"context_line":"   and/or associating VGPU to the instance."},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"7. As XenServer by default will expose all of the potential VGPU types for"},{"line_number":185,"context_line":"   PGPUs, which will result into issues to determine and track the VGPU"},{"line_number":186,"context_line":"   capacity, we need define enabled_vgpu_types in nova.conf to specify which"},{"line_number":187,"context_line":"   VGPU types are enabled, so virt driver can determine which VGPUs will be"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_e1d89d1e","line":184,"in_reply_to":"bff0334d_204adf26","updated":"2017-04-12 15:37:14.000000000","message":"Done","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":187,"context_line":"   VGPU types are enabled, so virt driver can determine which VGPUs will be"},{"line_number":188,"context_line":"   exposed. This configure could be automatically generated basing on the"},{"line_number":189,"context_line":"   deployment plan."},{"line_number":190,"context_line":"   Note: For XenServer, it\u0027s allowed to specify one VGPU type at most for each"},{"line_number":191,"context_line":"   type of GPUs (or in another word for each PGPU group) at the moment."},{"line_number":192,"context_line":"   e.g.::"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    [xenserver]"},{"line_number":195,"context_line":"    enabled_vgpu_types \u003d [ \u0027Intel GVT-g\u0027, \u0027K180Q\u0027 ]"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_522eb5a5","line":192,"range":{"start_line":190,"start_character":0,"end_line":192,"end_character":9},"updated":"2017-04-06 11:07:05.000000000","message":"XenServer can only do this, or we choose to limit it for simplicity\u0027s sake? Could you provide more info on this","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a58327804da0089b0bda41edbecf05aa39fbed3b","unresolved":false,"context_lines":[{"line_number":191,"context_line":"   type of GPUs (or in another word for each PGPU group) at the moment."},{"line_number":192,"context_line":"   e.g.::"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    [xenserver]"},{"line_number":195,"context_line":"    enabled_vgpu_types \u003d [ \u0027Intel GVT-g\u0027, \u0027K180Q\u0027 ]"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_a0b70fd9","line":194,"range":{"start_line":194,"start_character":0,"end_line":194,"end_character":15},"updated":"2017-04-05 16:34:17.000000000","message":"I don\u0027t think this necessarly needs to be a xen-specific conf section.\n\nFWIW, libvirt can return capabilities and the corresponding virt driver would use that config opt to only return the traits and VGPUs corresponding to the model.","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"8f585930b8a1f09b856fe0e2ecc985a1e3d9a19a","unresolved":false,"context_lines":[{"line_number":191,"context_line":"   type of GPUs (or in another word for each PGPU group) at the moment."},{"line_number":192,"context_line":"   e.g.::"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    [xenserver]"},{"line_number":195,"context_line":"    enabled_vgpu_types \u003d [ \u0027Intel GVT-g\u0027, \u0027K180Q\u0027 ]"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_21ce8562","line":194,"range":{"start_line":194,"start_character":0,"end_line":194,"end_character":15},"in_reply_to":"bff0334d_327d71b1","updated":"2017-04-12 15:37:14.000000000","message":"Done","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":191,"context_line":"   type of GPUs (or in another word for each PGPU group) at the moment."},{"line_number":192,"context_line":"   e.g.::"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    [xenserver]"},{"line_number":195,"context_line":"    enabled_vgpu_types \u003d [ \u0027Intel GVT-g\u0027, \u0027K180Q\u0027 ]"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_327d71b1","line":194,"range":{"start_line":194,"start_character":0,"end_line":194,"end_character":15},"in_reply_to":"bff0334d_a0b70fd9","updated":"2017-04-06 11:07:05.000000000","message":"+1","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":198,"context_line":"------------"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"1. It has been attempted to support VGPU by creating fake SRIOV-VF PCIs for"},{"line_number":201,"context_line":"   VGPUs and then passthrough PCI devices [VGPU-passthrough-PCI]. But there is"},{"line_number":202,"context_line":"   problem to populate the fake PCI\u0027s address. And it can\u0027t reflect the real"},{"line_number":203,"context_line":"   situation that some VGPUs are not really PCI devices."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"2. Instead of using the GPU group as the VGPU\u0027s resource provider for XenAPI,"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_32045117","line":202,"range":{"start_line":201,"start_character":66,"end_line":202,"end_character":46},"updated":"2017-04-06 11:07:05.000000000","message":"Could you provide more information on this?","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"04e1b1aed9e38b8a3bd4469db279fc8474e00a56","unresolved":false,"context_lines":[{"line_number":198,"context_line":"------------"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"1. It has been attempted to support VGPU by creating fake SRIOV-VF PCIs for"},{"line_number":201,"context_line":"   VGPUs and then passthrough PCI devices [VGPU-passthrough-PCI]. But there is"},{"line_number":202,"context_line":"   problem to populate the fake PCI\u0027s address. And it can\u0027t reflect the real"},{"line_number":203,"context_line":"   situation that some VGPUs are not really PCI devices."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"2. Instead of using the GPU group as the VGPU\u0027s resource provider for XenAPI,"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_c0c62f9b","line":202,"range":{"start_line":201,"start_character":66,"end_line":202,"end_character":46},"in_reply_to":"bff0334d_32045117","updated":"2017-04-07 17:31:30.000000000","message":"we need give the fake PCI a valid address (Bus:Device.Function). In order to avoid to address conflict, we can only use different function# for VGPUs. the max value of function# is 7. So not able to support more than 7 VGPUs for single PGPU.","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":"1. It has been attempted to support VGPU by creating fake SRIOV-VF PCIs for"},{"line_number":201,"context_line":"   VGPUs and then passthrough PCI devices [VGPU-passthrough-PCI]. But there is"},{"line_number":202,"context_line":"   problem to populate the fake PCI\u0027s address. And it can\u0027t reflect the real"},{"line_number":203,"context_line":"   situation that some VGPUs are not really PCI devices."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"2. Instead of using the GPU group as the VGPU\u0027s resource provider for XenAPI,"},{"line_number":206,"context_line":"   we can also use each PGPU as a resource provider. But XenServer doesn\u0027t"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_ad0da638","line":203,"range":{"start_line":202,"start_character":47,"end_line":203,"end_character":56},"updated":"2017-04-06 11:07:05.000000000","message":"An example, please?","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"04e1b1aed9e38b8a3bd4469db279fc8474e00a56","unresolved":false,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":"1. It has been attempted to support VGPU by creating fake SRIOV-VF PCIs for"},{"line_number":201,"context_line":"   VGPUs and then passthrough PCI devices [VGPU-passthrough-PCI]. But there is"},{"line_number":202,"context_line":"   problem to populate the fake PCI\u0027s address. And it can\u0027t reflect the real"},{"line_number":203,"context_line":"   situation that some VGPUs are not really PCI devices."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"2. Instead of using the GPU group as the VGPU\u0027s resource provider for XenAPI,"},{"line_number":206,"context_line":"   we can also use each PGPU as a resource provider. But XenServer doesn\u0027t"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_a0f44bd0","line":203,"range":{"start_line":202,"start_character":47,"end_line":203,"end_character":56},"in_reply_to":"bff0334d_ad0da638","updated":"2017-04-07 17:31:30.000000000","message":"I mean the VGPU itself is not PCI device (not PCI VF) e.g. the gvt-g VGPU.","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":202,"context_line":"   problem to populate the fake PCI\u0027s address. And it can\u0027t reflect the real"},{"line_number":203,"context_line":"   situation that some VGPUs are not really PCI devices."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"2. Instead of using the GPU group as the VGPU\u0027s resource provider for XenAPI,"},{"line_number":206,"context_line":"   we can also use each PGPU as a resource provider. But XenServer doesn\u0027t"},{"line_number":207,"context_line":"   supply API to create VGPUs on a specific PGPU. Instead it organizes GPU\u0027s"},{"line_number":208,"context_line":"   in groups, and it will automatically choose a PGPU from the group to host"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_4d35fad9","line":205,"range":{"start_line":205,"start_character":24,"end_line":205,"end_character":33},"updated":"2017-04-06 11:07:05.000000000","message":"not related to this point exactly, but a GPU group is host-specific, right?","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"8f585930b8a1f09b856fe0e2ecc985a1e3d9a19a","unresolved":false,"context_lines":[{"line_number":202,"context_line":"   problem to populate the fake PCI\u0027s address. And it can\u0027t reflect the real"},{"line_number":203,"context_line":"   situation that some VGPUs are not really PCI devices."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"2. Instead of using the GPU group as the VGPU\u0027s resource provider for XenAPI,"},{"line_number":206,"context_line":"   we can also use each PGPU as a resource provider. But XenServer doesn\u0027t"},{"line_number":207,"context_line":"   supply API to create VGPUs on a specific PGPU. Instead it organizes GPU\u0027s"},{"line_number":208,"context_line":"   in groups, and it will automatically choose a PGPU from the group to host"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_017b8127","line":205,"range":{"start_line":205,"start_character":24,"end_line":205,"end_character":33},"in_reply_to":"bff0334d_4d35fad9","updated":"2017-04-12 15:37:14.000000000","message":"yes, it\u0027s host-specific. this is to explain why we choose GPU group as the resource provider but not a GPU.","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":234,"context_line":""},{"line_number":235,"context_line":"Other end user impact"},{"line_number":236,"context_line":"---------------------"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"Performance Impact"},{"line_number":240,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_ad5b662c","line":237,"updated":"2017-04-06 11:07:05.000000000","message":"None?","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":244,"context_line":"Other deployer impact"},{"line_number":245,"context_line":"---------------------"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"When deployment, the deployer should choose a VGPU type to be enabled for"},{"line_number":248,"context_line":"each PGPU model which will supply VGPUs."},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_6d3d5eba","line":247,"range":{"start_line":247,"start_character":5,"end_line":247,"end_character":15},"updated":"2017-04-06 11:07:05.000000000","message":"deploying","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5086848fa083ca574b483a0d573a4968ee2eaea2","unresolved":false,"context_lines":[{"line_number":293,"context_line":"Testing"},{"line_number":294,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"* Unit tests."},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"Documentation Impact"},{"line_number":299,"context_line":"\u003d\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":11,"id":"bff0334d_cda46a0b","line":296,"range":{"start_line":296,"start_character":0,"end_line":296,"end_character":13},"updated":"2017-04-06 11:07:05.000000000","message":"This really feels like something we\u0027re going to need a third party CI + integration tests for. We already require these for SR-IOV, for example","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"8f585930b8a1f09b856fe0e2ecc985a1e3d9a19a","unresolved":false,"context_lines":[{"line_number":293,"context_line":"Testing"},{"line_number":294,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"* Unit tests."},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"Documentation Impact"},{"line_number":299,"context_line":"\u003d\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":11,"id":"bff0334d_e1009dad","line":296,"range":{"start_line":296,"start_character":0,"end_line":296,"end_character":13},"in_reply_to":"bff0334d_cda46a0b","updated":"2017-04-12 15:37:14.000000000","message":"At the moment, there is no lab resource for 3rd party CI. But will consider how to support that. Thanks.","commit_id":"a55f168233d77b6f6ef2bb76e40f1c41d98c6061"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"11341567e5e7159f709773e18e32765813f6997b","unresolved":false,"context_lines":[{"line_number":21,"context_line":"And some hypervisors support to boot VMs with VGPU to accelerate graphics"},{"line_number":22,"context_line":"processing. But presently Nova can\u0027t support VGPU."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"The compute node may have one or multiple PGPUs and each PGPU can support"},{"line_number":25,"context_line":"multiple VGPUs. Some PGPUs (e.g. GRID K1) support several different VGPU"},{"line_number":26,"context_line":"types and each VGPU type has a fixed amount of frame buffer, number of"},{"line_number":27,"context_line":"supported display heads and maximum resolutions and are targeted at different"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9ff52f3f_d7ec17f5","line":24,"range":{"start_line":24,"start_character":62,"end_line":24,"end_character":65},"updated":"2017-04-13 13:45:33.000000000","message":"nit: could","commit_id":"71974e7113e7054eba66be8bc25683f2b35cfcfd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"11341567e5e7159f709773e18e32765813f6997b","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"  * Tracking **quantitative** aspects of the VGPU resource:"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    * Define a new resource class `custom-resource-classes`_ for VGPU."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    * Generate the resource providers tree to track the VGPU resources."},{"line_number":107,"context_line":"      The resource tracking model is as the following::"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9ff52f3f_ebfe0fad","line":104,"range":{"start_line":104,"start_character":34,"end_line":104,"end_character":60},"updated":"2017-04-13 13:45:33.000000000","message":"would it be a custom resource class, or just a standard one ? I\u0027m confused. I thought we could be just adding a new standard one.\n\nIf that\u0027s a custom one, we don\u0027t really need to define the VGPU RC then...","commit_id":"71974e7113e7054eba66be8bc25683f2b35cfcfd"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"52d7b26e507bbb639478b632fc08ab0342fad28b","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"  * Tracking **quantitative** aspects of the VGPU resource:"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    * Define a new resource class `custom-resource-classes`_ for VGPU."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    * Generate the resource providers tree to track the VGPU resources."},{"line_number":107,"context_line":"      The resource tracking model is as the following::"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9ff52f3f_7d5f6041","line":104,"range":{"start_line":104,"start_character":34,"end_line":104,"end_character":60},"in_reply_to":"9ff52f3f_ebfe0fad","updated":"2017-04-13 16:04:52.000000000","message":"thanks for pointed it out. Yes, we should make VGPU as standard resource class.","commit_id":"71974e7113e7054eba66be8bc25683f2b35cfcfd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"11341567e5e7159f709773e18e32765813f6997b","unresolved":false,"context_lines":[{"line_number":112,"context_line":"                                 /          |            \\"},{"line_number":113,"context_line":"       inventory: {\u0027VGPU\u0027: amount_1} {\u0027VGPU\u0027: amount_2} … {\u0027VGPU\u0027: amount_n}"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"      In virt driver (in the function of ``get_inventory()``), it should query"},{"line_number":116,"context_line":"      the available resource providers (RPs). A RP could be a PGPU or a PGPU"},{"line_number":117,"context_line":"      group:"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"       * *A PGPU*: For example, libvirt qemu will report the available VGPU"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9ff52f3f_0b9ed362","line":116,"range":{"start_line":115,"start_character":63,"end_line":116,"end_character":38},"updated":"2017-04-13 13:45:33.000000000","message":"while I understand this sentence, I think people looking at that spec should be confused. Maybe just saying that the driver would lookup the hypervisor to know how many vGPUs to provide to the Resource Tracker is enough, but that\u0027s a nit.","commit_id":"71974e7113e7054eba66be8bc25683f2b35cfcfd"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"52d7b26e507bbb639478b632fc08ab0342fad28b","unresolved":false,"context_lines":[{"line_number":112,"context_line":"                                 /          |            \\"},{"line_number":113,"context_line":"       inventory: {\u0027VGPU\u0027: amount_1} {\u0027VGPU\u0027: amount_2} … {\u0027VGPU\u0027: amount_n}"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"      In virt driver (in the function of ``get_inventory()``), it should query"},{"line_number":116,"context_line":"      the available resource providers (RPs). A RP could be a PGPU or a PGPU"},{"line_number":117,"context_line":"      group:"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"       * *A PGPU*: For example, libvirt qemu will report the available VGPU"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9ff52f3f_8e742c9b","line":116,"range":{"start_line":115,"start_character":63,"end_line":116,"end_character":38},"in_reply_to":"9ff52f3f_0b9ed362","updated":"2017-04-13 16:04:52.000000000","message":"thanks. I will reword it.","commit_id":"71974e7113e7054eba66be8bc25683f2b35cfcfd"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"5b100491ff87eac462e154349e987741870c884c","unresolved":false,"context_lines":[{"line_number":116,"context_line":"      the available resource providers (RPs). A RP could be a PGPU or a PGPU"},{"line_number":117,"context_line":"      group:"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"       * *A PGPU*: For example, libvirt qemu will report the available VGPU"},{"line_number":120,"context_line":"         number for each PGPU. In this way, if there are multiple PGPUs (same"},{"line_number":121,"context_line":"         model), it can create one type of VGPUs on on PGPU and create other"},{"line_number":122,"context_line":"         types of VGPUs on the remaining PGPUs."}],"source_content_type":"text/x-rst","patch_set":15,"id":"9ff52f3f_d1dc221a","line":119,"range":{"start_line":119,"start_character":32,"end_line":119,"end_character":44},"updated":"2017-04-13 15:56:38.000000000","message":"just libvirt","commit_id":"71974e7113e7054eba66be8bc25683f2b35cfcfd"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"0c42d28541b770d64de53c497b6ee44fa2cf7d66","unresolved":false,"context_lines":[{"line_number":116,"context_line":"      the available resource providers (RPs). A RP could be a PGPU or a PGPU"},{"line_number":117,"context_line":"      group:"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"       * *A PGPU*: For example, libvirt qemu will report the available VGPU"},{"line_number":120,"context_line":"         number for each PGPU. In this way, if there are multiple PGPUs (same"},{"line_number":121,"context_line":"         model), it can create one type of VGPUs on on PGPU and create other"},{"line_number":122,"context_line":"         types of VGPUs on the remaining PGPUs."}],"source_content_type":"text/x-rst","patch_set":15,"id":"9ff52f3f_df053c7c","line":119,"range":{"start_line":119,"start_character":32,"end_line":119,"end_character":44},"in_reply_to":"9ff52f3f_d1dc221a","updated":"2017-04-13 16:49:56.000000000","message":"sure. will update it.","commit_id":"71974e7113e7054eba66be8bc25683f2b35cfcfd"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"5b100491ff87eac462e154349e987741870c884c","unresolved":false,"context_lines":[{"line_number":116,"context_line":"      the available resource providers (RPs). A RP could be a PGPU or a PGPU"},{"line_number":117,"context_line":"      group:"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"       * *A PGPU*: For example, libvirt qemu will report the available VGPU"},{"line_number":120,"context_line":"         number for each PGPU. In this way, if there are multiple PGPUs (same"},{"line_number":121,"context_line":"         model), it can create one type of VGPUs on on PGPU and create other"},{"line_number":122,"context_line":"         types of VGPUs on the remaining PGPUs."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"       * *PGPU group*: XenServer uses PGPU groups to manage GPUs. A PGPU group"},{"line_number":125,"context_line":"         is a collection of PGPUs which belong to the same model. XenServer"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9ff52f3f_a9836a04","line":122,"range":{"start_line":119,"start_character":32,"end_line":122,"end_character":47},"updated":"2017-04-13 15:56:38.000000000","message":"Libvirt will report a list of pre-created vGPUs each per parent device (pGPU).\nAt the moment, libvirt will not attempt to create vGPU devices on the fly. Instead it will report pre-created devices, similarly to a reporting of SR-IOV devices. Here is an example of a pre-created vGPU and it\u0027s parent device with its capabilities[1]\n\n[1] https://paste.fedoraproject.org/paste/SqeBYsXrPy9HhTzLhysYiF5M1UNdIGYhyRLivL9gydE\u003d","commit_id":"71974e7113e7054eba66be8bc25683f2b35cfcfd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"11341567e5e7159f709773e18e32765813f6997b","unresolved":false,"context_lines":[{"line_number":119,"context_line":"       * *A PGPU*: For example, libvirt qemu will report the available VGPU"},{"line_number":120,"context_line":"         number for each PGPU. In this way, if there are multiple PGPUs (same"},{"line_number":121,"context_line":"         model), it can create one type of VGPUs on on PGPU and create other"},{"line_number":122,"context_line":"         types of VGPUs on the remaining PGPUs."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"       * *PGPU group*: XenServer uses PGPU groups to manage GPUs. A PGPU group"},{"line_number":125,"context_line":"         is a collection of PGPUs which belong to the same model. XenServer"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9ff52f3f_4bcbbb52","line":122,"updated":"2017-04-13 13:45:33.000000000","message":"Well, the virt driver interface for get_inventory returns a dict of dicts keyed by resource classes, for one specific compute node.\n\nGiven libvirt only returns one single node, then there would be only one vGPU resource-class keyed dictionary like :\n\n            obj_fields.ResourceClass.VGPU: {\n                \u0027total\u0027: info[\u0027vgpus\u0027],\n                \u0027reserved\u0027: 0,\n                \u0027min_unit\u0027: info[\u0027vgpus\u0027],\n                \u0027max_unit\u0027: info[\u0027vgpus\u0027],\n                \u0027step_size\u0027: 1,\n                \u0027allocation_ratio\u0027: 1.0,\n            },\n\nIt could be a problem, right?","commit_id":"71974e7113e7054eba66be8bc25683f2b35cfcfd"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"52d7b26e507bbb639478b632fc08ab0342fad28b","unresolved":false,"context_lines":[{"line_number":119,"context_line":"       * *A PGPU*: For example, libvirt qemu will report the available VGPU"},{"line_number":120,"context_line":"         number for each PGPU. In this way, if there are multiple PGPUs (same"},{"line_number":121,"context_line":"         model), it can create one type of VGPUs on on PGPU and create other"},{"line_number":122,"context_line":"         types of VGPUs on the remaining PGPUs."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"       * *PGPU group*: XenServer uses PGPU groups to manage GPUs. A PGPU group"},{"line_number":125,"context_line":"         is a collection of PGPUs which belong to the same model. XenServer"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9ff52f3f_9060cb34","line":122,"in_reply_to":"9ff52f3f_4bcbbb52","updated":"2017-04-13 16:04:52.000000000","message":"Sylvain, the get_inventory() will be changed to return a resource provider tree. the inventory data will belong to resource providers. @Jaypipes, that change will be done with bp/nested-resource-providers. Correct?","commit_id":"71974e7113e7054eba66be8bc25683f2b35cfcfd"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"0c42d28541b770d64de53c497b6ee44fa2cf7d66","unresolved":false,"context_lines":[{"line_number":116,"context_line":"      the available resource providers (RPs). A RP could be a PGPU or a PGPU"},{"line_number":117,"context_line":"      group:"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"       * *A PGPU*: For example, libvirt qemu will report the available VGPU"},{"line_number":120,"context_line":"         number for each PGPU. In this way, if there are multiple PGPUs (same"},{"line_number":121,"context_line":"         model), it can create one type of VGPUs on on PGPU and create other"},{"line_number":122,"context_line":"         types of VGPUs on the remaining PGPUs."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"       * *PGPU group*: XenServer uses PGPU groups to manage GPUs. A PGPU group"},{"line_number":125,"context_line":"         is a collection of PGPUs which belong to the same model. XenServer"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9ff52f3f_ffc12030","line":122,"range":{"start_line":119,"start_character":32,"end_line":122,"end_character":47},"in_reply_to":"9ff52f3f_a9836a04","updated":"2017-04-13 16:49:56.000000000","message":"Vladik, thanks for the clarification. Cheers:-)","commit_id":"71974e7113e7054eba66be8bc25683f2b35cfcfd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"11341567e5e7159f709773e18e32765813f6997b","unresolved":false,"context_lines":[{"line_number":125,"context_line":"         is a collection of PGPUs which belong to the same model. XenServer"},{"line_number":126,"context_line":"         automatically creates ``gpu-group`` objects at startup to represent"},{"line_number":127,"context_line":"         the distinct types of PGPU present on the platform. When creating a"},{"line_number":128,"context_line":"         VGPU, the PGPU group should the specified in the request. XenServer"},{"line_number":129,"context_line":"         will search the target group for a GPU which can supply the requested"},{"line_number":130,"context_line":"         VGPU. In another word, **it is not possible to specify which PGPU the"},{"line_number":131,"context_line":"         VGPU to be created on**. XenServer will find a proper PGPU basing on"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9ff52f3f_cbdc6b1a","line":128,"range":{"start_line":128,"start_character":37,"end_line":128,"end_character":40},"updated":"2017-04-13 13:45:33.000000000","message":"s/the/be ?","commit_id":"71974e7113e7054eba66be8bc25683f2b35cfcfd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"11341567e5e7159f709773e18e32765813f6997b","unresolved":false,"context_lines":[{"line_number":129,"context_line":"         will search the target group for a GPU which can supply the requested"},{"line_number":130,"context_line":"         VGPU. In another word, **it is not possible to specify which PGPU the"},{"line_number":131,"context_line":"         VGPU to be created on**. XenServer will find a proper PGPU basing on"},{"line_number":132,"context_line":"         the searching policy automatically."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"      As described at above, some PGPUs (e.g. K1) support different sized VGPU"},{"line_number":135,"context_line":"      types. The capacity for different VGPU types varies. In order to make"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9ff52f3f_0be493ab","line":132,"updated":"2017-04-13 13:45:33.000000000","message":"Not sure I get you. You\u0027re talking about the user request to be verified here for Xen, not about what inventory Xen would return. You should just say that the virt driver will return one inventory of vGPUs, nope ?","commit_id":"71974e7113e7054eba66be8bc25683f2b35cfcfd"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"52d7b26e507bbb639478b632fc08ab0342fad28b","unresolved":false,"context_lines":[{"line_number":129,"context_line":"         will search the target group for a GPU which can supply the requested"},{"line_number":130,"context_line":"         VGPU. In another word, **it is not possible to specify which PGPU the"},{"line_number":131,"context_line":"         VGPU to be created on**. XenServer will find a proper PGPU basing on"},{"line_number":132,"context_line":"         the searching policy automatically."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"      As described at above, some PGPUs (e.g. K1) support different sized VGPU"},{"line_number":135,"context_line":"      types. The capacity for different VGPU types varies. In order to make"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9ff52f3f_9071ebe3","line":132,"in_reply_to":"9ff52f3f_0be493ab","updated":"2017-04-13 16:04:52.000000000","message":"sorry for the confusion. This is to explain why we create RP for PGPU group but not for each PGPU. (as XenServer has the behavior...). Will reword it.","commit_id":"71974e7113e7054eba66be8bc25683f2b35cfcfd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"11341567e5e7159f709773e18e32765813f6997b","unresolved":false,"context_lines":[{"line_number":146,"context_line":"      And the inventory data for resource provider should be as::"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"       {"},{"line_number":149,"context_line":"        \"resource_class\": \"VGPU\","},{"line_number":150,"context_line":"        \"total\": 8,"},{"line_number":151,"context_line":"        \"reserved\": 0,"},{"line_number":152,"context_line":"        \"min_unit\": 1,"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9ff52f3f_2b8517ae","line":149,"updated":"2017-04-13 13:45:33.000000000","message":"well, the inventory dict returned by the virt driver doesn\u0027t have the resource_class key in it, but meh.","commit_id":"71974e7113e7054eba66be8bc25683f2b35cfcfd"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"52d7b26e507bbb639478b632fc08ab0342fad28b","unresolved":false,"context_lines":[{"line_number":146,"context_line":"      And the inventory data for resource provider should be as::"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"       {"},{"line_number":149,"context_line":"        \"resource_class\": \"VGPU\","},{"line_number":150,"context_line":"        \"total\": 8,"},{"line_number":151,"context_line":"        \"reserved\": 0,"},{"line_number":152,"context_line":"        \"min_unit\": 1,"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9ff52f3f_296d1a98","line":149,"in_reply_to":"9ff52f3f_2b8517ae","updated":"2017-04-13 16:04:52.000000000","message":"yes, that\u0027s changed. will update it.","commit_id":"71974e7113e7054eba66be8bc25683f2b35cfcfd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"11341567e5e7159f709773e18e32765813f6997b","unresolved":false,"context_lines":[{"line_number":165,"context_line":"    the VGPU resources; map them to the defined traits and associate these"},{"line_number":166,"context_line":"    traits to the VGPU\u0027s resource providers."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    * Put these traits in the same name space:"},{"line_number":169,"context_line":"      NS_GPU \u003d \"HW_GPU\\_\""},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    * maximum resolutions:"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9ff52f3f_ab67e725","line":168,"updated":"2017-04-13 13:45:33.000000000","message":"do you provide to have those traits supported by os-traits ?\nGiven what you said below, it\u0027s a work item, or it would be meaning a custom namespace.","commit_id":"71974e7113e7054eba66be8bc25683f2b35cfcfd"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"52d7b26e507bbb639478b632fc08ab0342fad28b","unresolved":false,"context_lines":[{"line_number":165,"context_line":"    the VGPU resources; map them to the defined traits and associate these"},{"line_number":166,"context_line":"    traits to the VGPU\u0027s resource providers."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    * Put these traits in the same name space:"},{"line_number":169,"context_line":"      NS_GPU \u003d \"HW_GPU\\_\""},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    * maximum resolutions:"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9ff52f3f_102b9b94","line":168,"in_reply_to":"9ff52f3f_ab67e725","updated":"2017-04-13 16:04:52.000000000","message":"the VGPU types will be custom traits; others will be put into os-traits as standard traits.","commit_id":"71974e7113e7054eba66be8bc25683f2b35cfcfd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"11341567e5e7159f709773e18e32765813f6997b","unresolved":false,"context_lines":[{"line_number":197,"context_line":"  meet different users\u0027 demands."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"# Scheduler: The resource providers will be filtered by placement based on"},{"line_number":200,"context_line":"  the resource class and traits."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"# At spawning an instance, the virt drivers should retrieve the VGPU"},{"line_number":203,"context_line":"  resource specs from the instance request specs and map them to the proper"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9ff52f3f_0b593359","line":200,"updated":"2017-04-13 13:45:33.000000000","message":"nothing is really required to be modified by that spec here. You\u0027re just inheriting from the other specs. I just want to make it clear here what\u0027s really missing for getting the above usecases implemented (ie. mostly driver-side and os-traits).","commit_id":"71974e7113e7054eba66be8bc25683f2b35cfcfd"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"52d7b26e507bbb639478b632fc08ab0342fad28b","unresolved":false,"context_lines":[{"line_number":197,"context_line":"  meet different users\u0027 demands."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"# Scheduler: The resource providers will be filtered by placement based on"},{"line_number":200,"context_line":"  the resource class and traits."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"# At spawning an instance, the virt drivers should retrieve the VGPU"},{"line_number":203,"context_line":"  resource specs from the instance request specs and map them to the proper"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9ff52f3f_33e6a946","line":200,"in_reply_to":"9ff52f3f_0b593359","updated":"2017-04-13 16:04:52.000000000","message":"agreed, will reword it.","commit_id":"71974e7113e7054eba66be8bc25683f2b35cfcfd"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"44c57d5485f4f135e39a61317aaa95705cb48f92","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"},{"line_number":8,"context_line":"Add support for virtual GPU (VGPU)"},{"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"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/add-support-for-vgpu"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_d6d65350","line":8,"updated":"2017-04-14 20:07:39.000000000","message":"See my comment on the previous patchset about NVIDIA\u0027s ludicrous trademark of the term \"vGPU\". Just like they can\u0027t trademark the name \"Tesla\" (because it\u0027s the name of a car manufacturer), I don\u0027t believe they can trademark an abbreviation like \"vGPU\". They could, of course, trademark \"NVIDIA vGPU\" to refer to their specific technology, but trademarking an abbreviation like \"vGPU\" is just ridiculous in my opinion and I doubt they actually have a trademark on that. If they do, then I\u0027m going to run out and get a trademark on the term \"vCPU\" just to gum up the spec works in OpenStack Nova for a year or two ;)","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"44c57d5485f4f135e39a61317aaa95705cb48f92","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"With some graphics virtualization solutions e.g. `Intel\u0027s GVT-g`_ and"},{"line_number":19,"context_line":"`NVIDIA GRID VGPU`_, a single physical Graphics Processing Unit (PGPU)"},{"line_number":20,"context_line":"can be virtualized as multiple virtual Graphics Processing Units(VGPU)."},{"line_number":21,"context_line":"And some hypervisors support to boot VMs with VGPU to accelerate graphics"},{"line_number":22,"context_line":"processing. But presently Nova can\u0027t support VGPU."}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_b6cbc7a3","line":19,"updated":"2017-04-14 20:07:39.000000000","message":"Please use \"pGPU\"","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"44c57d5485f4f135e39a61317aaa95705cb48f92","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"With some graphics virtualization solutions e.g. `Intel\u0027s GVT-g`_ and"},{"line_number":19,"context_line":"`NVIDIA GRID VGPU`_, a single physical Graphics Processing Unit (PGPU)"},{"line_number":20,"context_line":"can be virtualized as multiple virtual Graphics Processing Units(VGPU)."},{"line_number":21,"context_line":"And some hypervisors support to boot VMs with VGPU to accelerate graphics"},{"line_number":22,"context_line":"processing. But presently Nova can\u0027t support VGPU."}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_96d0cb52","line":19,"updated":"2017-04-14 20:07:39.000000000","message":"The above should be \"NVIDIA GRID vGPU\" per their trademarks :)","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"fafa931805057a5b02866afed5321561b6d556b3","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"With some graphics virtualization solutions e.g. `Intel\u0027s GVT-g`_ and"},{"line_number":19,"context_line":"`NVIDIA GRID VGPU`_, a single physical Graphics Processing Unit (PGPU)"},{"line_number":20,"context_line":"can be virtualized as multiple virtual Graphics Processing Units(VGPU)."},{"line_number":21,"context_line":"And some hypervisors support to boot VMs with VGPU to accelerate graphics"},{"line_number":22,"context_line":"processing. But presently Nova can\u0027t support VGPU."}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_ce98e46b","line":19,"in_reply_to":"7ffa3b31_96d0cb52","updated":"2017-04-17 09:21:53.000000000","message":"yes, it should be:-)","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"44c57d5485f4f135e39a61317aaa95705cb48f92","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"With some graphics virtualization solutions e.g. `Intel\u0027s GVT-g`_ and"},{"line_number":19,"context_line":"`NVIDIA GRID VGPU`_, a single physical Graphics Processing Unit (PGPU)"},{"line_number":20,"context_line":"can be virtualized as multiple virtual Graphics Processing Units(VGPU)."},{"line_number":21,"context_line":"And some hypervisors support to boot VMs with VGPU to accelerate graphics"},{"line_number":22,"context_line":"processing. But presently Nova can\u0027t support VGPU."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_76c53f8e","line":20,"updated":"2017-04-14 20:07:39.000000000","message":"and \"vGPU\". Also, please put a space before parentheses.","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"fafa931805057a5b02866afed5321561b6d556b3","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"With some graphics virtualization solutions e.g. `Intel\u0027s GVT-g`_ and"},{"line_number":19,"context_line":"`NVIDIA GRID VGPU`_, a single physical Graphics Processing Unit (PGPU)"},{"line_number":20,"context_line":"can be virtualized as multiple virtual Graphics Processing Units(VGPU)."},{"line_number":21,"context_line":"And some hypervisors support to boot VMs with VGPU to accelerate graphics"},{"line_number":22,"context_line":"processing. But presently Nova can\u0027t support VGPU."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_2e2bc894","line":20,"in_reply_to":"7ffa3b31_76c53f8e","updated":"2017-04-17 09:21:53.000000000","message":"Done","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"44c57d5485f4f135e39a61317aaa95705cb48f92","unresolved":false,"context_lines":[{"line_number":18,"context_line":"With some graphics virtualization solutions e.g. `Intel\u0027s GVT-g`_ and"},{"line_number":19,"context_line":"`NVIDIA GRID VGPU`_, a single physical Graphics Processing Unit (PGPU)"},{"line_number":20,"context_line":"can be virtualized as multiple virtual Graphics Processing Units(VGPU)."},{"line_number":21,"context_line":"And some hypervisors support to boot VMs with VGPU to accelerate graphics"},{"line_number":22,"context_line":"processing. But presently Nova can\u0027t support VGPU."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"The compute node may have one or multiple PGPUs and each PGPU could support"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_56c24387","line":21,"updated":"2017-04-14 20:07:39.000000000","message":"s/And some hypervisors/Some hypervisors/","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"fafa931805057a5b02866afed5321561b6d556b3","unresolved":false,"context_lines":[{"line_number":18,"context_line":"With some graphics virtualization solutions e.g. `Intel\u0027s GVT-g`_ and"},{"line_number":19,"context_line":"`NVIDIA GRID VGPU`_, a single physical Graphics Processing Unit (PGPU)"},{"line_number":20,"context_line":"can be virtualized as multiple virtual Graphics Processing Units(VGPU)."},{"line_number":21,"context_line":"And some hypervisors support to boot VMs with VGPU to accelerate graphics"},{"line_number":22,"context_line":"processing. But presently Nova can\u0027t support VGPU."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"The compute node may have one or multiple PGPUs and each PGPU could support"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_ee1e006f","line":21,"in_reply_to":"7ffa3b31_56c24387","updated":"2017-04-17 09:21:53.000000000","message":"Done","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"44c57d5485f4f135e39a61317aaa95705cb48f92","unresolved":false,"context_lines":[{"line_number":22,"context_line":"processing. But presently Nova can\u0027t support VGPU."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"The compute node may have one or multiple PGPUs and each PGPU could support"},{"line_number":25,"context_line":"multiple VGPUs. Some PGPUs (e.g. GRID K1) support several different VGPU"},{"line_number":26,"context_line":"types and each VGPU type has a fixed amount of frame buffer, number of"},{"line_number":27,"context_line":"supported display heads and maximum resolutions and are targeted at different"},{"line_number":28,"context_line":"classes of workload. Due to their different resource requirements, the maximum"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_36bfb7fc","line":25,"updated":"2017-04-14 20:07:39.000000000","message":"above should be \"NVIDIA GRID K1\"","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"fafa931805057a5b02866afed5321561b6d556b3","unresolved":false,"context_lines":[{"line_number":22,"context_line":"processing. But presently Nova can\u0027t support VGPU."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"The compute node may have one or multiple PGPUs and each PGPU could support"},{"line_number":25,"context_line":"multiple VGPUs. Some PGPUs (e.g. GRID K1) support several different VGPU"},{"line_number":26,"context_line":"types and each VGPU type has a fixed amount of frame buffer, number of"},{"line_number":27,"context_line":"supported display heads and maximum resolutions and are targeted at different"},{"line_number":28,"context_line":"classes of workload. Due to their different resource requirements, the maximum"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_2ea9887a","line":25,"in_reply_to":"7ffa3b31_36bfb7fc","updated":"2017-04-17 09:21:53.000000000","message":"yes.","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"44c57d5485f4f135e39a61317aaa95705cb48f92","unresolved":false,"context_lines":[{"line_number":70,"context_line":" |    per GPU     | 7                                  |"},{"line_number":71,"context_line":" +----------------+------------------------------------+"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"In this spec, we will define a model to track VGPU resources and work out a"},{"line_number":74,"context_line":"solution to support VGPUs."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_16bcbb03","line":73,"updated":"2017-04-14 20:07:39.000000000","message":"s/and work out a solution to support VGPUS//","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"44c57d5485f4f135e39a61317aaa95705cb48f92","unresolved":false,"context_lines":[{"line_number":76,"context_line":"Use Cases"},{"line_number":77,"context_line":"----------"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"* As a cloud administrator, I should be able to define flavors which requests"},{"line_number":80,"context_line":"  an amount of VGPU resources."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"* As a cloud administrator, I should be able to specify framebuffer size and"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_f636efb4","line":79,"updated":"2017-04-14 20:07:39.000000000","message":"s/requests/request/","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"44c57d5485f4f135e39a61317aaa95705cb48f92","unresolved":false,"context_lines":[{"line_number":80,"context_line":"  an amount of VGPU resources."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"* As a cloud administrator, I should be able to specify framebuffer size and"},{"line_number":83,"context_line":"  max resolutions for VGPUs defined in the flavors; so that end users can"},{"line_number":84,"context_line":"  choose a proper flavor basing on the expected performances."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"* As a cloud administrator, I should be able to define flavors which requests"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_d63bf399","line":83,"updated":"2017-04-14 20:07:39.000000000","message":"s/so that end users/end users/","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"44c57d5485f4f135e39a61317aaa95705cb48f92","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"* As a cloud administrator, I should be able to specify framebuffer size and"},{"line_number":83,"context_line":"  max resolutions for VGPUs defined in the flavors; so that end users can"},{"line_number":84,"context_line":"  choose a proper flavor basing on the expected performances."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"* As a cloud administrator, I should be able to define flavors which requests"},{"line_number":87,"context_line":"  VGPUs which support some special features e.g. `OpenGL`_ to achieve"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_b6406709","line":84,"updated":"2017-04-14 20:07:39.000000000","message":"s/basing on the/with the/\ns/performances/performance/","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"44c57d5485f4f135e39a61317aaa95705cb48f92","unresolved":false,"context_lines":[{"line_number":83,"context_line":"  max resolutions for VGPUs defined in the flavors; so that end users can"},{"line_number":84,"context_line":"  choose a proper flavor basing on the expected performances."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"* As a cloud administrator, I should be able to define flavors which requests"},{"line_number":87,"context_line":"  VGPUs which support some special features e.g. `OpenGL`_ to achieve"},{"line_number":88,"context_line":"  hardware-accelerated rendering."},{"line_number":89,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_96456b1a","line":86,"updated":"2017-04-14 20:07:39.000000000","message":"s/requests/request/","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"44c57d5485f4f135e39a61317aaa95705cb48f92","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"* As a cloud administrator, I should be able to define flavors which requests"},{"line_number":87,"context_line":"  VGPUs which support some special features e.g. `OpenGL`_ to achieve"},{"line_number":88,"context_line":"  hardware-accelerated rendering."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* As a cloud administrator, I should be able to define flavors which requests"},{"line_number":91,"context_line":"  VGPUs which belong to a specific VGPU type e.g. \"GRID K180Q\"."}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_764adf27","line":88,"updated":"2017-04-14 20:07:39.000000000","message":"++","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"44c57d5485f4f135e39a61317aaa95705cb48f92","unresolved":false,"context_lines":[{"line_number":88,"context_line":"  hardware-accelerated rendering."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* As a cloud administrator, I should be able to define flavors which requests"},{"line_number":91,"context_line":"  VGPUs which belong to a specific VGPU type e.g. \"GRID K180Q\"."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"* As an end user, I should be allowed to boot VMs which have VGPUs by using"},{"line_number":94,"context_line":"  the pre-defined flavor."}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_5647e31e","line":91,"updated":"2017-04-14 20:07:39.000000000","message":"Should be \"NVIDIA GRID K180Q\"\n\nAnd, frankly, we\u0027re still yet undecided on whether the vGPU type is necessary to put into a flavor or whether the vGPU type can be queried by the virt driver locally and a set of traits representing the features of that vGPU type are associated with the resource provider record for the pGPU (or pGPU group).","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"44c57d5485f4f135e39a61317aaa95705cb48f92","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"  * Tracking **quantitative** aspects of the VGPU resource:"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    * Define a new resource class `resource-classes`_ for VGPU."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    * Generate the resource provider(RP) tree to track the VGPU resources."},{"line_number":107,"context_line":"      The resource tracking model is as the following::"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_365457ca","line":104,"updated":"2017-04-14 20:07:39.000000000","message":"Yup, ++","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"44c57d5485f4f135e39a61317aaa95705cb48f92","unresolved":false,"context_lines":[{"line_number":130,"context_line":"         specify which PGPU the VGPU to be created on**. So XenAPI (the virt"},{"line_number":131,"context_line":"         of XenServer) should make RP for each PGPU group. And the amount of"},{"line_number":132,"context_line":"         in the inventory should be total number of VGPUs which can be supplied"},{"line_number":133,"context_line":"         by PGPUs belong the group."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"      As described at above, some PGPUs (e.g. K1) support different sized VGPU"},{"line_number":136,"context_line":"      types. The capacity for different VGPU types varies. In order to make"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_16515bd9","line":133,"updated":"2017-04-14 20:07:39.000000000","message":"Yup, all good descriptions in the above two paragraphs, thanks.","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"fafa931805057a5b02866afed5321561b6d556b3","unresolved":false,"context_lines":[{"line_number":130,"context_line":"         specify which PGPU the VGPU to be created on**. So XenAPI (the virt"},{"line_number":131,"context_line":"         of XenServer) should make RP for each PGPU group. And the amount of"},{"line_number":132,"context_line":"         in the inventory should be total number of VGPUs which can be supplied"},{"line_number":133,"context_line":"         by PGPUs belong the group."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"      As described at above, some PGPUs (e.g. K1) support different sized VGPU"},{"line_number":136,"context_line":"      types. The capacity for different VGPU types varies. In order to make"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_70288e85","line":133,"in_reply_to":"7ffa3b31_16515bd9","updated":"2017-04-17 09:21:53.000000000","message":":-)","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"44c57d5485f4f135e39a61317aaa95705cb48f92","unresolved":false,"context_lines":[{"line_number":132,"context_line":"         in the inventory should be total number of VGPUs which can be supplied"},{"line_number":133,"context_line":"         by PGPUs belong the group."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"      As described at above, some PGPUs (e.g. K1) support different sized VGPU"},{"line_number":136,"context_line":"      types. The capacity for different VGPU types varies. In order to make"},{"line_number":137,"context_line":"      resource tracking easier, we need make the number of the VGPU is"},{"line_number":138,"context_line":"      predictable. So we need add a new whitelist in nova.conf to specify the"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_f65f0fe3","line":135,"updated":"2017-04-14 20:07:39.000000000","message":"s/As described as above/As described above/\n\nAlso, should be \"NVIDIA GRID K1\"","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"fafa931805057a5b02866afed5321561b6d556b3","unresolved":false,"context_lines":[{"line_number":132,"context_line":"         in the inventory should be total number of VGPUs which can be supplied"},{"line_number":133,"context_line":"         by PGPUs belong the group."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"      As described at above, some PGPUs (e.g. K1) support different sized VGPU"},{"line_number":136,"context_line":"      types. The capacity for different VGPU types varies. In order to make"},{"line_number":137,"context_line":"      resource tracking easier, we need make the number of the VGPU is"},{"line_number":138,"context_line":"      predictable. So we need add a new whitelist in nova.conf to specify the"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_70764ea7","line":135,"in_reply_to":"7ffa3b31_f65f0fe3","updated":"2017-04-17 09:21:53.000000000","message":"Done","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"44c57d5485f4f135e39a61317aaa95705cb48f92","unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"      As described at above, some PGPUs (e.g. K1) support different sized VGPU"},{"line_number":136,"context_line":"      types. The capacity for different VGPU types varies. In order to make"},{"line_number":137,"context_line":"      resource tracking easier, we need make the number of the VGPU is"},{"line_number":138,"context_line":"      predictable. So we need add a new whitelist in nova.conf to specify the"},{"line_number":139,"context_line":"      enabled VGPU types to ensure each resource provider of VGPUs only has"},{"line_number":140,"context_line":"      one type of VGPUs."}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_d66413bc","line":137,"updated":"2017-04-14 20:07:39.000000000","message":"s/we need make the/we need to make sure the/","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"44c57d5485f4f135e39a61317aaa95705cb48f92","unresolved":false,"context_lines":[{"line_number":142,"context_line":"      resource number should be 8 (4 GPU per card * 2 VGPU per GPU). The"},{"line_number":143,"context_line":"      whitelist is::"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"       enabled_vgpu_types \u003d [ \u0027K160Q\u0027 ]"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"      And the inventory data for the resource provider for VGPUs should be as::"},{"line_number":148,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_b65987ff","line":145,"updated":"2017-04-14 20:07:39.000000000","message":"So, this whitelist behaviour is fine to list model numbers here, sure. We should probably specify them as a vendor_id and product_id combination, however, instead of a string like \"KL160Q\", in order to be relatively consistent with the pci_passthrough_whitelist?","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"fafa931805057a5b02866afed5321561b6d556b3","unresolved":false,"context_lines":[{"line_number":142,"context_line":"      resource number should be 8 (4 GPU per card * 2 VGPU per GPU). The"},{"line_number":143,"context_line":"      whitelist is::"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"       enabled_vgpu_types \u003d [ \u0027K160Q\u0027 ]"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"      And the inventory data for the resource provider for VGPUs should be as::"},{"line_number":148,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_f07dbe1c","line":145,"in_reply_to":"7ffa3b31_b65987ff","updated":"2017-04-17 09:21:53.000000000","message":"Yes, we have to specify the enabled vGPU type with some way. I will change it as:\n[{\"vendor\": \"\u003cid\u003e\", \"product_id\": \"\u003cid\u003e\", \u0027vGPU_type\u0027: \u0027K160Q\u0027}]","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"44c57d5485f4f135e39a61317aaa95705cb48f92","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    The feature of traits is targeted to support representing *qualitative*"},{"line_number":160,"context_line":"    aspects for resources to differentiate their characteristics(`os-traits`_)"},{"line_number":161,"context_line":"    GPUs also have different characteristics: e.g. the maximum resolutions,"},{"line_number":162,"context_line":"    framebuffer size, supported features, and the enabled VGPU type."},{"line_number":163,"context_line":"    We will define traits for GPUs. In virt driver (in the function of"},{"line_number":164,"context_line":"    ``get_inventory()``), it should query for the **qualitative** aspects of"},{"line_number":165,"context_line":"    the VGPU resources; map them to the defined traits and associate these"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_965e8be4","line":162,"updated":"2017-04-14 20:07:39.000000000","message":"I\u0027m still not sold on the vGPU type (which really is a vendor/model ID) being a trait. Because, like I mentioned in IRC a number of times, an end user isn\u0027t going to request a \"NVIDIA GRID K1 K160Q\" VGPU. They are going to request one or more vGPUs with a max supported resolution of X, OpenCL support and XVDA support. Those are the traits that need to be mapped to pGPU resource providers, not the vGPU model/type.","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"fafa931805057a5b02866afed5321561b6d556b3","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    The feature of traits is targeted to support representing *qualitative*"},{"line_number":160,"context_line":"    aspects for resources to differentiate their characteristics(`os-traits`_)"},{"line_number":161,"context_line":"    GPUs also have different characteristics: e.g. the maximum resolutions,"},{"line_number":162,"context_line":"    framebuffer size, supported features, and the enabled VGPU type."},{"line_number":163,"context_line":"    We will define traits for GPUs. In virt driver (in the function of"},{"line_number":164,"context_line":"    ``get_inventory()``), it should query for the **qualitative** aspects of"},{"line_number":165,"context_line":"    the VGPU resources; map them to the defined traits and associate these"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_50e232d7","line":162,"in_reply_to":"7ffa3b31_965e8be4","updated":"2017-04-17 09:21:53.000000000","message":"Ok. let\u0027s not include the custom traits for vGPU type at the moment.","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"44c57d5485f4f135e39a61317aaa95705cb48f92","unresolved":false,"context_lines":[{"line_number":165,"context_line":"    the VGPU resources; map them to the defined traits and associate these"},{"line_number":166,"context_line":"    traits to the resource providers."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    * Define traits in os-traits"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"      * Put these traits in the same name space:"},{"line_number":171,"context_line":"        code::"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_7673ff81","line":168,"updated":"2017-04-14 20:07:39.000000000","message":"@dansmith: Yeah, the max supported resolution is indeed a trait that needs to be standardized. It\u0027s something an end user would request as a feature of the GPU resource. See my comment above, though, about how vGPU model/type is *not* something an end user would request...","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"889dc90b3e0b0cbae34353544e7675fba273c05d","unresolved":false,"context_lines":[{"line_number":165,"context_line":"    the VGPU resources; map them to the defined traits and associate these"},{"line_number":166,"context_line":"    traits to the resource providers."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    * Define traits in os-traits"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"      * Put these traits in the same name space:"},{"line_number":171,"context_line":"        code::"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_7e2ad1e7","line":168,"updated":"2017-04-13 20:10:44.000000000","message":"Someone familiar with the traits stuff should really comment on these. I\u0027m not sure maximum resolutions are something that they\u0027re expecting to encode in a trait, but I don\u0027t know.","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"fafa931805057a5b02866afed5321561b6d556b3","unresolved":false,"context_lines":[{"line_number":165,"context_line":"    the VGPU resources; map them to the defined traits and associate these"},{"line_number":166,"context_line":"    traits to the resource providers."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    * Define traits in os-traits"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"      * Put these traits in the same name space:"},{"line_number":171,"context_line":"        code::"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_78d99a81","line":168,"in_reply_to":"7ffa3b31_7673ff81","updated":"2017-04-17 09:21:53.000000000","message":"Thanks for the clarification.","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"44c57d5485f4f135e39a61317aaa95705cb48f92","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        NS_CUSTOM_VGPU_TYPE \u003d \"CUSTOM_VGPU_TYPE\\_\""},{"line_number":197,"context_line":"        CUSTOM_VGPU_TYPE_GVT_G \u003d NS_CUSTOM_VGPU_TYPE + \"GVT_G\""},{"line_number":198,"context_line":"        CUSTOM_VGPU_TYPE_K180Q \u003d NS_CUSTOM_VGPU_TYPE + \"K180Q\""},{"line_number":199,"context_line":"        CUSTOM_VGPU_TYPE_K160Q \u003d NS_CUSTOM_VGPU_TYPE + \"K160Q\""},{"line_number":200,"context_line":"        ..."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"# Define flavor: allow the cloud administrator to create different flavors"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_56700373","line":199,"updated":"2017-04-14 20:07:39.000000000","message":"We *could* do this, but I\u0027d prefer to start out without them and see if we actually do end up needing to make custom traits for the vGPU model. I suspect we won\u0027t actually need them...","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"fafa931805057a5b02866afed5321561b6d556b3","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        NS_CUSTOM_VGPU_TYPE \u003d \"CUSTOM_VGPU_TYPE\\_\""},{"line_number":197,"context_line":"        CUSTOM_VGPU_TYPE_GVT_G \u003d NS_CUSTOM_VGPU_TYPE + \"GVT_G\""},{"line_number":198,"context_line":"        CUSTOM_VGPU_TYPE_K180Q \u003d NS_CUSTOM_VGPU_TYPE + \"K180Q\""},{"line_number":199,"context_line":"        CUSTOM_VGPU_TYPE_K160Q \u003d NS_CUSTOM_VGPU_TYPE + \"K160Q\""},{"line_number":200,"context_line":"        ..."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"# Define flavor: allow the cloud administrator to create different flavors"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_10ecaac5","line":199,"in_reply_to":"7ffa3b31_56700373","updated":"2017-04-17 09:21:53.000000000","message":"Ok. Will remove these custom traits.","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"44c57d5485f4f135e39a61317aaa95705cb48f92","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"# At spawning an instance, the virt drivers should retrieve the VGPU"},{"line_number":210,"context_line":"  resource specs from the instance request specs and map them to the proper"},{"line_number":211,"context_line":"  VGPU type and relative information(e.g. the GPU group in XenAPI); then"},{"line_number":212,"context_line":"  create and/or associating VGPU to the instance."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_366d7798","line":211,"updated":"2017-04-14 20:07:39.000000000","message":"Not mapping to the VGPU type but rather mapping the requested traits like \"OpenCL\" or max resolution of 2560x1600 to a resource provider of VGPU resources that has those particular traits. The virt driver\u0027s get_inventory() method would be responsible for inspecting the local host\u0027s physical hardware, it\u0027s pGPU groups and mapping a set of traits for each pGPU group to the resource provider record for that pGPU group.","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"fafa931805057a5b02866afed5321561b6d556b3","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"# At spawning an instance, the virt drivers should retrieve the VGPU"},{"line_number":210,"context_line":"  resource specs from the instance request specs and map them to the proper"},{"line_number":211,"context_line":"  VGPU type and relative information(e.g. the GPU group in XenAPI); then"},{"line_number":212,"context_line":"  create and/or associating VGPU to the instance."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_c20d5b91","line":211,"in_reply_to":"7ffa3b31_366d7798","updated":"2017-04-17 09:21:53.000000000","message":"I said mapping to \"the proper VGPU type\" due to both XenServer and KVM maintain a list of vGPU types and nova virt driver can request a vGPU by telling hypervisor which type the vGPU should be.\n\nBut I agree it\u0027s better to use resource provider at here for the logical concept and each virt driver can determine how to request VGPU basing on their implementation. We needn\u0027t include more details in this spec.","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"44c57d5485f4f135e39a61317aaa95705cb48f92","unresolved":false,"context_lines":[{"line_number":217,"context_line":"* It has been attempted to support VGPU by creating fake SRIOV-VF PCIs for"},{"line_number":218,"context_line":"  VGPUs and then passthrough PCI devices `VGPU-passthrough-PCI`_. But there is"},{"line_number":219,"context_line":"  problem to populate the fake PCI\u0027s address. And it can\u0027t reflect the real"},{"line_number":220,"context_line":"  situation that some VGPUs are not really PCI devices."},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"Data model impact"},{"line_number":223,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_166a7b7f","line":220,"updated":"2017-04-14 20:07:39.000000000","message":"Weirdly, though, even the vGPUs that *aren\u0027t* PCI devices, like the NVIDIA mdev/vGPU things, actually do use PCI addressing in their sysfs representation :( https://www.redhat.com/archives/libvir-list/2016-August/msg00939.html. Anyway, regardless, we\u0027ll be handling these resources outside of the PCI device handling module in Nova.","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"fafa931805057a5b02866afed5321561b6d556b3","unresolved":false,"context_lines":[{"line_number":217,"context_line":"* It has been attempted to support VGPU by creating fake SRIOV-VF PCIs for"},{"line_number":218,"context_line":"  VGPUs and then passthrough PCI devices `VGPU-passthrough-PCI`_. But there is"},{"line_number":219,"context_line":"  problem to populate the fake PCI\u0027s address. And it can\u0027t reflect the real"},{"line_number":220,"context_line":"  situation that some VGPUs are not really PCI devices."},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"Data model impact"},{"line_number":223,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ffa3b31_d8f2ee06","line":220,"in_reply_to":"7ffa3b31_166a7b7f","updated":"2017-04-17 09:21:53.000000000","message":"In that link, the address is the PGPU\u0027s PCI address.\nIn \u0027VGPU-pasthrough-PCI\u0027, we create fake PCI device for each VGPU. The PCI address should be unique for each PCI device. For example, if one PGPU can support 8 VGPUs, then we need create 8 fake PCI devices. But we can\u0027t create 8 unique PCI addresses.","commit_id":"2ceef8adfea2df907805e1643c8df616e4ed5983"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"969f0863dbaa73ec512caac366a4ca25df3c3f37","unresolved":false,"context_lines":[{"line_number":112,"context_line":"      the hypervisor to get the existing pGPUs and their capacity for vGPUs."},{"line_number":113,"context_line":"      Make resource providers for each pGPU or each pGPU group (depend on how"},{"line_number":114,"context_line":"      the pGPUs are managed by hypervisors). These resource providers will be"},{"line_number":115,"context_line":"      as the compute_node\u0027s children `nested-resource-providers`_."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"       * *RP for GPU*: For example, libvirt will report the available vGPU"},{"line_number":118,"context_line":"         number for each pGPU. In this way, if there are multiple pGPUs (same"}],"source_content_type":"text/x-rst","patch_set":18,"id":"7ffa3b31_0a6d7531","line":115,"updated":"2017-04-18 10:53:09.000000000","message":"While I understand the need in case of multiple pGPUs, could we maybe try to have a first implementation by Pike that would only provide inventories attached to a compute node ? That way, it wouldn\u0027t need to wait for the nested RP spec to be implemented.","commit_id":"df32dba05e9ac90f5cb29f87f510c8e012e4b7a2"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"91b7ed47d31fe965f0de31d5ed63be383db9ad41","unresolved":false,"context_lines":[{"line_number":112,"context_line":"      the hypervisor to get the existing pGPUs and their capacity for vGPUs."},{"line_number":113,"context_line":"      Make resource providers for each pGPU or each pGPU group (depend on how"},{"line_number":114,"context_line":"      the pGPUs are managed by hypervisors). These resource providers will be"},{"line_number":115,"context_line":"      as the compute_node\u0027s children `nested-resource-providers`_."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"       * *RP for GPU*: For example, libvirt will report the available vGPU"},{"line_number":118,"context_line":"         number for each pGPU. In this way, if there are multiple pGPUs (same"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1f1a1f67_99713b10","line":115,"in_reply_to":"7ffa3b31_0a6d7531","updated":"2017-07-20 05:48:47.000000000","message":"Sylvain,\n\nSorry for the too late response on this comment. I saw the IRC conversion on this topic between you, Jay and Matt in last night. Sorry again for my absence.\n\nActually your suggestion at here was one of my proposals when (early pike or even before pike) I started the early discussion with Jay. I definitely understood that would be a quick implementation if we only attach inventories to compute nodes directly. To be honest, I was eager to go with that way so that we can enable VGPU earlier:-). But finally I was persuaded to give up this option by considering the following facts pointed out by Jay:\n1. Attaching inventory to compute directly, it will be totally customized so non-interoperable.\n2. We need identify different types of VGPUs (different characters: e.g. resolutions, feature...), so that it can schedule resources basing on the user\u0027s different demands. That\u0027s exactly what os-traits is trying to resolve. But we can\u0027t associate traits to inventory. So we need a RP to represent a PGPU/PGPU group which can supply a type of vGPUs; and then the traits can be associated to RPs. The nested RPs helps at here.\n3. Some other feature(e.g. FPGA...) also depends on the nested RPs. We should make VGPU going forward in the same way. It would help to avoid technical debt.\n\nSo the implementation depends on the nested RP. We should ensure the nested RP to be priority done earlier in Queens. @Jay, I think that\u0027s the plan and we\u0027re still in track. right?\n\nThanks all.\n\nJianghua","commit_id":"df32dba05e9ac90f5cb29f87f510c8e012e4b7a2"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7281c5a3caeeff6343d0272bb71f6ea8f7bf5bee","unresolved":false,"context_lines":[{"line_number":139,"context_line":"      The whitelist is::"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"       enabled_vgpu_types \u003d [ {\u0027vendor_id\u0027: \u00270x10DE\u0027,"},{"line_number":142,"context_line":"                               \u0027device_id\u0027: \u00270x0FFE\u0027,"},{"line_number":143,"context_line":"                               \u0027vgpu_type\u0027:  \u0027K160Q\u0027} ]"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"      The vGPU resource number should be 8 (4 GPU per card * 2 vGPU per GPU);"}],"source_content_type":"text/x-rst","patch_set":18,"id":"7ffa3b31_eb602435","line":142,"updated":"2017-04-17 17:41:13.000000000","message":"should be product_id, but it\u0027s OK..","commit_id":"df32dba05e9ac90f5cb29f87f510c8e012e4b7a2"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"fe3433d8757fbed43ca83ec3be2646e3bcaf909f","unresolved":false,"context_lines":[{"line_number":139,"context_line":"      The whitelist is::"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"       enabled_vgpu_types \u003d [ {\u0027vendor_id\u0027: \u00270x10DE\u0027,"},{"line_number":142,"context_line":"                               \u0027device_id\u0027: \u00270x0FFE\u0027,"},{"line_number":143,"context_line":"                               \u0027vgpu_type\u0027:  \u0027K160Q\u0027} ]"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"      The vGPU resource number should be 8 (4 GPU per card * 2 vGPU per GPU);"}],"source_content_type":"text/x-rst","patch_set":18,"id":"5ff73747_bbaeb595","line":142,"in_reply_to":"5ff73747_43936da4","updated":"2017-04-26 15:15:21.000000000","message":"@BobBall: I\u0027d like to keep this consistent with the pci_passthrough_whitelist and use vendor_id and product_id, which are the PCI standard names.","commit_id":"df32dba05e9ac90f5cb29f87f510c8e012e4b7a2"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"831054b5a5eb449086bda57700c496e3fef5067b","unresolved":false,"context_lines":[{"line_number":139,"context_line":"      The whitelist is::"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"       enabled_vgpu_types \u003d [ {\u0027vendor_id\u0027: \u00270x10DE\u0027,"},{"line_number":142,"context_line":"                               \u0027device_id\u0027: \u00270x0FFE\u0027,"},{"line_number":143,"context_line":"                               \u0027vgpu_type\u0027:  \u0027K160Q\u0027} ]"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"      The vGPU resource number should be 8 (4 GPU per card * 2 vGPU per GPU);"}],"source_content_type":"text/x-rst","patch_set":18,"id":"5ff73747_43936da4","line":142,"in_reply_to":"7ffa3b31_eb602435","updated":"2017-04-25 17:12:02.000000000","message":"For the PCI bus I think device_id is right; is a product_id already used in OpenStack?","commit_id":"df32dba05e9ac90f5cb29f87f510c8e012e4b7a2"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"831054b5a5eb449086bda57700c496e3fef5067b","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        code::"},{"line_number":181,"context_line":"        HW_GPU_FB_SIZE_128MB \u003d NS_GPU + \"FB_SIZE_128MB\""},{"line_number":182,"context_line":"        HW_GPU_FB_SIZE_256MB \u003d NS_GPU + \"FB_SIZE_256MB\""},{"line_number":183,"context_line":"        HW_GPU_FB_SIZE_512MB \u003d NS_GPU + \"FB_SIZE_512MB\""},{"line_number":184,"context_line":"        ..."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"      * supported features:"}],"source_content_type":"text/x-rst","patch_set":18,"id":"5ff73747_e34cb99f","line":183,"updated":"2017-04-25 17:12:02.000000000","message":"Rather than MB could we use GB.  The FB size might not be exactly 512MB - depending on the vGPU type - so asking for 0.5GB has a smallish fudge factor in the actual FB size allowed.\n\nHaving a series of resolutions makes more sense, but how about we use names for the resolution?","commit_id":"df32dba05e9ac90f5cb29f87f510c8e012e4b7a2"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"fe3433d8757fbed43ca83ec3be2646e3bcaf909f","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        code::"},{"line_number":181,"context_line":"        HW_GPU_FB_SIZE_128MB \u003d NS_GPU + \"FB_SIZE_128MB\""},{"line_number":182,"context_line":"        HW_GPU_FB_SIZE_256MB \u003d NS_GPU + \"FB_SIZE_256MB\""},{"line_number":183,"context_line":"        HW_GPU_FB_SIZE_512MB \u003d NS_GPU + \"FB_SIZE_512MB\""},{"line_number":184,"context_line":"        ..."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"      * supported features:"}],"source_content_type":"text/x-rst","patch_set":18,"id":"5ff73747_fbe0bdce","line":183,"in_reply_to":"5ff73747_e34cb99f","updated":"2017-04-26 15:15:21.000000000","message":"These aren\u0027t quantities. These are traits. In other words, we\u0027re not \"asking for a particular framebuffer size\". We\u0027re \"\nasking for a vGPU that supports a framebuffer size of 512MB.\n\nIn any case, I\u0027m still undecided on whether framebuffer sizes should actually even be traits or not... still thinking on it.","commit_id":"df32dba05e9ac90f5cb29f87f510c8e012e4b7a2"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"831054b5a5eb449086bda57700c496e3fef5067b","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"# Define flavor: allow the cloud administrator to create different flavors"},{"line_number":194,"context_line":"  to specify the required amount of vGPU and/or a set of required traits to"},{"line_number":195,"context_line":"  meet different users\u0027 demands."},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"# Scheduler: Basing on the amount of vGPU and the required traits, the resource"},{"line_number":198,"context_line":"  providers which can meet the conditions will be filtered out."}],"source_content_type":"text/x-rst","patch_set":18,"id":"5ff73747_a314714f","line":195,"updated":"2017-04-25 17:12:02.000000000","message":"I\u0027d love the cloud administrator to be able to use an alias for a set of traits.  For example NVIDIA have specific model names (cross hypervisor) - administrators will be used to these model names and will find it frustrating to not be able to specify them http://images.nvidia.com/content/grid/pdf/GRID-vGPU-User-Guide.pdf","commit_id":"df32dba05e9ac90f5cb29f87f510c8e012e4b7a2"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"fe3433d8757fbed43ca83ec3be2646e3bcaf909f","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"# Define flavor: allow the cloud administrator to create different flavors"},{"line_number":194,"context_line":"  to specify the required amount of vGPU and/or a set of required traits to"},{"line_number":195,"context_line":"  meet different users\u0027 demands."},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"# Scheduler: Basing on the amount of vGPU and the required traits, the resource"},{"line_number":198,"context_line":"  providers which can meet the conditions will be filtered out."}],"source_content_type":"text/x-rst","patch_set":18,"id":"5ff73747_bbea35a9","line":195,"in_reply_to":"5ff73747_a314714f","updated":"2017-04-26 15:15:21.000000000","message":"The flavor itself is an alias for a set of traits (and required resource amounts).\n\nWe might consider adding something like \"trait group\" for convenience in the future, but as of now, no plans for that.","commit_id":"df32dba05e9ac90f5cb29f87f510c8e012e4b7a2"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"969f0863dbaa73ec512caac366a4ca25df3c3f37","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":"  * add whitelist for enabled vGPU types in the config file"},{"line_number":274,"context_line":"  * query needed data for enabled vGPU types"},{"line_number":275,"context_line":"  * generate the nested resource providers"},{"line_number":276,"context_line":"  * generate the inventory data in resource providers"},{"line_number":277,"context_line":"  * mapping GPU characteristics to the traits defined in os-traits or"},{"line_number":278,"context_line":"    create custom traits"}],"source_content_type":"text/x-rst","patch_set":18,"id":"7ffa3b31_ca766d07","line":275,"updated":"2017-04-18 10:53:09.000000000","message":"see my comment above.","commit_id":"df32dba05e9ac90f5cb29f87f510c8e012e4b7a2"}],"specs/pike/approved/xenapi-add-support-for-vgpu.rst":[{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"8ea1809dcc887bf9a23f8f56e728cd94c84871e4","unresolved":false,"context_lines":[{"line_number":49,"context_line":"  | Max Resolution       | 1920x1080                                |"},{"line_number":50,"context_line":"  + ---------------------+------------------------------------------+"},{"line_number":51,"context_line":"  | No. of vGPUs         |                                          |"},{"line_number":52,"context_line":"  |    per GPU           | 8                                        |"},{"line_number":53,"context_line":"  +----------------------+------------------------------------------+"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Example 2 -  NVIDIA GRID K1"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ffe62b97_be29209c","line":52,"updated":"2017-03-27 09:56:34.000000000","message":"7","commit_id":"70947ffb53eb8394313a465fe8b5bddc182ba4ae"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"d450861dabb0c31d70f39b66213db3d082a0c930","unresolved":false,"context_lines":[{"line_number":49,"context_line":"  | Max Resolution       | 1920x1080                                |"},{"line_number":50,"context_line":"  + ---------------------+------------------------------------------+"},{"line_number":51,"context_line":"  | No. of vGPUs         |                                          |"},{"line_number":52,"context_line":"  |    per GPU           | 8                                        |"},{"line_number":53,"context_line":"  +----------------------+------------------------------------------+"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Example 2 -  NVIDIA GRID K1"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ffe62b97_f879e792","line":52,"in_reply_to":"ffe62b97_be29209c","updated":"2017-03-27 15:55:05.000000000","message":"ok. Is it due to one VGPU actually will be reserved for dom0 console usage? or will it always be 7.","commit_id":"70947ffb53eb8394313a465fe8b5bddc182ba4ae"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"8ea1809dcc887bf9a23f8f56e728cd94c84871e4","unresolved":false,"context_lines":[{"line_number":100,"context_line":"GPU_MODEL_K120Q \u003d NS_GPU + \u0027MODEL_K120Q\u0027"},{"line_number":101,"context_line":"…"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"* number of display heads:"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"GPU_DISPLAY_HEADS_1 \u003d NS_GPU + \u0027DISPLAY_HEADS_1\u0027"},{"line_number":106,"context_line":"GPU_DISPLAY_HEADS_2 \u003d NS_GPU + \u0027DISPLAY_HEADS_2\u0027"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ffe62b97_39252aac","line":103,"updated":"2017-03-27 09:56:34.000000000","message":"Number of heads and display resolution are not restricted by all GPU types - only NVIDIA really.\nI\u0027d suggest that we should focus either only on the model name or the model name and the size of the framebuffer instead.","commit_id":"70947ffb53eb8394313a465fe8b5bddc182ba4ae"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"d450861dabb0c31d70f39b66213db3d082a0c930","unresolved":false,"context_lines":[{"line_number":100,"context_line":"GPU_MODEL_K120Q \u003d NS_GPU + \u0027MODEL_K120Q\u0027"},{"line_number":101,"context_line":"…"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"* number of display heads:"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"GPU_DISPLAY_HEADS_1 \u003d NS_GPU + \u0027DISPLAY_HEADS_1\u0027"},{"line_number":106,"context_line":"GPU_DISPLAY_HEADS_2 \u003d NS_GPU + \u0027DISPLAY_HEADS_2\u0027"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ffe62b97_ad0e7f38","line":103,"in_reply_to":"ffe62b97_39252aac","updated":"2017-03-27 15:55:05.000000000","message":"I think these two characteristics are important for graphics processors. Particularly the end users may care about the display resolution actually. With these traits, it allows users to specify the desired resolutions. And it looks like there are the number of heads and display resolution for gvt-g also even they are a fix value at the moment. Right?\n\nAnd if these is no value for these two fields, just not sets traits for RP. And users still can get VGPU basing the other available traits e.g. model_name.\n\nYes, we can add the size of the framebuffer but I\u0027m not sure if the potential values are limited discrete values. The traits current are only for tagging purpose, so it can\u0027t support req_spec as trait_n \u003e\u003d a specific value.","commit_id":"70947ffb53eb8394313a465fe8b5bddc182ba4ae"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"673c61051db66e6cd9e38bccfc63cc5ae5bf800b","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"},{"line_number":8,"context_line":"XenAPI: Add support for Virtual GPU (VGPU)"},{"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"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/xenapi-add-support-for-vgpu"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ffe62b97_428bd966","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":6},"updated":"2017-03-29 12:59:47.000000000","message":"I wonder why does this spec have to be XenAPI specific?\nvGPU support should be generic enough from the resource providers point of view, each driver would just implement its own plumbing.","commit_id":"502abaabecfafef6e6d2478ae4b1471467b3baee"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"e1d261f5c377bd71951e6321e86621ee09e7d1ac","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"},{"line_number":8,"context_line":"XenAPI: Add support for Virtual GPU (VGPU)"},{"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"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/xenapi-add-support-for-vgpu"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ffe62b97_44e5ec09","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":6},"in_reply_to":"ffe62b97_16fcbe3c","updated":"2017-03-30 15:24:27.000000000","message":"Agreed the majority of the spec is generic - but the we also need to describe how the XenAPI driver (and in future other drivers) will implement the feature.\nIn many cases we can just replace \"XenAPI driver\" or \"XenServer\" with \"the virt driver\" and \"hypervisor\".\n\nThe spec should probably just be \"Add support for Virtual GPU\" with the body including the detail that the first driver will be XenAPI","commit_id":"502abaabecfafef6e6d2478ae4b1471467b3baee"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"83fe13d2bf54a76c106833d92a1654061ea5f553","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"},{"line_number":8,"context_line":"XenAPI: Add support for Virtual GPU (VGPU)"},{"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"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/xenapi-add-support-for-vgpu"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ffe62b97_7e4f7c6a","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":6},"in_reply_to":"ffe62b97_428bd966","updated":"2017-03-30 03:45:16.000000000","message":"Agree on that the VGPU resource is generic. But different hypervisors are at different stage for integrating VGPUs and have different representation or management ways on the the VGPUs. e.g. libvirt qemu integration is to use mediated PCI devices for VGPU [see: https://lists.gnu.org/archive/html/qemu-devel/2016-08/msg03294.html]; which is different from what is explained at here for XenServer.\n\nAt the first stage, it may be a good way to focus on more details on how the VGPU resources look like from one hypervisor. And raise proposals basing on the upstream resource provider framework. It would be easy to extend this to cover other hypervisors via new specs.\n \nLet\u0027s see what\u0027s the opinions from others. Any comments are welcome and appreciated.","commit_id":"502abaabecfafef6e6d2478ae4b1471467b3baee"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fb7a52951ac37092cee0e973d5044607f2f624f3","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"},{"line_number":8,"context_line":"XenAPI: Add support for Virtual GPU (VGPU)"},{"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"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/xenapi-add-support-for-vgpu"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ffe62b97_9f3461fd","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":6},"in_reply_to":"ffe62b97_44e5ec09","updated":"2017-03-30 16:02:39.000000000","message":"Yeah, to make it clear, I prefer for a spec adding new features for a specific virt driver to be discussing with other driver maintainers so the direction could be agreed between all of our contributors.\n\nImplementing the spec could have multiple work items, one or more being for a specific virt driver, and the spec could be saying that if an other virt driver would like to provide the feature, then they would use the same model.","commit_id":"502abaabecfafef6e6d2478ae4b1471467b3baee"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"8f0e116b8bf53224eee57d43128b9f43e7f7d82a","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"},{"line_number":8,"context_line":"XenAPI: Add support for Virtual GPU (VGPU)"},{"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"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/xenapi-add-support-for-vgpu"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ffe62b97_16fcbe3c","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":6},"in_reply_to":"ffe62b97_7e4f7c6a","updated":"2017-03-30 14:55:16.000000000","message":"Yes, I think it would be best to make this spec focus on the resource providers and the similarities between the drivers.\nI\u0027ll be happy to cover how libvirt will handle the vGPUs, but I think it\u0027s secondary to describing how the system as a whole manages this resource and interface with the driver.","commit_id":"502abaabecfafef6e6d2478ae4b1471467b3baee"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fb7a52951ac37092cee0e973d5044607f2f624f3","unresolved":false,"context_lines":[{"line_number":25,"context_line":"Use Cases"},{"line_number":26,"context_line":"----------"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"- VGPUs in the world of XenServer:"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Some VGPU capable graphics processor units can simulate multiple VGPUs"},{"line_number":31,"context_line":"on a single physical GPU(PGPU). We can assign the VGPUs to VMs to accelerate"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ffe62b97_3f0c3541","line":28,"range":{"start_line":28,"start_character":8,"end_line":28,"end_character":33},"updated":"2017-03-30 16:02:39.000000000","message":"Well, that\u0027s not only for XenServer, what you explained.","commit_id":"502abaabecfafef6e6d2478ae4b1471467b3baee"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fb7a52951ac37092cee0e973d5044607f2f624f3","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    +----------------+-----+-----+-----+-----+-----------+"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"GPU group: XenServer uses gpu-group to manage GPUs. A gpu-group is a"},{"line_number":73,"context_line":"collection of physical GPUs, all of the same type. XenServer automatically"},{"line_number":74,"context_line":"creates gpu-group objects at startup to represent the distinct types of"},{"line_number":75,"context_line":"physical GPU present on the platform. Once XenServer receives VGPU creation"},{"line_number":76,"context_line":"request, it will try to find an available PGPU from the target group."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"- Boot VM with VGPU in OpenStack"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"ffe62b97_0a492d5f","line":76,"range":{"start_line":72,"start_character":0,"end_line":76,"end_character":69},"updated":"2017-03-30 16:02:39.000000000","message":"only that is specific to the virt driver.","commit_id":"502abaabecfafef6e6d2478ae4b1471467b3baee"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fb7a52951ac37092cee0e973d5044607f2f624f3","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                            /           |                \\"},{"line_number":134,"context_line":"  inventory:   {\u0027VGPU\u0027:  amount_1}  {\u0027VGPU\u0027: amount_2} … {\u0027VGPU\u0027: amount_n}"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"In XenAPI virt driver (in the function of get_inventory()), it should query"},{"line_number":137,"context_line":"the GPU group and calculate the total capacity for the VGPU. Then it should"},{"line_number":138,"context_line":"populate the RPs tree which contain the inventory data for the VGPU resource;"},{"line_number":139,"context_line":"and generate the resource providers\u0027 traits basing on the VGPU\u0027s"},{"line_number":140,"context_line":"characteristics. The resource_tracker will persist the RPs tree into"},{"line_number":141,"context_line":"placement."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"The inventory data for VGPU resource should be similar as::"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"ffe62b97_2aaab1d1","line":141,"range":{"start_line":136,"start_character":0,"end_line":141,"end_character":10},"updated":"2017-03-30 16:02:39.000000000","message":"again, that model would be for all virt drivers...","commit_id":"502abaabecfafef6e6d2478ae4b1471467b3baee"}],"specs/queens/approved/virt-add-support-for-vgpu.rst":[{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"fabd3ffb520c49adc7d2dd7f77af44dc01d7c7f2","unresolved":false,"context_lines":[{"line_number":98,"context_line":"  * Tracking **quantitative** aspects of the vGPU resource:"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    * Define a new standard resource class `resource-classes`_ to track the"},{"line_number":101,"context_line":"      amount of vGPUs (``ResourceClass.vGPU``) and define a custom resource"},{"line_number":102,"context_line":"      class (``ResourceClass.CUSTOM_GPU_DISPLAY_HEADS``) to track the display"},{"line_number":103,"context_line":"      heads in the resource providers."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    * Generate the resource provider(RP) tree to track the vGPU resources."}],"source_content_type":"text/x-rst","patch_set":20,"id":"1f1a1f67_19bbeb72","line":102,"range":{"start_line":101,"start_character":60,"end_line":102,"end_character":56},"updated":"2017-07-20 05:52:38.000000000","message":"If it\u0027s acceptable, I think this can be a standard resource class also.","commit_id":"7c77737860b2b88a34a30e54a1a9dda1e9fa95b2"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f1df025bc4ebdebc38cfcd537f42c4b5d6d87c57","unresolved":false,"context_lines":[{"line_number":98,"context_line":"  * Tracking **quantitative** aspects of the vGPU resource:"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    * Define a new standard resource class `resource-classes`_ to track the"},{"line_number":101,"context_line":"      amount of vGPUs (``ResourceClass.vGPU``) and define another resource"},{"line_number":102,"context_line":"      class (``ResourceClass.GPU_DISPLAY_HEADS``) to track the display"},{"line_number":103,"context_line":"      heads in the resource providers."},{"line_number":104,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_ff89fe25","line":101,"range":{"start_line":101,"start_character":39,"end_line":101,"end_character":43},"updated":"2017-09-11 22:34:06.000000000","message":"Technically, VCPU is written as an object field in capital letters, so I\u0027d wait for VGPU. Of course, that\u0027s a nit.","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"b63fc45f91fa2ee2a366096e01633bd557fdc72d","unresolved":false,"context_lines":[{"line_number":98,"context_line":"  * Tracking **quantitative** aspects of the vGPU resource:"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    * Define a new standard resource class `resource-classes`_ to track the"},{"line_number":101,"context_line":"      amount of vGPUs (``ResourceClass.vGPU``) and define another resource"},{"line_number":102,"context_line":"      class (``ResourceClass.GPU_DISPLAY_HEADS``) to track the display"},{"line_number":103,"context_line":"      heads in the resource providers."},{"line_number":104,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_f22582ac","line":101,"range":{"start_line":101,"start_character":39,"end_line":101,"end_character":43},"in_reply_to":"5f2577a7_ff89fe25","updated":"2017-09-13 13:52:20.000000000","message":"Agreed","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f1df025bc4ebdebc38cfcd537f42c4b5d6d87c57","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    * Define a new standard resource class `resource-classes`_ to track the"},{"line_number":101,"context_line":"      amount of vGPUs (``ResourceClass.vGPU``) and define another resource"},{"line_number":102,"context_line":"      class (``ResourceClass.GPU_DISPLAY_HEADS``) to track the display"},{"line_number":103,"context_line":"      heads in the resource providers."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    * Generate the resource provider(RP) tree to track the vGPU resources."}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_df0ac288","line":102,"range":{"start_line":102,"start_character":29,"end_line":102,"end_character":46},"updated":"2017-09-11 22:34:06.000000000","message":"Given display heads depend on the vGPU type, I\u0027d correlate that by saying VGPU_DISPLAY_HEAD, also in singular.","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"b63fc45f91fa2ee2a366096e01633bd557fdc72d","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    * Define a new standard resource class `resource-classes`_ to track the"},{"line_number":101,"context_line":"      amount of vGPUs (``ResourceClass.vGPU``) and define another resource"},{"line_number":102,"context_line":"      class (``ResourceClass.GPU_DISPLAY_HEADS``) to track the display"},{"line_number":103,"context_line":"      heads in the resource providers."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    * Generate the resource provider(RP) tree to track the vGPU resources."}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_df9298f6","line":102,"range":{"start_line":102,"start_character":29,"end_line":102,"end_character":46},"in_reply_to":"5f2577a7_df0ac288","updated":"2017-09-13 13:52:20.000000000","message":"agreed.","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f1df025bc4ebdebc38cfcd537f42c4b5d6d87c57","unresolved":false,"context_lines":[{"line_number":102,"context_line":"      class (``ResourceClass.GPU_DISPLAY_HEADS``) to track the display"},{"line_number":103,"context_line":"      heads in the resource providers."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    * Generate the resource provider(RP) tree to track the vGPU resources."},{"line_number":106,"context_line":"      The resource tracking model is as the following::"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"       resource provider:                  compute_node"}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_7f274e14","line":105,"range":{"start_line":105,"start_character":55,"end_line":105,"end_character":73},"updated":"2017-09-11 22:34:06.000000000","message":"to track /the amount of vGPUs available and the number of vGPU display heads./","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"b63fc45f91fa2ee2a366096e01633bd557fdc72d","unresolved":false,"context_lines":[{"line_number":102,"context_line":"      class (``ResourceClass.GPU_DISPLAY_HEADS``) to track the display"},{"line_number":103,"context_line":"      heads in the resource providers."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    * Generate the resource provider(RP) tree to track the vGPU resources."},{"line_number":106,"context_line":"      The resource tracking model is as the following::"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"       resource provider:                  compute_node"}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_5fb8e874","line":105,"range":{"start_line":105,"start_character":55,"end_line":105,"end_character":73},"in_reply_to":"5f2577a7_7f274e14","updated":"2017-09-13 13:52:20.000000000","message":"Yeah, that\u0027s more clear.","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f1df025bc4ebdebc38cfcd537f42c4b5d6d87c57","unresolved":false,"context_lines":[{"line_number":121,"context_line":"       * *RP for GPU*: For example, libvirt will report the available vGPU"},{"line_number":122,"context_line":"         number for each pGPU. In this way, if there are multiple pGPUs (same"},{"line_number":123,"context_line":"         model), it can create one type of vGPUs on a pGPU and create other"},{"line_number":124,"context_line":"         types of vGPUs on the remaining pGPUs."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"       * *RP for pGPU group*: XenServer uses pGPU groups to manage pGPUs. A"},{"line_number":127,"context_line":"         pGPU group is a collection of pGPUs which belong to the same model."}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_5f76d1a6","line":124,"updated":"2017-09-11 22:34:06.000000000","message":"TBC, libvirt uses for supporting vGPU usecases the new kernel VFIO mediated devices interface.\n\nhttps://www.kernel.org/doc/Documentation/vfio-mediated-device.txt\nhttps://libvirt.org/drvnodedev.html#MDEV","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"b63fc45f91fa2ee2a366096e01633bd557fdc72d","unresolved":false,"context_lines":[{"line_number":121,"context_line":"       * *RP for GPU*: For example, libvirt will report the available vGPU"},{"line_number":122,"context_line":"         number for each pGPU. In this way, if there are multiple pGPUs (same"},{"line_number":123,"context_line":"         model), it can create one type of vGPUs on a pGPU and create other"},{"line_number":124,"context_line":"         types of vGPUs on the remaining pGPUs."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"       * *RP for pGPU group*: XenServer uses pGPU groups to manage pGPUs. A"},{"line_number":127,"context_line":"         pGPU group is a collection of pGPUs which belong to the same model."}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_d21baf18","line":124,"in_reply_to":"5f2577a7_5f76d1a6","updated":"2017-09-13 13:52:20.000000000","message":"I previously talked with Vladik on mdev. At that time we thought the mediated devices should be created basing on which type of vGPUs will be enabled on a pGPU. And the number of mdev is equal to the capacity of the enabled vGPUs. That can be configured in a file (e.g. .yml file).\n\nBasing on the above situation, although libvirt manages the vGPU resource in a different way than XenServer, but we still can contain the amount of vGPUs in the pGPU\u0027s inventory. That\u0027s exactly the same from the resource tracking view. The only except is that XenServer need consider the pGPU groups. \n\nIf the assumption is wrong, I\u0027m happy to change here to make it to reflect the true situation.","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4d2e00d440bb9ac46b24b6208f2b54e6e4c093b0","unresolved":false,"context_lines":[{"line_number":121,"context_line":"       * *RP for GPU*: For example, libvirt will report the available vGPU"},{"line_number":122,"context_line":"         number for each pGPU. In this way, if there are multiple pGPUs (same"},{"line_number":123,"context_line":"         model), it can create one type of vGPUs on a pGPU and create other"},{"line_number":124,"context_line":"         types of vGPUs on the remaining pGPUs."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"       * *RP for pGPU group*: XenServer uses pGPU groups to manage pGPUs. A"},{"line_number":127,"context_line":"         pGPU group is a collection of pGPUs which belong to the same model."}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_e8a58a05","line":124,"in_reply_to":"5f2577a7_d21baf18","updated":"2017-09-13 17:23:31.000000000","message":"No, you\u0027re correct. I just wanted to give more explantions about how libvirt returns a list of allocatable vGPUs but it seems you already discussed that with Vladik ;)","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f1df025bc4ebdebc38cfcd537f42c4b5d6d87c57","unresolved":false,"context_lines":[{"line_number":130,"context_line":"         specify which pGPU the vGPU to be created on**. So XenAPI (the virt"},{"line_number":131,"context_line":"         of XenServer) should make RP for each pGPU group. And the amount of"},{"line_number":132,"context_line":"         in the inventory should be total number of vGPUs which can be supplied"},{"line_number":133,"context_line":"         by pGPUs belong the group."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"      As described above, some pGPUs (e.g. NVIDIA GRID K1) support different"},{"line_number":136,"context_line":"      sized vGPU types. The capacity for different vGPU types varies. In order"}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_ff133d0c","line":133,"updated":"2017-09-11 22:34:06.000000000","message":"how do you plan to model the notion of pGPU groups from a Xen standpoint ? looks to me that\u0027s a classic multiple resource providers problem sharing same resource classes but I don\u0027t see that.\nAlso, I\u0027m a bit afraid of any added complexity it could add for implementing the spec. I just feel the notion of grouping physical GPUs shouldn\u0027t be part of that spec but a second spec in order to make baby steps that would help the implementation.","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4d2e00d440bb9ac46b24b6208f2b54e6e4c093b0","unresolved":false,"context_lines":[{"line_number":130,"context_line":"         specify which pGPU the vGPU to be created on**. So XenAPI (the virt"},{"line_number":131,"context_line":"         of XenServer) should make RP for each pGPU group. And the amount of"},{"line_number":132,"context_line":"         in the inventory should be total number of vGPUs which can be supplied"},{"line_number":133,"context_line":"         by pGPUs belong the group."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"      As described above, some pGPUs (e.g. NVIDIA GRID K1) support different"},{"line_number":136,"context_line":"      sized vGPU types. The capacity for different vGPU types varies. In order"}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_2b85cc5a","line":133,"in_reply_to":"5f2577a7_1215ae4a","updated":"2017-09-13 17:23:31.000000000","message":"Ok, thanks for the explanations, that\u0027s clearer to me.\nSo, given the hardware logic will be hidden by the virt driver, we don\u0027t need shared resource providers. Please nevermind the above comment then.","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"9e6c380b2d8dcd7fdb4c13dbd12e8aa5c580bc44","unresolved":false,"context_lines":[{"line_number":130,"context_line":"         specify which pGPU the vGPU to be created on**. So XenAPI (the virt"},{"line_number":131,"context_line":"         of XenServer) should make RP for each pGPU group. And the amount of"},{"line_number":132,"context_line":"         in the inventory should be total number of vGPUs which can be supplied"},{"line_number":133,"context_line":"         by pGPUs belong the group."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"      As described above, some pGPUs (e.g. NVIDIA GRID K1) support different"},{"line_number":136,"context_line":"      sized vGPU types. The capacity for different vGPU types varies. In order"}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_1215ae4a","line":133,"in_reply_to":"5f2577a7_ff133d0c","updated":"2017-09-13 14:31:47.000000000","message":"This was added to clarify why XenServer can\u0027t make each pGPU as a resource provider.\nAs line-139 said, we will whitelist to ensure each resource provider(representing one pGPU group) only has one type vGPUs enable. It will make thing easier.\nXenServer queries the pGPU groups and create one resource provider for each pGPU group. The amount of vGPUs in the pGPU group is saved in the inventory. It\u0027s a simple model as describe in line 106-113.","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f1df025bc4ebdebc38cfcd537f42c4b5d6d87c57","unresolved":false,"context_lines":[{"line_number":165,"context_line":"               \"min_unit\": 4,"},{"line_number":166,"context_line":"               \"max_unit\": 4,"},{"line_number":167,"context_line":"               \"step_size\": 4,"},{"line_number":168,"context_line":"               \"allocation_ratio\": 1.0"},{"line_number":169,"context_line":"           }"},{"line_number":170,"context_line":"       }"},{"line_number":171,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_ffe1fdff","line":168,"updated":"2017-09-11 22:34:06.000000000","message":"I just want to make sure that some drivers couldn\u0027t expose the number of available display heads so that resource class could potentially be optional.","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4d2e00d440bb9ac46b24b6208f2b54e6e4c093b0","unresolved":false,"context_lines":[{"line_number":165,"context_line":"               \"min_unit\": 4,"},{"line_number":166,"context_line":"               \"max_unit\": 4,"},{"line_number":167,"context_line":"               \"step_size\": 4,"},{"line_number":168,"context_line":"               \"allocation_ratio\": 1.0"},{"line_number":169,"context_line":"           }"},{"line_number":170,"context_line":"       }"},{"line_number":171,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_6be75442","line":168,"in_reply_to":"5f2577a7_529c56bf","updated":"2017-09-13 17:23:31.000000000","message":"Good idea: a default of 1 looks good to me if the virt driver doesn\u0027t get that from the hypervisor.\nTBC, the virt driver would return the above with a total of 1.","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"b63fc45f91fa2ee2a366096e01633bd557fdc72d","unresolved":false,"context_lines":[{"line_number":165,"context_line":"               \"min_unit\": 4,"},{"line_number":166,"context_line":"               \"max_unit\": 4,"},{"line_number":167,"context_line":"               \"step_size\": 4,"},{"line_number":168,"context_line":"               \"allocation_ratio\": 1.0"},{"line_number":169,"context_line":"           }"},{"line_number":170,"context_line":"       }"},{"line_number":171,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_529c56bf","line":168,"in_reply_to":"5f2577a7_ffe1fdff","updated":"2017-09-13 13:52:20.000000000","message":"I suppose we can make the default value as 1 similar as how XenServer handles Intel GVT-g vGPUs. But if that\u0027s a big concern, we can consider to treat it as customized resource class.","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f1df025bc4ebdebc38cfcd537f42c4b5d6d87c57","unresolved":false,"context_lines":[{"line_number":180,"context_line":"    traits to the resource providers."},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    * Define traits in os-traits"},{"line_number":183,"context_line":"      Note: `_gpu-traits` the following two traits have already be merged"},{"line_number":184,"context_line":"      to os-traits."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"      * supported resolutions:"}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_3f9ae513","line":183,"range":{"start_line":183,"start_character":40,"end_line":183,"end_character":50},"updated":"2017-09-11 22:34:06.000000000","message":"two trait types, but technically, there are many more than just two, just at least for the resolutions for example...\n\nIe. W1600H1200 is one trait, and W1680H1050 is another.","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"b63fc45f91fa2ee2a366096e01633bd557fdc72d","unresolved":false,"context_lines":[{"line_number":180,"context_line":"    traits to the resource providers."},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    * Define traits in os-traits"},{"line_number":183,"context_line":"      Note: `_gpu-traits` the following two traits have already be merged"},{"line_number":184,"context_line":"      to os-traits."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"      * supported resolutions:"}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_9f4c109f","line":183,"range":{"start_line":183,"start_character":40,"end_line":183,"end_character":50},"in_reply_to":"5f2577a7_3f9ae513","updated":"2017-09-13 13:52:20.000000000","message":"agreed. it should be \"two trait types\"","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f1df025bc4ebdebc38cfcd537f42c4b5d6d87c57","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        \u0027W1680H1050\u0027,"},{"line_number":191,"context_line":"        \u0027W1920H1080\u0027,"},{"line_number":192,"context_line":"        \u0027W1920H1200\u0027,"},{"line_number":193,"context_line":"        ..."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"      * supported features:"},{"line_number":196,"context_line":"        code::"}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_ffee9d86","line":193,"updated":"2017-09-11 22:34:06.000000000","message":"looks worth mentioning https://github.com/openstack/os-traits/blob/master/os_traits/hw/gpu/resolution.py instead of trying to provide a set of possible traits.","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"b63fc45f91fa2ee2a366096e01633bd557fdc72d","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        \u0027W1680H1050\u0027,"},{"line_number":191,"context_line":"        \u0027W1920H1080\u0027,"},{"line_number":192,"context_line":"        \u0027W1920H1200\u0027,"},{"line_number":193,"context_line":"        ..."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"      * supported features:"},{"line_number":196,"context_line":"        code::"}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_7f4f2492","line":193,"in_reply_to":"5f2577a7_ffee9d86","updated":"2017-09-13 13:52:20.000000000","message":"agreed","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f1df025bc4ebdebc38cfcd537f42c4b5d6d87c57","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        \u0027DIRECTX_V10\u0027,"},{"line_number":199,"context_line":"        \u0027OPENCL_V2_2\u0027,"},{"line_number":200,"context_line":"        \u0027CUDA_V7_1\u0027,"},{"line_number":201,"context_line":"        ..."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"# Define flavor: allow the cloud administrator to create different flavors"},{"line_number":204,"context_line":"  to specify the required amount of vGPU and/or a set of required traits to"}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_df8881c7","line":201,"updated":"2017-09-11 22:34:06.000000000","message":"ditto https://github.com/openstack/os-traits/blob/master/os_traits/hw/gpu/api.py","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f1df025bc4ebdebc38cfcd537f42c4b5d6d87c57","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"# Define flavor: allow the cloud administrator to create different flavors"},{"line_number":204,"context_line":"  to specify the required amount of vGPU and/or a set of required traits to"},{"line_number":205,"context_line":"  meet different users\u0027 demands."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"# Scheduler: Basing on the amount of vGPU and the required traits, the resource"},{"line_number":208,"context_line":"  providers which can meet the conditions will be filtered out."}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_5fbed165","line":205,"updated":"2017-09-11 22:34:06.000000000","message":"Technically, this is something which should be documented as an operator impact, and not here since there is nothing to implement about that.","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"9e6c380b2d8dcd7fdb4c13dbd12e8aa5c580bc44","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"# Define flavor: allow the cloud administrator to create different flavors"},{"line_number":204,"context_line":"  to specify the required amount of vGPU and/or a set of required traits to"},{"line_number":205,"context_line":"  meet different users\u0027 demands."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"# Scheduler: Basing on the amount of vGPU and the required traits, the resource"},{"line_number":208,"context_line":"  providers which can meet the conditions will be filtered out."}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_bdd6abc2","line":205,"in_reply_to":"5f2577a7_5fbed165","updated":"2017-09-13 14:31:47.000000000","message":"I thought it might help people to understand how this proposal will work by adding this at here. But if this is not a good practice, I\u0027m ok to remove it or move it to the section of \"Documentation Impact\". Thanks.","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4d2e00d440bb9ac46b24b6208f2b54e6e4c093b0","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"# Define flavor: allow the cloud administrator to create different flavors"},{"line_number":204,"context_line":"  to specify the required amount of vGPU and/or a set of required traits to"},{"line_number":205,"context_line":"  meet different users\u0027 demands."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"# Scheduler: Basing on the amount of vGPU and the required traits, the resource"},{"line_number":208,"context_line":"  providers which can meet the conditions will be filtered out."}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_4b5018d5","line":205,"in_reply_to":"5f2577a7_bdd6abc2","updated":"2017-09-13 17:23:31.000000000","message":"I think it\u0027s fine to just leave that brief note but maybe describing it more in the Operator Impact section.","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f1df025bc4ebdebc38cfcd537f42c4b5d6d87c57","unresolved":false,"context_lines":[{"line_number":205,"context_line":"  meet different users\u0027 demands."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"# Scheduler: Basing on the amount of vGPU and the required traits, the resource"},{"line_number":208,"context_line":"  providers which can meet the conditions will be filtered out."},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"# At spawning an instance, the virt drivers should retrieve the vGPU"},{"line_number":211,"context_line":"  resource specs from the instance request specs and map them to the proper"}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_bf5c954b","line":208,"updated":"2017-09-11 22:34:06.000000000","message":"There is an upgrade concern about that : say I have Pike compute services and Queens compute services. What if the flavor is updated by the operator ? You could imagine here that we would only return a subset of possible hosts (only the ones running new Q code) which could lead to a capacity problem. \n\nI\u0027d like here to see the spec explicit about the upgrade plans (ie. should we only filter out once all nodes are upgraded to Queens ?)","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"7f4ae5d28fb448c55a82c399992ccde83af5497b","unresolved":false,"context_lines":[{"line_number":205,"context_line":"  meet different users\u0027 demands."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"# Scheduler: Basing on the amount of vGPU and the required traits, the resource"},{"line_number":208,"context_line":"  providers which can meet the conditions will be filtered out."},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"# At spawning an instance, the virt drivers should retrieve the vGPU"},{"line_number":211,"context_line":"  resource specs from the instance request specs and map them to the proper"}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_8ccccd6a","line":208,"in_reply_to":"5f2577a7_4ba81876","updated":"2017-09-14 01:55:22.000000000","message":"Sylvain, thanks for the explainations. That\u0027s helpful. I\u0027d prefer to the first proposal. It\u0027s not only simple for the implementation but also avoid potential confusion with the 2nd option: it skips vGPUs even the flavor requests vGPU; it means the instances booted with such flavors may be actually booted on hosts which have no vGPU capability at all. Users may complain on why the instance has no vGPU but they paid more for vGPU flavors.","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4d2e00d440bb9ac46b24b6208f2b54e6e4c093b0","unresolved":false,"context_lines":[{"line_number":205,"context_line":"  meet different users\u0027 demands."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"# Scheduler: Basing on the amount of vGPU and the required traits, the resource"},{"line_number":208,"context_line":"  providers which can meet the conditions will be filtered out."},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"# At spawning an instance, the virt drivers should retrieve the vGPU"},{"line_number":211,"context_line":"  resource specs from the instance request specs and map them to the proper"}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_4ba81876","line":208,"in_reply_to":"5f2577a7_725072d5","updated":"2017-09-13 17:23:31.000000000","message":"Okay, I\u0027ll give you an example : \nSay that I\u0027m running Pike on my cloud of 100 compute nodes. Now, I\u0027m upgrading my cloud by rolling the upgrades of the nodes after having upgraded my other services. At the first step of the compute rolling upgrade, I\u0027d have :\n* API, conductor and scheduler running Queens\n* one compute running Queens\n* 99 computes running Pike\n\nNow, say I\u0027m updating my flavors (or adding new ones) for requesting vGPUs. In that case, given only the sole Queens node would report available vGPUs, all my users wanting to use that flavor would end up onto that node until the capacity is exceeded, right?\nAt the end of the day, users would get NoValidHosts if they\u0027d use that flavor.\n\nSo, here, I\u0027m thinking about two possibilities : \n* either we say to the operators to modify their flavor *after* they rolled out all their nodes into Queens\n* or we would make a conservative check that would only ask for vGPUs if all computes are running Queens.\n\nDoes that help you ?","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"b63fc45f91fa2ee2a366096e01633bd557fdc72d","unresolved":false,"context_lines":[{"line_number":205,"context_line":"  meet different users\u0027 demands."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"# Scheduler: Basing on the amount of vGPU and the required traits, the resource"},{"line_number":208,"context_line":"  providers which can meet the conditions will be filtered out."},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"# At spawning an instance, the virt drivers should retrieve the vGPU"},{"line_number":211,"context_line":"  resource specs from the instance request specs and map them to the proper"}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_725072d5","line":208,"in_reply_to":"5f2577a7_bf5c954b","updated":"2017-09-13 13:52:20.000000000","message":"hmmm, I don\u0027t quite understand this concern. I thought the operator need define new flavors to include resource demand on vGPU. When request new instance by using the new flavor having vGPU, it just returns the hosts which have exposed the vGPU resource - maybe a subset of possible hosts if some hosts are still running in the pike. It seems make sense or anything I misunderstood?","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f1df025bc4ebdebc38cfcd537f42c4b5d6d87c57","unresolved":false,"context_lines":[{"line_number":225,"context_line":""},{"line_number":226,"context_line":"No particular data model changes needed, but it depends on the data model"},{"line_number":227,"context_line":"defined in `custom-resource-classes`_ and `nested-resource-providers`_."},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"REST API impact"},{"line_number":230,"context_line":"---------------"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_9f2e79a3","line":228,"updated":"2017-09-11 22:34:06.000000000","message":"and potentially shared-resource-classes if you wanna implement pGPU modeling, right?","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4d2e00d440bb9ac46b24b6208f2b54e6e4c093b0","unresolved":false,"context_lines":[{"line_number":225,"context_line":""},{"line_number":226,"context_line":"No particular data model changes needed, but it depends on the data model"},{"line_number":227,"context_line":"defined in `custom-resource-classes`_ and `nested-resource-providers`_."},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"REST API impact"},{"line_number":230,"context_line":"---------------"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_6bc6344b","line":228,"in_reply_to":"5f2577a7_3d099bdc","updated":"2017-09-13 17:23:31.000000000","message":"As per your reply, nevermind my comment given the virt driver will only expose one resource provider for the whole pGPU group.","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"9e6c380b2d8dcd7fdb4c13dbd12e8aa5c580bc44","unresolved":false,"context_lines":[{"line_number":225,"context_line":""},{"line_number":226,"context_line":"No particular data model changes needed, but it depends on the data model"},{"line_number":227,"context_line":"defined in `custom-resource-classes`_ and `nested-resource-providers`_."},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"REST API impact"},{"line_number":230,"context_line":"---------------"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"5f2577a7_3d099bdc","line":228,"in_reply_to":"5f2577a7_9f2e79a3","updated":"2017-09-13 14:31:47.000000000","message":"Could you share the link for shared-resource-classes? In this spec, we only enable one vGPU type for a RP. The resource totally belong to the representing resource provider not shared.","commit_id":"2dc3c8d6b29b3c0cd1d7e06273b7a4701068d78d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2a40ffa6e0f3c2a41be3b6ad1001cc310290c211","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"       enabled_vgpu_types \u003d [ {\u0027vendor_id\u0027: \u00270x10DE\u0027,"},{"line_number":151,"context_line":"                               \u0027product_id\u0027: \u00270x0FFE\u0027,"},{"line_number":152,"context_line":"                               \u0027vgpu_type\u0027:  \u0027K160Q\u0027} ]"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"      The vGPU resource number should be 8 (4 GPU per card * 2 vGPU per GPU);"},{"line_number":155,"context_line":"      The display heads\u0027s total number is 32 (4 heads per vGPU * 8 vGPUs)."}],"source_content_type":"text/x-rst","patch_set":24,"id":"5f2577a7_cafa8641","line":152,"updated":"2017-09-15 21:25:31.000000000","message":"AFAIR, mediated devices in libvirt don\u0027t have PCI addresses but rather only have UUIDs.\nhttps://libvirt.org/drvnodedev.html#MDEV\n\n\nUsing PCI whitelists for describing which resources to use seems a very-specific implementation detail that shouldn\u0027t be bubbled up IMHO and I\u0027d rather love to see us talking (in a world pre-generic resource providers) about RP UUIDs and find some hypervisor-specific way to describe the matching between those RP UUIDs and the hypervisor-specific resources.\n\nJay, thoughts on that ?","commit_id":"c9ee276e17ed78a3434feff1d3c1e46e00fa2677"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"f0f87de4b2da9247576c6fc02caf26cf91261d75","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"       enabled_vgpu_types \u003d [ {\u0027vendor_id\u0027: \u00270x10DE\u0027,"},{"line_number":151,"context_line":"                               \u0027product_id\u0027: \u00270x0FFE\u0027,"},{"line_number":152,"context_line":"                               \u0027vgpu_type\u0027:  \u0027K160Q\u0027} ]"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"      The vGPU resource number should be 8 (4 GPU per card * 2 vGPU per GPU);"},{"line_number":155,"context_line":"      The display heads\u0027s total number is 32 (4 heads per vGPU * 8 vGPUs)."}],"source_content_type":"text/x-rst","patch_set":24,"id":"5f2577a7_e0afa327","line":152,"in_reply_to":"5f2577a7_607f33e0","updated":"2017-09-15 23:39:18.000000000","message":"IMHO I think RP uuid is something for internal implementation. the pGPU\u0027s vendor_id and product_id as a general concept for PCI devices seems something easier for deployers/operators to configure.","commit_id":"c9ee276e17ed78a3434feff1d3c1e46e00fa2677"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"654f8bb1ff0b11d6bc06921fa9c2deab1ad3de69","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"       enabled_vgpu_types \u003d [ {\u0027vendor_id\u0027: \u00270x10DE\u0027,"},{"line_number":151,"context_line":"                               \u0027product_id\u0027: \u00270x0FFE\u0027,"},{"line_number":152,"context_line":"                               \u0027vgpu_type\u0027:  \u0027K160Q\u0027} ]"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"      The vGPU resource number should be 8 (4 GPU per card * 2 vGPU per GPU);"},{"line_number":155,"context_line":"      The display heads\u0027s total number is 32 (4 heads per vGPU * 8 vGPUs)."}],"source_content_type":"text/x-rst","patch_set":24,"id":"5f2577a7_607f33e0","line":152,"in_reply_to":"5f2577a7_cafa8641","updated":"2017-09-15 23:22:10.000000000","message":"Sylvain,\n\nAs Jay said, this is a separate configuration option. We need this option to ensure only one vGPU type is enabled for each pGPU to avoid the classic multiple resource providers sharing the common resource issue. Basing on values configured in this option, virt will filter vGPU resources reported by hypervisors. This should be a common restriction for all virt drivers.\n\nI see there is no vendor_id or product_id for mdev itself; but the mdev\u0027s parent is the pGPU which has proper values. Virt driver can get the value from hypervisor.\n\nRegards,\nJianghua","commit_id":"c9ee276e17ed78a3434feff1d3c1e46e00fa2677"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"531435c529a6d3e52df0eaecd5e5aafa6eb88dad","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"       enabled_vgpu_types \u003d [ {\u0027vendor_id\u0027: \u00270x10DE\u0027,"},{"line_number":151,"context_line":"                               \u0027product_id\u0027: \u00270x0FFE\u0027,"},{"line_number":152,"context_line":"                               \u0027vgpu_type\u0027:  \u0027K160Q\u0027} ]"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"      The vGPU resource number should be 8 (4 GPU per card * 2 vGPU per GPU);"},{"line_number":155,"context_line":"      The display heads\u0027s total number is 32 (4 heads per vGPU * 8 vGPUs)."}],"source_content_type":"text/x-rst","patch_set":24,"id":"5f2577a7_2a48ea84","line":152,"in_reply_to":"5f2577a7_cafa8641","updated":"2017-09-15 21:30:21.000000000","message":"Sylvain, I don\u0027t see where Jianghua is saying to use the pci whitelist?\n\nThis is a separate configuration option called enabled_vgpu_types.","commit_id":"c9ee276e17ed78a3434feff1d3c1e46e00fa2677"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"35cacd130847290f48dc9b16e12026e891a10fd6","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"       enabled_vgpu_types \u003d [ {\u0027vendor_id\u0027: \u00270x10DE\u0027,"},{"line_number":151,"context_line":"                               \u0027product_id\u0027: \u00270x0FFE\u0027,"},{"line_number":152,"context_line":"                               \u0027vgpu_type\u0027:  \u0027K160Q\u0027} ]"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"      The vGPU resource number should be 8 (4 GPU per card * 2 vGPU per GPU);"},{"line_number":155,"context_line":"      The display heads\u0027s total number is 32 (4 heads per vGPU * 8 vGPUs)."}],"source_content_type":"text/x-rst","patch_set":24,"id":"ff5d4b2f_3f457b71","line":152,"in_reply_to":"5f2577a7_e0afa327","updated":"2017-09-19 09:18:35.000000000","message":"Currently hardware are using mdev framework but at some point they could use sriov framework.\n\nI think it\u0027s good to make difference but I would have named that option \u0027mdev_whitelist\u0027, no need to make it specific to GPU and I would have not used vgpu_type but mdev_type.\n\n  mdev_passthrough_whitelist \u003d [ {\u0027mdev_type\u0027:  \u0027nvidia-10\u0027}, ...] # Or filter by vendors as you suggested.\n\nAn other point I think that we should consider that work as a base to also handle sriov since sriov and mdev are really close, they currently use both vfio-pci the difference in on how they are exposed. We could see in future some networking hardwares using mdev framework or graphic hardwares using sriov framework. So we should not be too vGPU specific even if it\u0027s the point of that spec.","commit_id":"c9ee276e17ed78a3434feff1d3c1e46e00fa2677"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"e8a87b796c23bd59288bccf0f95f5a26b68ffad6","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"       enabled_vgpu_types \u003d [ {\u0027vendor_id\u0027: \u00270x10DE\u0027,"},{"line_number":151,"context_line":"                               \u0027product_id\u0027: \u00270x0FFE\u0027,"},{"line_number":152,"context_line":"                               \u0027vgpu_type\u0027:  \u0027K160Q\u0027} ]"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"      The vGPU resource number should be 8 (4 GPU per card * 2 vGPU per GPU);"},{"line_number":155,"context_line":"      The display heads\u0027s total number is 32 (4 heads per vGPU * 8 vGPUs)."}],"source_content_type":"text/x-rst","patch_set":24,"id":"7f515b1d_f01814d4","line":152,"in_reply_to":"9f5c4f37_3a1220b3","updated":"2017-09-22 18:33:48.000000000","message":"Some thoughts:\n1. I believe it can handle mdev properly.\nEach virt driver can query vGPU relative data in the way\nsupported by their hypervisors.\ne.g. \n * XenServer: regardless it\u0027s implemented via mdev or sriov\nor some old methods,  XenAPI can get GPU group; the supported\nvGPU types and capacities for each vGPU type;\n\n * mdevs on KVM: libvirt can get MDEV capabilities from the\nPCI device - PGPU.\n    \u003ccapability type\u003d\u0027mdev_types\u0027\u003e\n      \u003ctype id\u003d\u0027nvidia-11\u0027\u003e\n        \u003cname\u003eGRID M60-0B\u003c/name\u003e\n        \u003cdeviceAPI\u003evfio-pci\u003c/deviceAPI\u003e\n        \u003cavailableInstances\u003e16\u003c/availableInstances\u003e\n      \u003c/type\u003e\n\nFinally it creates providers and the vGPU inventory basing on\nthe queried data:\n  * XenServer:\n      GPU group \u003d\u003e resource provider;\n      amount of vGPU \u003d the enabled vGPU type\u0027s capacity\n  * kvm:\n      PGPU \u003d\u003e resourc provider\n      amount of vGPU \u003d the enabled vGPU type\u0027s \"availableInstances\" field.\n\n2. So the argument points are how the syntax should be for the\noption value and how to name this option so that it\u0027d be\ngeneral to cover future similar cases.\n\n  2.1 for the syntax:\n   In my previous proposal, using the vGPU type\u0027s name seems\ngood as they can be got from both XenServer and KVM.\n\n       enabled_vgpu_types \u003d [\u0027GRID K160Q\u0027...]\n\n   But if it\u0027s thought easier for libvirt to use the type id\n(\u0027nvidia-11\u0027), that\u0027s fine for me also. Then XenServer uses\n\u0027GRID K160Q\u0027 but libvirt uses \u0027nvidia-11\u0027. Please let me know\nwhat\u0027s your preference.\n\n  2.2 for the setting option\u0027s name\n   I have some concerns to use a general name (e.g. resource_white_list or device_white_list):\n   1). We currently have pci_passthrough_whitelist for PCI\ndevices. Isn\u0027t it somehow overlapped from the meaning of the\nwords?\n   2). If we use a general white_list, does it mean we should\nput all resources/devices which are supposed to be exposed?\notherwise they will be ignored?\n   3). If we do want to cover the potential cases which also\nneed a white list, may we apply the white list basing on\nresource classes?\n   e.g.\n   resource_white_list \u003d [ {\u0027resource_class\u0027: \u0027VGPU\u0027; \u0027vgpu_type\u0027: \u0027GRID K160Q\u0027} ]\n\n   It filters resources only when the resource class is in the\nwhite list. Then if there are similar cases, we define new\nresource class and put filter keys in the white list. The\nfilter keys\u0026values can be defined per resource classes.\n\n@Jay @Sylvain @sahid Please help to share your thoughts.\n\nThanks.","commit_id":"c9ee276e17ed78a3434feff1d3c1e46e00fa2677"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"7fee42b28e2a8b335e1927b40fdc3c936d7021e0","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"       enabled_vgpu_types \u003d [ {\u0027vendor_id\u0027: \u00270x10DE\u0027,"},{"line_number":151,"context_line":"                               \u0027product_id\u0027: \u00270x0FFE\u0027,"},{"line_number":152,"context_line":"                               \u0027vgpu_type\u0027:  \u0027K160Q\u0027} ]"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"      The vGPU resource number should be 8 (4 GPU per card * 2 vGPU per GPU);"},{"line_number":155,"context_line":"      The display heads\u0027s total number is 32 (4 heads per vGPU * 8 vGPUs)."}],"source_content_type":"text/x-rst","patch_set":24,"id":"9f5c4f37_3a1220b3","line":152,"in_reply_to":"9f5c4f37_739fabb4","updated":"2017-09-21 08:36:39.000000000","message":"That does not make sense to have two same options with different\nsyntax.\n\nI suggested that we should work by keeping in head that at some point\nthis is going to handle SRIOV or we are going to make the same mistake\nhas we did for /pci, and so re-implement an other thing when vendors\nwill come with a new mechanism to expose their devices.  So if we\nimplement this spec at some point we are going to erase /pci - no need\nto maintain two code which are basically doing the same.\n\nresource_white_list or hardware_whitelist or whatever which reflects\ndevices whitelist seems good so we can have one core-function to parse\nvendor, product, mdev...\n\nThat\u0027s say I think we are doing a mistake by trying to implement a\nsuch important feature on something experimental which is actually not\nyet fully designed (resource provider) - It took a while for us to\nmake the /pci working as expected and now that we have something\nproduction ready and which handle NUMA we are going to use something\nelse. also saying that it\u0027s not possible to make it handle mdev is not\nright.","commit_id":"c9ee276e17ed78a3434feff1d3c1e46e00fa2677"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"20a7ba150cb90c3f5f5cfa6673347e011040d23c","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"       enabled_vgpu_types \u003d [ {\u0027vendor_id\u0027: \u00270x10DE\u0027,"},{"line_number":151,"context_line":"                               \u0027product_id\u0027: \u00270x0FFE\u0027,"},{"line_number":152,"context_line":"                               \u0027vgpu_type\u0027:  \u0027K160Q\u0027} ]"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"      The vGPU resource number should be 8 (4 GPU per card * 2 vGPU per GPU);"},{"line_number":155,"context_line":"      The display heads\u0027s total number is 32 (4 heads per vGPU * 8 vGPUs)."}],"source_content_type":"text/x-rst","patch_set":24,"id":"9f5c4f37_739fabb4","line":152,"in_reply_to":"bf57530f_f3bc9ebc","updated":"2017-09-21 04:21:55.000000000","message":"Thans Sylvain for the advice. that\u0027s seems a solution to resolve the difference between XenServer and Libvirt.\n\nI also has another proposal as the following:\n\nFirstly let\u0027s see what we have in XS and libvirt for vGPU types:\n1. For XenServer, the \"model-name\" is mapped to the vendor advertised vGPU type (\"GRID M60-0B\").\n\nuuid ( RO)              : 6f2370c8-d5db-4153-9cab-c524c386634f\n       vendor-name ( RO): NVIDIA Corporation\n        model-name ( RO): GRID M60-0B\n         max-heads ( RO): 2\n    max-resolution ( RO): 2560x1600\n\n2. For libvirt, see the following two sections:\n   https://libvirt.org/drvnodedev.html#MDEV\n   https://libvirt.org/drvnodedev.html#MDEVCap\n\n   The mediated device has a field of type: e.g. \u003ctype id\u003d\u0027nvidia-11\u0027\u003e; here nvidia-11 is the vendor-supplied identifier for this device type. And the PCI device has a mdev type list where it contains the type id: (e.g. \u0027nvidia-11\u0027) and the type name (e.g. GRID M60-0B).\n\nSo it seems the model-name for XenServer and the type name for libvirt actually refer to the same thing - the vendor-supplied code name: e.g.\"GRID M60-0B\" which is also included in the user document: http://images.nvidia.com/content/grid/pdf/GRID-vGPU-User-Guide.pdf.\n\nBasing on the above situation, I agree there is no need to include the vendor_id and product_id in the option. And I\u0027d propose to make the option as the following: \n  enabled_vgpu_types \u003d [\u0027GRID K160Q\u0027...]\n\nThanks.\nJianghua","commit_id":"c9ee276e17ed78a3434feff1d3c1e46e00fa2677"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"fd16f9c1a553fc10ecea26ddb507b83d35c56e39","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"       enabled_vgpu_types \u003d [ {\u0027vendor_id\u0027: \u00270x10DE\u0027,"},{"line_number":151,"context_line":"                               \u0027product_id\u0027: \u00270x0FFE\u0027,"},{"line_number":152,"context_line":"                               \u0027vgpu_type\u0027:  \u0027K160Q\u0027} ]"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"      The vGPU resource number should be 8 (4 GPU per card * 2 vGPU per GPU);"},{"line_number":155,"context_line":"      The display heads\u0027s total number is 32 (4 heads per vGPU * 8 vGPUs)."}],"source_content_type":"text/x-rst","patch_set":24,"id":"ff5d4b2f_f4cca562","line":152,"in_reply_to":"ff5d4b2f_3f457b71","updated":"2017-09-19 10:45:41.000000000","message":"sahid,\nThanks for the comment.\n\nHow is the \u0027nvidia-11\u0027 populated? Is it the internal type id in libvirt?\nPer https://libvirt.org/drvnodedev.html#MDEV:\n    \u003ccapability type\u003d\u0027mdev_types\u0027\u003e\n      \u003ctype id\u003d\u0027nvidia-11\u0027\u003e\n        \u003cname\u003eGRID M60-0B\u003c/name\u003e\n        \u003cdeviceAPI\u003evfio-pci\u003c/deviceAPI\u003e\n        \u003cavailableInstances\u003e16\u003c/availableInstances\u003e\n      \u003c/type\u003e\n\nI see libvirt is using mdev, but other hypervisors e.g. XenServer is not using mdev, but it exposes the vGPU types. Actually if we check the above config for mdev, it also exposes the vGPU type - \"GRID M60-0B\". So that means mdev can be covered also by this spec.\n\nI think this spec is trying to use common concepts to support vGPU for different virts.\n\nI think we\u0027d better avoid exposing too much on the implementation details in hypervisor. But focus on the final result - regardless it\u0027s mdev or sriov or other framework, all just supply some types of vGPU resources.\n\n@Jay @Sylvain: your thoughts?\n\nThanks,\nJianghua","commit_id":"c9ee276e17ed78a3434feff1d3c1e46e00fa2677"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"00572ea0322e9d73dcc57da247923ee5740ff6f6","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"       enabled_vgpu_types \u003d [ {\u0027vendor_id\u0027: \u00270x10DE\u0027,"},{"line_number":151,"context_line":"                               \u0027product_id\u0027: \u00270x0FFE\u0027,"},{"line_number":152,"context_line":"                               \u0027vgpu_type\u0027:  \u0027K160Q\u0027} ]"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"      The vGPU resource number should be 8 (4 GPU per card * 2 vGPU per GPU);"},{"line_number":155,"context_line":"      The display heads\u0027s total number is 32 (4 heads per vGPU * 8 vGPUs)."}],"source_content_type":"text/x-rst","patch_set":24,"id":"bf57530f_f3bc9ebc","line":152,"in_reply_to":"ff5d4b2f_a1f4a25c","updated":"2017-09-20 19:46:43.000000000","message":"Jay, I wasn\u0027t saying the config opt was the PCI one. I was just trying to explain that the current option value looks very PCI-specific (vendor_id and device_id) while mediated devices can be other things not needing a PCI device.\n\nIn that case, I wonder about the formatting of that opt value, and how we could have a consistent way to describe different hypervisor value types.\n\nI agree with the fact that using RP UUIDs is a bad idea. But what I\u0027d like is probably just two config options instead of one :\n\n  enabled_vgpu_types \u003d [\u0027foo\u0027, \u0027bar\u0027]\n\n* for libvirt :\n\n  [libvirt]/vgpu_mapping \u003d {\u0027foo\u0027: \u0027nvidia-10\u0027, \u0027bar: \u0027nvidia-11\u0027}\n\n* for Xen :\n\n  [xenserver]/vgpu_mapping \u003d {\u0027foo\u0027: {\u0027vendor_id\u0027: \u00270x10DE\u0027,\n                         \u0027product_id\u0027: \u00270x0FFE\u0027,\n                         \u0027vgpu_type\u0027:  \u0027K160Q\u0027}}\n\nDoes that help ?","commit_id":"c9ee276e17ed78a3434feff1d3c1e46e00fa2677"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"c455b01422afe6c134964356cd579138001f7592","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"       enabled_vgpu_types \u003d [ {\u0027vendor_id\u0027: \u00270x10DE\u0027,"},{"line_number":151,"context_line":"                               \u0027product_id\u0027: \u00270x0FFE\u0027,"},{"line_number":152,"context_line":"                               \u0027vgpu_type\u0027:  \u0027K160Q\u0027} ]"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"      The vGPU resource number should be 8 (4 GPU per card * 2 vGPU per GPU);"},{"line_number":155,"context_line":"      The display heads\u0027s total number is 32 (4 heads per vGPU * 8 vGPUs)."}],"source_content_type":"text/x-rst","patch_set":24,"id":"ff5d4b2f_a1f4a25c","line":152,"in_reply_to":"ff5d4b2f_a5839556","updated":"2017-09-19 16:02:35.000000000","message":"sahid,\n Thanks for the explanation. Understood mdev will be handled in the driver for vGPU which chooses mdev framework. But hypervisor will do some conversion and expose different view on the resources. So we needn\u0027t take care about the underlying implementation. Each hypervisor\u0027s virt driver can mapping things from the exposed staff to the concepts understood by nova.\n\nI\u0027ve also understood your point is to make the new option to be general, so that it can be re-used when introducing devices in future features.I chose the option as \"enabled_vgpu_types\", as I thought that\u0027s a specific case for vGPU - just explained in the spec, there is issue to expose multiple vGPU types. If that\u0027s thought be a general case need be handled for other resource, we can consider to cover it in a general way.\n\nHow about define an option as resource_white_list?\nresource_white_list \u003d [ {\u0027resource_class\u0027: class_name_A; \u0027class_A_key1\u0027: \u0027value1\u0027; \u0027key2\u0027: val2...}...]\n\nIf resource_class is in the list, then only expose the resources belong to the list.\n\ne.g.  \nresource_white_list \u003d [ {\u0027resource_class\u0027: \u0027VGPU\u0027, \n                         \u0027vendor_id\u0027: \u00270x10DE\u0027,\n                         \u0027product_id\u0027: \u00270x0FFE\u0027,\n                         \u0027vgpu_type\u0027:  \u0027K160Q\u0027} ]\n\nThen we can implement a common function in virt to filter resources in a general way.\n\n@Jay @Sylvain @sahid, could you share your thoughts? Is it worthy to include that in this spec? Thanks.\n\n- Jianghua","commit_id":"c9ee276e17ed78a3434feff1d3c1e46e00fa2677"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"d60067dcbd37df40694ee2d07609ec3520edf93f","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"       enabled_vgpu_types \u003d [ {\u0027vendor_id\u0027: \u00270x10DE\u0027,"},{"line_number":151,"context_line":"                               \u0027product_id\u0027: \u00270x0FFE\u0027,"},{"line_number":152,"context_line":"                               \u0027vgpu_type\u0027:  \u0027K160Q\u0027} ]"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"      The vGPU resource number should be 8 (4 GPU per card * 2 vGPU per GPU);"},{"line_number":155,"context_line":"      The display heads\u0027s total number is 32 (4 heads per vGPU * 8 vGPUs)."}],"source_content_type":"text/x-rst","patch_set":24,"id":"ff5d4b2f_a5839556","line":152,"in_reply_to":"ff5d4b2f_f4cca562","updated":"2017-09-19 12:38:15.000000000","message":"\u003e I see libvirt is using mdev, but other hypervisors e.g. XenServer\n\u003e is not using mdev, but it exposes the vGPU types.\n\nIt\u0027s not libvirt who is using mdev it\u0027s how the hardware drivers have\nbeen designed. They are\tusing (intel/nvidia) mdev kernel framework,\nThen to get the privileges on the hardware KVM is using vfio-pci. It\nnot related to the hypervisors.\n\n\u003e Actually if we check the above config for mdev, it also exposes the\n\u003e vGPU type - \"GRID M60-0B\". So that means mdev can be covered also by\n\u003e this spec.\n\nThe id is populated by vendor and identify exactly a kind of card.\n\n\u003e I think this spec is trying to use common concepts to support vGPU\n\u003e for different virts.\n\u003e\n\u003e I think we\u0027d better avoid exposing too much on the implementation\n\u003e details in hypervisor. But focus on the final result - regardless\n\u003e it\u0027s mdev or sriov or other framework, all just supply some types\n\u003e of vGPU resources.\n\nYes it\u0027s a good point even if in all cases the operators will have to\nconfigure the hosts, meaning that create the pools of devices\n\nOr based on your comment we could have one general option for hardware whitelist\n\n  hardware_whitelist \u003d []\n\nIn that one we could mix ethernet and gpu hardwares whatever if they are mdev, sriov or simple passthrough, based on the request nova will select the good resource and configure the hypervisor to use the good mechanism.","commit_id":"c9ee276e17ed78a3434feff1d3c1e46e00fa2677"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c52c5cbb5742fbae057c67321fa777dbfb2c488e","unresolved":false,"context_lines":[{"line_number":162,"context_line":"               \"min_unit\": 1,"},{"line_number":163,"context_line":"               \"max_unit\": 1,"},{"line_number":164,"context_line":"               \"step_size\": 1,"},{"line_number":165,"context_line":"               \"allocation_ratio\": 1.0"},{"line_number":166,"context_line":"           },"},{"line_number":167,"context_line":"           obj_fields.ResourceClass.GPU_DISPLAY_HEADS: {"},{"line_number":168,"context_line":"               \"total\":32,"}],"source_content_type":"text/x-rst","patch_set":24,"id":"bf57530f_1df63591","line":165,"updated":"2017-09-20 12:12:42.000000000","message":"We should have a field to report the NUMA node of the physical device associated to each vGPU","commit_id":"c9ee276e17ed78a3434feff1d3c1e46e00fa2677"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0b3343320c2c85589f5e65f3450976062725fa10","unresolved":false,"context_lines":[{"line_number":162,"context_line":"               \"min_unit\": 1,"},{"line_number":163,"context_line":"               \"max_unit\": 1,"},{"line_number":164,"context_line":"               \"step_size\": 1,"},{"line_number":165,"context_line":"               \"allocation_ratio\": 1.0"},{"line_number":166,"context_line":"           },"},{"line_number":167,"context_line":"           obj_fields.ResourceClass.GPU_DISPLAY_HEADS: {"},{"line_number":168,"context_line":"               \"total\":32,"}],"source_content_type":"text/x-rst","patch_set":24,"id":"bf57530f_f366de51","line":165,"in_reply_to":"bf57530f_1df63591","updated":"2017-09-20 19:52:47.000000000","message":"While I can understand that NUMA locality is probably needed for vGPUs (I guess operators wouldn\u0027t want that the PCI device for the attributed vGPU wouldn\u0027t be on a different NUMA cell than the one where the pCPU is - for perf reasons-), we haven\u0027t at the moment used nested resource providers for providing NUMA resources.\n\nIn a nested RP world (I hope very soon) where we would want to have colocated pCPUs with pGPUs on the same NUMA cell, I\u0027d imagine that the resource class for describing for example the display heads would be on the same child resource provider that would be the NUMA cell assigned for pCPU.\n\n@Jay, you agree on that ?\n\nSahid, in that case, we don\u0027t need to extend the resource class object to support a new field that would be NUMA related.","commit_id":"c9ee276e17ed78a3434feff1d3c1e46e00fa2677"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"e8a87b796c23bd59288bccf0f95f5a26b68ffad6","unresolved":false,"context_lines":[{"line_number":162,"context_line":"               \"min_unit\": 1,"},{"line_number":163,"context_line":"               \"max_unit\": 1,"},{"line_number":164,"context_line":"               \"step_size\": 1,"},{"line_number":165,"context_line":"               \"allocation_ratio\": 1.0"},{"line_number":166,"context_line":"           },"},{"line_number":167,"context_line":"           obj_fields.ResourceClass.GPU_DISPLAY_HEADS: {"},{"line_number":168,"context_line":"               \"total\":32,"}],"source_content_type":"text/x-rst","patch_set":24,"id":"7f515b1d_7000a435","line":165,"in_reply_to":"bf57530f_f366de51","updated":"2017-09-22 18:33:48.000000000","message":"Thanks Sylvain for the response. It\u0027s fair enough. NUMA can be considered in the future when we use nested resource providers for NUMA resources.\n\nBy the way, the virt driver for XenServer (XenAPI) doesn\u0027t support NUMA at all at the moment.","commit_id":"c9ee276e17ed78a3434feff1d3c1e46e00fa2677"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"3b57519b77c9a3448058434f70ed3b9c01744c3e","unresolved":false,"context_lines":[{"line_number":248,"context_line":""},{"line_number":249,"context_line":"In order to enable the vGPU feature:"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"* the operators should change the nova configure settings to enable the vGPU"},{"line_number":252,"context_line":"  type for each pGPU model which will provide vGPU capabilites."},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"* the operators should create new or update existing flavors to specify the"}],"source_content_type":"text/x-rst","patch_set":24,"id":"5f2577a7_b04c6942","line":251,"updated":"2017-09-14 20:10:11.000000000","message":"It maybe goes without saying, but for the sake of being explicit, please be aware that not all platforms offer pGPUs. For example, the IBM Z (s390x) platform doesn\u0027t have anything like that. So I wish this feature is disabled by default or can handle zero/non-existing pGPUs (in contrast to 1..N pGPUs).","commit_id":"c9ee276e17ed78a3434feff1d3c1e46e00fa2677"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"f052600740d93612d1f39a505187c9a15696a505","unresolved":false,"context_lines":[{"line_number":248,"context_line":""},{"line_number":249,"context_line":"In order to enable the vGPU feature:"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"* the operators should change the nova configure settings to enable the vGPU"},{"line_number":252,"context_line":"  type for each pGPU model which will provide vGPU capabilites."},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"* the operators should create new or update existing flavors to specify the"}],"source_content_type":"text/x-rst","patch_set":24,"id":"5f2577a7_83d46921","line":251,"in_reply_to":"5f2577a7_7fc36939","updated":"2017-09-16 01:03:05.000000000","message":"@Jianghua Wang: Thanks for the explanation which resolved my concerns!","commit_id":"c9ee276e17ed78a3434feff1d3c1e46e00fa2677"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"f124be4cc2fa7b630d1406672c5fcaed87146c3b","unresolved":false,"context_lines":[{"line_number":248,"context_line":""},{"line_number":249,"context_line":"In order to enable the vGPU feature:"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"* the operators should change the nova configure settings to enable the vGPU"},{"line_number":252,"context_line":"  type for each pGPU model which will provide vGPU capabilites."},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"* the operators should create new or update existing flavors to specify the"}],"source_content_type":"text/x-rst","patch_set":24,"id":"5f2577a7_7fc36939","line":251,"in_reply_to":"5f2577a7_b04c6942","updated":"2017-09-14 23:38:48.000000000","message":"If there is no pGPUs in the host, accordingly there is no resource provider for pGPUs or vGPUs. So these host won\u0027t be scheduled when requesting vGPU. If there is no hosts supporting vGPU, there shouldn\u0027t define flavors requesting vGPU.\n\nSo this feature won\u0027t impact platforms which don\u0027t support vGPUs.","commit_id":"c9ee276e17ed78a3434feff1d3c1e46e00fa2677"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"75dc627284920cc53d0c1bea919443bb664c9c59","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    * Define a new standard resource class `resource-classes`_ to track the"},{"line_number":101,"context_line":"      amount of vGPUs (``ResourceClass.VGPU``) and define another resource"},{"line_number":102,"context_line":"      class (``ResourceClass.VGPU_DISPLAY_HEAD``) to track the display"},{"line_number":103,"context_line":"      heads in the resource providers."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    * Generate the resource provider(RP) tree to track the amount of vGPUs"},{"line_number":106,"context_line":"      available and the number of vGPU display heads."}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f515b1d_2b90564e","line":103,"updated":"2017-09-25 17:04:17.000000000","message":"ack. +1 on these resource class names.","commit_id":"674bc4bfe6ac390dca22056644b1c023262951fc"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"75dc627284920cc53d0c1bea919443bb664c9c59","unresolved":false,"context_lines":[{"line_number":113,"context_line":"       inventory:          vGPU_inv_1       vGPU_inv_2   ...    vGPU_inv_n"},{"line_number":114,"context_line":"                           DIS_HEAD_inv_1  DIS_HEAD_inv_2 ... DIS_HEAD_inv_n"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"      In virt driver (in the function of ``get_inventory()``), it would lookup"},{"line_number":117,"context_line":"      the hypervisor to get the existing pGPUs, their capacity for vGPUs and"},{"line_number":118,"context_line":"      the number of vGPU display heads. If hypervisor doesn\u0027t return the number"},{"line_number":119,"context_line":"      of display heads, virt driver uses 1 heads as the default value to cover"},{"line_number":120,"context_line":"      cases that multiple display heads are not supported by the vGPU vendors"}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f515b1d_2b79762e","line":117,"range":{"start_line":116,"start_character":72,"end_line":117,"end_character":20},"updated":"2017-09-25 17:04:17.000000000","message":"s/lookup the hypervisor/ask the hypervisor/","commit_id":"674bc4bfe6ac390dca22056644b1c023262951fc"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"75dc627284920cc53d0c1bea919443bb664c9c59","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"      In virt driver (in the function of ``get_inventory()``), it would lookup"},{"line_number":117,"context_line":"      the hypervisor to get the existing pGPUs, their capacity for vGPUs and"},{"line_number":118,"context_line":"      the number of vGPU display heads. If hypervisor doesn\u0027t return the number"},{"line_number":119,"context_line":"      of display heads, virt driver uses 1 heads as the default value to cover"},{"line_number":120,"context_line":"      cases that multiple display heads are not supported by the vGPU vendors"},{"line_number":121,"context_line":"      or not yet supported by hypervisors. With the inventory data, virt driver"},{"line_number":122,"context_line":"      makes resource providers for each pGPU or each pGPU group (depend on how"},{"line_number":123,"context_line":"      the pGPUs are managed by hypervisors). These resource providers will be"}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f515b1d_4ba3929f","line":120,"range":{"start_line":118,"start_character":40,"end_line":120,"end_character":77},"updated":"2017-09-25 17:04:17.000000000","message":"-1\n\nIf the hypervisor doesn\u0027t return the number of display heads, then the VGPU_DISPLAY_HEAD inventory record should *not* be created.","commit_id":"674bc4bfe6ac390dca22056644b1c023262951fc"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"ec1e1a3dd5d5cfa31c21f9102810432894bd2dc8","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"      In virt driver (in the function of ``get_inventory()``), it would lookup"},{"line_number":117,"context_line":"      the hypervisor to get the existing pGPUs, their capacity for vGPUs and"},{"line_number":118,"context_line":"      the number of vGPU display heads. If hypervisor doesn\u0027t return the number"},{"line_number":119,"context_line":"      of display heads, virt driver uses 1 heads as the default value to cover"},{"line_number":120,"context_line":"      cases that multiple display heads are not supported by the vGPU vendors"},{"line_number":121,"context_line":"      or not yet supported by hypervisors. With the inventory data, virt driver"},{"line_number":122,"context_line":"      makes resource providers for each pGPU or each pGPU group (depend on how"},{"line_number":123,"context_line":"      the pGPUs are managed by hypervisors). These resource providers will be"}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f515b1d_0917e2ef","line":120,"range":{"start_line":118,"start_character":40,"end_line":120,"end_character":77},"in_reply_to":"7f515b1d_4ba3929f","updated":"2017-09-25 17:53:19.000000000","message":"Agreed and fixed.\nActually similarly Sylvain mentioned to make the display heads as optional:-)\n\n\u003e\u003e\u003e\"I just want to make sure that some drivers couldn\u0027t expose the number of available display heads so that resource class could potentially be optional.\"","commit_id":"674bc4bfe6ac390dca22056644b1c023262951fc"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"75dc627284920cc53d0c1bea919443bb664c9c59","unresolved":false,"context_lines":[{"line_number":121,"context_line":"      or not yet supported by hypervisors. With the inventory data, virt driver"},{"line_number":122,"context_line":"      makes resource providers for each pGPU or each pGPU group (depend on how"},{"line_number":123,"context_line":"      the pGPUs are managed by hypervisors). These resource providers will be"},{"line_number":124,"context_line":"      associated as the compute_node\u0027s children `nested-resource-providers`_."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"       * *RP for GPU*: For example, libvirt will report the available vGPU"},{"line_number":127,"context_line":"         number for each pGPU. In this way, if there are multiple pGPUs (same"}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f515b1d_cbb8a2c9","line":124,"updated":"2017-09-25 17:04:17.000000000","message":"ack.","commit_id":"674bc4bfe6ac390dca22056644b1c023262951fc"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b0e3093ac577497a69176fe506861955b1685cab","unresolved":false,"context_lines":[{"line_number":149,"context_line":"      Note: the str_vgpu_type_x is a string representing a vGPU type. Different"},{"line_number":150,"context_line":"      hypervisors may expose the vGPU types with different strings. The virt"},{"line_number":151,"context_line":"      driver should handle that properly and map the whitelist to the correct"},{"line_number":152,"context_line":"      vGPUs types."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"      For example, NVIDIA\u0027s vGPU type M60-0B is exposed with the type id:"},{"line_number":155,"context_line":"      \"nvidia-11\" in libvirt; but that\u0027s exposed in XenServer with the type name:"}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f515b1d_3579d72e","line":152,"updated":"2017-09-25 16:03:54.000000000","message":"++","commit_id":"674bc4bfe6ac390dca22056644b1c023262951fc"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"75dc627284920cc53d0c1bea919443bb664c9c59","unresolved":false,"context_lines":[{"line_number":149,"context_line":"      Note: the str_vgpu_type_x is a string representing a vGPU type. Different"},{"line_number":150,"context_line":"      hypervisors may expose the vGPU types with different strings. The virt"},{"line_number":151,"context_line":"      driver should handle that properly and map the whitelist to the correct"},{"line_number":152,"context_line":"      vGPUs types."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"      For example, NVIDIA\u0027s vGPU type M60-0B is exposed with the type id:"},{"line_number":155,"context_line":"      \"nvidia-11\" in libvirt; but that\u0027s exposed in XenServer with the type name:"}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f515b1d_4bccb269","line":152,"in_reply_to":"7f515b1d_3579d72e","updated":"2017-09-25 17:04:17.000000000","message":"ack.","commit_id":"674bc4bfe6ac390dca22056644b1c023262951fc"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"75dc627284920cc53d0c1bea919443bb664c9c59","unresolved":false,"context_lines":[{"line_number":155,"context_line":"      \"nvidia-11\" in libvirt; but that\u0027s exposed in XenServer with the type name:"},{"line_number":156,"context_line":"      \"GRID M60-0B\". If we want to enable this vGPU type::"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"      * the whitelist in libvirt is:"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        enabled_vgpu_types \u003d [ \"nvidia-11\" ]"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f515b1d_ab2e86f7","line":158,"range":{"start_line":158,"start_character":22,"end_line":158,"end_character":35},"updated":"2017-09-25 17:04:17.000000000","message":"s/in libvirt is/when libvirt is the hypervisor should be/","commit_id":"674bc4bfe6ac390dca22056644b1c023262951fc"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"75dc627284920cc53d0c1bea919443bb664c9c59","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        enabled_vgpu_types \u003d [ \"nvidia-11\" ]"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"      * the whitelist in xenapi is:"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        enabled_vgpu_types \u003d [ \"GRID M60-0B\" ]"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f515b1d_6b388e3c","line":162,"range":{"start_line":162,"start_character":25,"end_line":162,"end_character":31},"updated":"2017-09-25 17:04:17.000000000","message":"ditto comment as above on line 162","commit_id":"674bc4bfe6ac390dca22056644b1c023262951fc"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"75dc627284920cc53d0c1bea919443bb664c9c59","unresolved":false,"context_lines":[{"line_number":184,"context_line":"               \"step_size\": 4,"},{"line_number":185,"context_line":"               \"allocation_ratio\": 1.0"},{"line_number":186,"context_line":"           }"},{"line_number":187,"context_line":"       }"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"  * Tracking **qualitative** aspects of the vGPU resources:"},{"line_number":190,"context_line":"    The feature of traits is targeted to support representing *qualitative*"}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f515b1d_eb435eae","line":187,"updated":"2017-09-25 17:04:17.000000000","message":"yep, exactly correct.","commit_id":"674bc4bfe6ac390dca22056644b1c023262951fc"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f09759e0f3c097ebc9becf862fab8dfa30d397a2","unresolved":false,"context_lines":[{"line_number":117,"context_line":"      the hypervisor to get the existing pGPUs, their capacity for vGPUs and"},{"line_number":118,"context_line":"      the number of vGPU display heads. Note: if the hypervisor doesn\u0027t return"},{"line_number":119,"context_line":"      the number of display heads, then the VGPU_DISPLAY_HEAD inventory record"},{"line_number":120,"context_line":"      should not be created."},{"line_number":121,"context_line":"      With the inventory data, virt driver makes resource providers for each"},{"line_number":122,"context_line":"      pGPU or each pGPU group (depend on how the pGPUs are managed by"},{"line_number":123,"context_line":"      hypervisors). These resource providers will be associated as the"}],"source_content_type":"text/x-rst","patch_set":26,"id":"7f515b1d_69e77614","line":120,"updated":"2017-09-25 17:53:43.000000000","message":"bingo :)","commit_id":"5906ce4badeace461606dd225d16edd604c72fec"}]}
