)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":32349,"name":"Thiago Paiva Brito","email":"thiago.brito@windriver.com","username":"outbrito"},"change_message_id":"49d0614965a73f8132a1739c33008b22d82a7f29","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"96639717_767e0f28","updated":"2021-11-04 17:44:43.000000000","message":"Great job writing this! 2 minor concerns inline to improve readability.","commit_id":"ce70d1439e785209f5afbc890abd1ca64f73218f"},{"author":{"_account_id":14675,"name":"Hugo Nicodemos","email":"hugo.brito@windriver.com","username":"nicodemos"},"change_message_id":"da842d4fee6422c0f58d87189afedde6736148b0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"8d194b89_00fee3a2","updated":"2021-11-04 17:52:37.000000000","message":"Thanks, Heitor. Just a comment inline","commit_id":"ce70d1439e785209f5afbc890abd1ca64f73218f"},{"author":{"_account_id":33384,"name":"Tiago Octaviano Primini","display_name":"Tiago Primini","email":"tiagooctaviano.primini@windriver.com","username":"tiago-primini"},"change_message_id":"f524bfdbbfb2ed821277956c05370827c5f7a62f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"f9697cce_983db4d3","updated":"2021-11-04 19:11:57.000000000","message":"two minor comments","commit_id":"c10a1180aa05dc483127dd6649a03f22bb58e354"},{"author":{"_account_id":33390,"name":"Heitor Matsui","display_name":"Heitor Matsui","email":"HeitorVieira.Matsui@windriver.com","username":"heitormatsui"},"change_message_id":"d66cb849b2e8295e012a4fe29e7796857092de57","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"b5ad08d1_7579a621","updated":"2021-11-04 19:21:04.000000000","message":"Thank you for the reviews","commit_id":"88b9de4560337267b24fde56abe148c1fb7256c9"}],"README.rst":[{"author":{"_account_id":32349,"name":"Thiago Paiva Brito","email":"thiago.brito@windriver.com","username":"outbrito"},"change_message_id":"49d0614965a73f8132a1739c33008b22d82a7f29","unresolved":true,"context_lines":[{"line_number":23,"context_line":"PCI devices used by these instances and avoid interrupts consuming excessive"},{"line_number":24,"context_line":"cycles from the platform cores."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Agent packaging"},{"line_number":27,"context_line":"~~~~~~~~~~~~~~~"},{"line_number":28,"context_line":"The agent code resides on the starlingx/utilities repo, along with the spec"},{"line_number":29,"context_line":"and docker_image files that are used to build an CentOS image with the agent"}],"source_content_type":"text/x-rst","patch_set":1,"id":"19273906_40e0b2ed","line":26,"updated":"2021-11-04 17:44:43.000000000","message":"I would move this section as the latest one on this doc. Just because this doesn\u0027t exactly documents *this* code but how it\u0027s deployed on a specific scenario.","commit_id":"ce70d1439e785209f5afbc890abd1ca64f73218f"},{"author":{"_account_id":33390,"name":"Heitor Matsui","display_name":"Heitor Matsui","email":"HeitorVieira.Matsui@windriver.com","username":"heitormatsui"},"change_message_id":"addb1e3038d676c7fe50473d879ceb7b72682988","unresolved":false,"context_lines":[{"line_number":23,"context_line":"PCI devices used by these instances and avoid interrupts consuming excessive"},{"line_number":24,"context_line":"cycles from the platform cores."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Agent packaging"},{"line_number":27,"context_line":"~~~~~~~~~~~~~~~"},{"line_number":28,"context_line":"The agent code resides on the starlingx/utilities repo, along with the spec"},{"line_number":29,"context_line":"and docker_image files that are used to build an CentOS image with the agent"}],"source_content_type":"text/x-rst","patch_set":1,"id":"07c338d6_d1916024","line":26,"in_reply_to":"19273906_40e0b2ed","updated":"2021-11-04 18:30:03.000000000","message":"Done","commit_id":"ce70d1439e785209f5afbc890abd1ca64f73218f"},{"author":{"_account_id":32349,"name":"Thiago Paiva Brito","email":"thiago.brito@windriver.com","username":"outbrito"},"change_message_id":"49d0614965a73f8132a1739c33008b22d82a7f29","unresolved":true,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"The agent is deployed by armada along with the other OpenStack helm"},{"line_number":33,"context_line":"charts (refer to starlingx/openstack-armada-app repo for the PCI IRQ"},{"line_number":34,"context_line":"Affinity Agent helm chart)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Agent operation"},{"line_number":37,"context_line":"~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"c0cd67ad_c9a7da33","line":34,"updated":"2021-11-04 17:44:43.000000000","message":"Maybe it would be best to have a hyperlink here to openstack-armada-app\u0027s folder where this chart will reside.","commit_id":"ce70d1439e785209f5afbc890abd1ca64f73218f"},{"author":{"_account_id":33390,"name":"Heitor Matsui","display_name":"Heitor Matsui","email":"HeitorVieira.Matsui@windriver.com","username":"heitormatsui"},"change_message_id":"addb1e3038d676c7fe50473d879ceb7b72682988","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"The agent is deployed by armada along with the other OpenStack helm"},{"line_number":33,"context_line":"charts (refer to starlingx/openstack-armada-app repo for the PCI IRQ"},{"line_number":34,"context_line":"Affinity Agent helm chart)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Agent operation"},{"line_number":37,"context_line":"~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"b6010158_3e7f32ac","line":34,"in_reply_to":"c0cd67ad_c9a7da33","updated":"2021-11-04 18:30:03.000000000","message":"Done","commit_id":"ce70d1439e785209f5afbc890abd1ca64f73218f"},{"author":{"_account_id":14675,"name":"Hugo Nicodemos","email":"hugo.brito@windriver.com","username":"nicodemos"},"change_message_id":"da842d4fee6422c0f58d87189afedde6736148b0","unresolved":true,"context_lines":[{"line_number":72,"context_line":"  | that was included on a previous range"},{"line_number":73,"context_line":"``int`` must be a value between `0` and `flavor.vcpus - 1`"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Example: ``hw_pci_irq_affinity_mask\u003d1-4,^3,6`` means that vcpus 1,2,4 and 6 will"},{"line_number":76,"context_line":"be used to handle the interruptions from the PCI devices."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ff530d0_9aaaaeab","line":75,"updated":"2021-11-04 17:52:37.000000000","message":"Actually, that doesn\u0027t mean that it\u0027s the vcpus number 1 to 4, but the vcpus with the indexes 1-4 that are in the list that nova allocates","commit_id":"ce70d1439e785209f5afbc890abd1ca64f73218f"},{"author":{"_account_id":33390,"name":"Heitor Matsui","display_name":"Heitor Matsui","email":"HeitorVieira.Matsui@windriver.com","username":"heitormatsui"},"change_message_id":"addb1e3038d676c7fe50473d879ceb7b72682988","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  | that was included on a previous range"},{"line_number":73,"context_line":"``int`` must be a value between `0` and `flavor.vcpus - 1`"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Example: ``hw_pci_irq_affinity_mask\u003d1-4,^3,6`` means that vcpus 1,2,4 and 6 will"},{"line_number":76,"context_line":"be used to handle the interruptions from the PCI devices."}],"source_content_type":"text/x-rst","patch_set":1,"id":"0d8d1b8d_29d0387d","line":75,"in_reply_to":"9ff530d0_9aaaaeab","updated":"2021-11-04 18:30:03.000000000","message":"Done","commit_id":"ce70d1439e785209f5afbc890abd1ca64f73218f"},{"author":{"_account_id":33384,"name":"Tiago Octaviano Primini","display_name":"Tiago Primini","email":"tiagooctaviano.primini@windriver.com","username":"tiago-primini"},"change_message_id":"f524bfdbbfb2ed821277956c05370827c5f7a62f","unresolved":true,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Agent operation"},{"line_number":27,"context_line":"~~~~~~~~~~~~~~~"},{"line_number":28,"context_line":"The agent operates by listening to RabbitMQ notifications from Nova. When"},{"line_number":29,"context_line":"an instance is created or moved to the host the agent check for an specific"},{"line_number":30,"context_line":"flavor spec (detailed below) and if it does then it queries libvirt to map"},{"line_number":31,"context_line":"the instance vCPUs into pCPUs from the host."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"55a7c91c_20c4e263","line":29,"range":{"start_line":28,"start_character":69,"end_line":29,"end_character":59},"updated":"2021-11-04 19:11:57.000000000","message":"When an instance is created or moved to the host, the agent checks","commit_id":"c10a1180aa05dc483127dd6649a03f22bb58e354"},{"author":{"_account_id":33390,"name":"Heitor Matsui","display_name":"Heitor Matsui","email":"HeitorVieira.Matsui@windriver.com","username":"heitormatsui"},"change_message_id":"d66cb849b2e8295e012a4fe29e7796857092de57","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Agent operation"},{"line_number":27,"context_line":"~~~~~~~~~~~~~~~"},{"line_number":28,"context_line":"The agent operates by listening to RabbitMQ notifications from Nova. When"},{"line_number":29,"context_line":"an instance is created or moved to the host the agent check for an specific"},{"line_number":30,"context_line":"flavor spec (detailed below) and if it does then it queries libvirt to map"},{"line_number":31,"context_line":"the instance vCPUs into pCPUs from the host."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"59002eec_5aaa86cb","line":29,"range":{"start_line":28,"start_character":69,"end_line":29,"end_character":59},"in_reply_to":"55a7c91c_20c4e263","updated":"2021-11-04 19:21:04.000000000","message":"Done","commit_id":"c10a1180aa05dc483127dd6649a03f22bb58e354"},{"author":{"_account_id":33384,"name":"Tiago Octaviano Primini","display_name":"Tiago Primini","email":"tiagooctaviano.primini@windriver.com","username":"tiago-primini"},"change_message_id":"52cbe66f13fec0b2ba9c684fb305a5400dc37bf8","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Agent operation"},{"line_number":27,"context_line":"~~~~~~~~~~~~~~~"},{"line_number":28,"context_line":"The agent operates by listening to RabbitMQ notifications from Nova. When"},{"line_number":29,"context_line":"an instance is created or moved to the host the agent check for an specific"},{"line_number":30,"context_line":"flavor spec (detailed below) and if it does then it queries libvirt to map"},{"line_number":31,"context_line":"the instance vCPUs into pCPUs from the host."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"f3fa66b7_fdde861b","line":29,"range":{"start_line":28,"start_character":69,"end_line":29,"end_character":59},"in_reply_to":"59002eec_5aaa86cb","updated":"2021-11-04 19:27:25.000000000","message":"oh you missed an \u0027s\u0027 here: the agent checks","commit_id":"c10a1180aa05dc483127dd6649a03f22bb58e354"},{"author":{"_account_id":33384,"name":"Tiago Octaviano Primini","display_name":"Tiago Primini","email":"tiagooctaviano.primini@windriver.com","username":"tiago-primini"},"change_message_id":"f524bfdbbfb2ed821277956c05370827c5f7a62f","unresolved":true,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Once the agent has the CPU mapping it determines the IRQ for each PCI"},{"line_number":34,"context_line":"device used by the instance. Then it loops over all PCI devices and"},{"line_number":35,"context_line":"determine which host NUMA node is associated with the device, the pCPUs"},{"line_number":36,"context_line":"that are associated with the NUMA node and finally set the CPU affinity"},{"line_number":37,"context_line":"for the IRQs of the PCI device based on the pCPU list."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1cb9020f_7905a4f2","line":35,"range":{"start_line":35,"start_character":0,"end_line":35,"end_character":9},"updated":"2021-11-04 19:11:57.000000000","message":"determines","commit_id":"c10a1180aa05dc483127dd6649a03f22bb58e354"},{"author":{"_account_id":33390,"name":"Heitor Matsui","display_name":"Heitor Matsui","email":"HeitorVieira.Matsui@windriver.com","username":"heitormatsui"},"change_message_id":"d66cb849b2e8295e012a4fe29e7796857092de57","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Once the agent has the CPU mapping it determines the IRQ for each PCI"},{"line_number":34,"context_line":"device used by the instance. Then it loops over all PCI devices and"},{"line_number":35,"context_line":"determine which host NUMA node is associated with the device, the pCPUs"},{"line_number":36,"context_line":"that are associated with the NUMA node and finally set the CPU affinity"},{"line_number":37,"context_line":"for the IRQs of the PCI device based on the pCPU list."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"fd9c0812_aa7a753c","line":35,"range":{"start_line":35,"start_character":0,"end_line":35,"end_character":9},"in_reply_to":"1cb9020f_7905a4f2","updated":"2021-11-04 19:21:04.000000000","message":"Done","commit_id":"c10a1180aa05dc483127dd6649a03f22bb58e354"},{"author":{"_account_id":33338,"name":"Marcelo","display_name":"Marcelo","username":"marcelouesono"},"change_message_id":"f17fd5ff14258c8ce9df01acf0eb74d20de3a44d","unresolved":true,"context_lines":[{"line_number":61,"context_line":"- | ``^int``: the vCPU expressed by ``int`` will not be assigned to handle the"},{"line_number":62,"context_line":"  | interruptions from the PCI devices and shall be used to exclude a vCPU"},{"line_number":63,"context_line":"  | that was included on a previous range"},{"line_number":64,"context_line":"**NOTE**: ``int`` must be a value between ``0`` and ``flavor.vcpus - 1``"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Example: ``hw_pci_irq_affinity_mask\u003d1-4,^3,6`` means that vCPUs with indexes"},{"line_number":67,"context_line":"``1,2,4 and 6`` from the vCPU list that Nova allocates to the instance will"}],"source_content_type":"text/x-rst","patch_set":2,"id":"081a5c56_c9a18a98","line":64,"updated":"2021-11-04 19:13:01.000000000","message":"I think lists in rst should have a blank line at the end (before **NOTE**).","commit_id":"c10a1180aa05dc483127dd6649a03f22bb58e354"},{"author":{"_account_id":33390,"name":"Heitor Matsui","display_name":"Heitor Matsui","email":"HeitorVieira.Matsui@windriver.com","username":"heitormatsui"},"change_message_id":"d66cb849b2e8295e012a4fe29e7796857092de57","unresolved":false,"context_lines":[{"line_number":61,"context_line":"- | ``^int``: the vCPU expressed by ``int`` will not be assigned to handle the"},{"line_number":62,"context_line":"  | interruptions from the PCI devices and shall be used to exclude a vCPU"},{"line_number":63,"context_line":"  | that was included on a previous range"},{"line_number":64,"context_line":"**NOTE**: ``int`` must be a value between ``0`` and ``flavor.vcpus - 1``"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Example: ``hw_pci_irq_affinity_mask\u003d1-4,^3,6`` means that vCPUs with indexes"},{"line_number":67,"context_line":"``1,2,4 and 6`` from the vCPU list that Nova allocates to the instance will"}],"source_content_type":"text/x-rst","patch_set":2,"id":"bd4e0131_59be76df","line":64,"in_reply_to":"081a5c56_c9a18a98","updated":"2021-11-04 19:21:04.000000000","message":"Done","commit_id":"c10a1180aa05dc483127dd6649a03f22bb58e354"},{"author":{"_account_id":33338,"name":"Marcelo","display_name":"Marcelo","username":"marcelouesono"},"change_message_id":"f17fd5ff14258c8ce9df01acf0eb74d20de3a44d","unresolved":true,"context_lines":[{"line_number":74,"context_line":"  | when using flavor spec ``hw:cpu_policy\u003dshared``)"},{"line_number":75,"context_line":"- | No CPU affining will be performed when invalid ranges are specified on"},{"line_number":76,"context_line":"  | the flavor spec, the agent instead will log error messages indicating"},{"line_number":77,"context_line":"  | the problem"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Agent packaging"},{"line_number":80,"context_line":"~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":2,"id":"b76f8c3d_758bea13","line":77,"updated":"2021-11-04 19:13:01.000000000","message":"You are using | at the beginning of the list items, this forces them to line break.\nIs this intentional?\nIf you just not use the | and indent accordingly, the text will line break only when necessary.","commit_id":"c10a1180aa05dc483127dd6649a03f22bb58e354"},{"author":{"_account_id":33390,"name":"Heitor Matsui","display_name":"Heitor Matsui","email":"HeitorVieira.Matsui@windriver.com","username":"heitormatsui"},"change_message_id":"d66cb849b2e8295e012a4fe29e7796857092de57","unresolved":false,"context_lines":[{"line_number":74,"context_line":"  | when using flavor spec ``hw:cpu_policy\u003dshared``)"},{"line_number":75,"context_line":"- | No CPU affining will be performed when invalid ranges are specified on"},{"line_number":76,"context_line":"  | the flavor spec, the agent instead will log error messages indicating"},{"line_number":77,"context_line":"  | the problem"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Agent packaging"},{"line_number":80,"context_line":"~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":2,"id":"95371912_1b6052cb","line":77,"in_reply_to":"b76f8c3d_758bea13","updated":"2021-11-04 19:21:04.000000000","message":"I figured out now how to keep the line length without using |, thanks Uesono","commit_id":"c10a1180aa05dc483127dd6649a03f22bb58e354"},{"author":{"_account_id":33338,"name":"Marcelo","display_name":"Marcelo","username":"marcelouesono"},"change_message_id":"f17fd5ff14258c8ce9df01acf0eb74d20de3a44d","unresolved":true,"context_lines":[{"line_number":79,"context_line":"Agent packaging"},{"line_number":80,"context_line":"~~~~~~~~~~~~~~~"},{"line_number":81,"context_line":"The agent code resides on the ``starlingx/utilities`` repo, along with the spec"},{"line_number":82,"context_line":"and docker_image files that are used to build an CentOS image with the agent"},{"line_number":83,"context_line":"wheel installed on it."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"The agent is deployed by Armada along with the other OpenStack helm charts;"}],"source_content_type":"text/x-rst","patch_set":2,"id":"506b49b4_2d45701b","line":82,"updated":"2021-11-04 19:13:01.000000000","message":"\"a\" CentOS image","commit_id":"c10a1180aa05dc483127dd6649a03f22bb58e354"},{"author":{"_account_id":33390,"name":"Heitor Matsui","display_name":"Heitor Matsui","email":"HeitorVieira.Matsui@windriver.com","username":"heitormatsui"},"change_message_id":"d66cb849b2e8295e012a4fe29e7796857092de57","unresolved":false,"context_lines":[{"line_number":79,"context_line":"Agent packaging"},{"line_number":80,"context_line":"~~~~~~~~~~~~~~~"},{"line_number":81,"context_line":"The agent code resides on the ``starlingx/utilities`` repo, along with the spec"},{"line_number":82,"context_line":"and docker_image files that are used to build an CentOS image with the agent"},{"line_number":83,"context_line":"wheel installed on it."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"The agent is deployed by Armada along with the other OpenStack helm charts;"}],"source_content_type":"text/x-rst","patch_set":2,"id":"2f568c98_ef9b997b","line":82,"in_reply_to":"506b49b4_2d45701b","updated":"2021-11-04 19:21:04.000000000","message":"Done","commit_id":"c10a1180aa05dc483127dd6649a03f22bb58e354"}]}
