)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"3736b74f8157f51f831a22c06e2efeece6eba54f","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Sean Mooney \u003cwork@seanmooney.info\u003e"},{"line_number":5,"context_line":"CommitDate: 2025-07-03 15:33:56 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"support iothread for nova vms"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change add a spec to describe extending the libvirt"},{"line_number":10,"context_line":"driver to support static and dynmic allocation of io thread"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"8bcc6c27_f565ba2f","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":1},"updated":"2025-07-04 13:48:33.000000000","message":"nit: Support","commit_id":"2c380cf7e9b0a071f3f63ef5087bb5be90a113e9"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"3736b74f8157f51f831a22c06e2efeece6eba54f","unresolved":true,"context_lines":[{"line_number":7,"context_line":"support iothread for nova vms"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change add a spec to describe extending the libvirt"},{"line_number":10,"context_line":"driver to support static and dynmic allocation of io thread"},{"line_number":11,"context_line":"per disk."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Assisted-By: Claude-Code"},{"line_number":14,"context_line":"Change-Id: I2f29833c95af79101d35b5f321b73dc8d27f4646"},{"line_number":15,"context_line":"Signed-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"5389d61e_6766bd43","line":12,"range":{"start_line":10,"start_character":25,"end_line":12,"end_character":1},"updated":"2025-07-04 13:48:33.000000000","message":"This is not true anymore.","commit_id":"2c380cf7e9b0a071f3f63ef5087bb5be90a113e9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"21b1c3d2830a4eda4acc651900a569ebe3f3c4b8","unresolved":true,"context_lines":[{"line_number":7,"context_line":"support iothread for nova vms"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change add a spec to describe extending the libvirt"},{"line_number":10,"context_line":"driver to support static and dynmic allocation of io thread"},{"line_number":11,"context_line":"per disk."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Assisted-By: Claude-Code"},{"line_number":14,"context_line":"Change-Id: I2f29833c95af79101d35b5f321b73dc8d27f4646"},{"line_number":15,"context_line":"Signed-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"5197d386_814480fd","line":12,"range":{"start_line":10,"start_character":25,"end_line":12,"end_character":1},"in_reply_to":"5389d61e_6766bd43","updated":"2025-07-04 14:01:36.000000000","message":"right i shoudl update htis","commit_id":"2c380cf7e9b0a071f3f63ef5087bb5be90a113e9"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"3736b74f8157f51f831a22c06e2efeece6eba54f","unresolved":true,"context_lines":[{"line_number":10,"context_line":"driver to support static and dynmic allocation of io thread"},{"line_number":11,"context_line":"per disk."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Assisted-By: Claude-Code"},{"line_number":14,"context_line":"Change-Id: I2f29833c95af79101d35b5f321b73dc8d27f4646"},{"line_number":15,"context_line":"Signed-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"8d640a50_0ca4cb0c","line":13,"updated":"2025-07-04 13:48:33.000000000","message":"Just a procural stuff, could you add the link to the blueprint here. Also the bkueprint needs to be created.","commit_id":"2c380cf7e9b0a071f3f63ef5087bb5be90a113e9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"21b1c3d2830a4eda4acc651900a569ebe3f3c4b8","unresolved":true,"context_lines":[{"line_number":10,"context_line":"driver to support static and dynmic allocation of io thread"},{"line_number":11,"context_line":"per disk."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Assisted-By: Claude-Code"},{"line_number":14,"context_line":"Change-Id: I2f29833c95af79101d35b5f321b73dc8d27f4646"},{"line_number":15,"context_line":"Signed-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"f018fe3c_53c07756","line":13,"in_reply_to":"8d640a50_0ca4cb0c","updated":"2025-07-04 14:01:36.000000000","message":"sure, as i said i was avoiding creatin it until we were happy with the direction but i cna go do that now.","commit_id":"2c380cf7e9b0a071f3f63ef5087bb5be90a113e9"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e7fbc14ea31287a3f9bc5a7462bd600939f37793","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"a4a453c4_ea3f8d9c","updated":"2025-07-03 08:56:19.000000000","message":"I did a first pass and left a soft -1 to point out a few typos and raise a couple of questions.\nWhat I think is most missing is an XML snippet showing the result of the iothreads_per_disk parameter.\nThat said, from a technical perspective, the spec looks complete.","commit_id":"98e6169f57382ee0e352628f0146945b5cd7b35e"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"7365862e6490930e8ba074e9c006fdcb47cda4cb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"01ad41e4_f7a094ef","updated":"2025-07-03 08:21:36.000000000","message":"I’ve discussed with Masahito the reasoning and goals behind this spec.\nI’d like him to review it to confirm that it meets his original need regarding IOThreads.\nI believe it does, but I’d prefer to have his +1 to ensure it aligns with his expectations.","commit_id":"98e6169f57382ee0e352628f0146945b5cd7b35e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"66970beb79d7d8f1e56e812bfcc32e0d1bd3fb19","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"cc85a1e3_f12bea30","updated":"2025-07-03 11:31:46.000000000","message":"i missed a couple of comment form v1\n\nlet me go fix up the typos and add some xml/flavor exampels to ilistrate how this will work and ill upload a v3 in the next hour or so.","commit_id":"98e6169f57382ee0e352628f0146945b5cd7b35e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"40479457c71da56373f05839061f13551e99bc03","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"5e840d68_f024eb09","updated":"2025-07-03 12:10:54.000000000","message":"thats just the spelling and grammer pass\nill adress the other comments next but that should help with readablity.","commit_id":"063715cfd1179f3060bb634d012e688410e59a45"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"3736b74f8157f51f831a22c06e2efeece6eba54f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"469b3b8a_d3014cc9","updated":"2025-07-04 13:48:33.000000000","message":"Soft -1. I believe this spec should be made lighter, with implementation details moved to follow-up specs.\n\nFrom the other spec, I’ve invited folks from StorPool to participate and provide their feedback here as well.\n\nLast point: this spec will not be accepted for the F release, as the spec freeze has already passed. However, it’s a good opportunity to keep the momentum going—refine the proposal and start preparing the implementation so we’re ready early in the G cycle.","commit_id":"2c380cf7e9b0a071f3f63ef5087bb5be90a113e9"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"2776da32a35b1ab8b5d323d345574f885fc8c5fd","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"2e39ec92_75ec6ce9","in_reply_to":"0bca2b28_a74ede69","updated":"2025-07-04 14:11:00.000000000","message":"+1, if you are lacking time to do it, just let me know I\u0027ll do it.","commit_id":"2c380cf7e9b0a071f3f63ef5087bb5be90a113e9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"58ed68edcc69411caf05768860c49490944e907d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"0bca2b28_a74ede69","in_reply_to":"469b3b8a_d3014cc9","updated":"2025-07-04 14:02:49.000000000","message":"on this point i might push a patch to create the 2026.1 spec directory and then we can start retargeting this and the ohter spec to that and continue to refine them for G","commit_id":"2c380cf7e9b0a071f3f63ef5087bb5be90a113e9"}],"specs/2025.2/approved/dynamic-vm-iothreads.rst":[{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e7fbc14ea31287a3f9bc5a7462bd600939f37793","unresolved":true,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Include the URL of your launchpad blueprint:"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"https://blueprints.launchpad.net/nova/+spec/dynamic-vm-iothreads"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"A mechanism to dynamically adjust the number of IO threads for a VM"},{"line_number":16,"context_line":"based on static allocation and disks."}],"source_content_type":"text/x-rst","patch_set":1,"id":"25c57e3f_4c324e3a","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":64},"updated":"2025-07-03 08:56:19.000000000","message":"This link seems to be a dangling one. I think the BP must be created.","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a6747c5b244b43e7c7c916fbfd41ea83fc80fbd0","unresolved":true,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Include the URL of your launchpad blueprint:"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"https://blueprints.launchpad.net/nova/+spec/dynamic-vm-iothreads"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"A mechanism to dynamically adjust the number of IO threads for a VM"},{"line_number":16,"context_line":"based on static allocation and disks."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7e3fe87d_d9cd89b8","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":64},"in_reply_to":"25c57e3f_4c324e3a","updated":"2025-07-03 09:42:43.000000000","message":"Yup, we need to have a specific BP","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"58434521c14ee76a5a396c1db388e054e3845a44","unresolved":true,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Include the URL of your launchpad blueprint:"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"https://blueprints.launchpad.net/nova/+spec/dynamic-vm-iothreads"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"A mechanism to dynamically adjust the number of IO threads for a VM"},{"line_number":16,"context_line":"based on static allocation and disks."}],"source_content_type":"text/x-rst","patch_set":1,"id":"816fd7b5_3aaf0e47","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":64},"in_reply_to":"7e3fe87d_d9cd89b8","updated":"2025-07-03 11:02:54.000000000","message":"ya i did not create it intentioally until we were happy to do the split.","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e7fbc14ea31287a3f9bc5a7462bd600939f37793","unresolved":true,"context_lines":[{"line_number":27,"context_line":"2. The emulator thread is not available for other work."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"The first problem is obvious. At some threshold, defined by the host cpus single "},{"line_number":30,"context_line":"threaded performance, a bottleneck of IOPS will be reached when the the emulator"},{"line_number":31,"context_line":"thread is saturated."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"The second problem is that the emulator thread is not available for other work."}],"source_content_type":"text/x-rst","patch_set":1,"id":"93f8cd22_4809a6af","line":30,"range":{"start_line":30,"start_character":67,"end_line":30,"end_character":72},"updated":"2025-07-03 08:56:19.000000000","message":"typo, remove one \"the\"","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f8b6ffef6b08356599dee1f05b90d1280ed22094","unresolved":false,"context_lines":[{"line_number":27,"context_line":"2. The emulator thread is not available for other work."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"The first problem is obvious. At some threshold, defined by the host cpus single "},{"line_number":30,"context_line":"threaded performance, a bottleneck of IOPS will be reached when the the emulator"},{"line_number":31,"context_line":"thread is saturated."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"The second problem is that the emulator thread is not available for other work."}],"source_content_type":"text/x-rst","patch_set":1,"id":"95b69de3_f73f4f6c","line":30,"range":{"start_line":30,"start_character":67,"end_line":30,"end_character":72},"in_reply_to":"93f8cd22_4809a6af","updated":"2025-07-03 12:21:03.000000000","message":"Done","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e7fbc14ea31287a3f9bc5a7462bd600939f37793","unresolved":true,"context_lines":[{"line_number":61,"context_line":"Two new flavor extra specs will be introduced:"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"- `hw:iothreads\u003d\u003cnum\u003e`"},{"line_number":64,"context_line":"- `hw:iothreads_per_disk\u003d\u003cnum\u003e`"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"The first will be used to set the default number of IO threads for a VM."},{"line_number":67,"context_line":"The second will be used to set the number of additional IO threads per disk for a VM."}],"source_content_type":"text/x-rst","patch_set":1,"id":"0f151836_fc4bc7ea","line":64,"range":{"start_line":64,"start_character":2,"end_line":64,"end_character":31},"updated":"2025-07-03 08:56:19.000000000","message":"I think there is a relation between the both.\niothreads_per_disk \u003e iothreads sounds not possible.\nHe could be wrong, but if not we need to check it.","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"58434521c14ee76a5a396c1db388e054e3845a44","unresolved":true,"context_lines":[{"line_number":61,"context_line":"Two new flavor extra specs will be introduced:"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"- `hw:iothreads\u003d\u003cnum\u003e`"},{"line_number":64,"context_line":"- `hw:iothreads_per_disk\u003d\u003cnum\u003e`"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"The first will be used to set the default number of IO threads for a VM."},{"line_number":67,"context_line":"The second will be used to set the number of additional IO threads per disk for a VM."}],"source_content_type":"text/x-rst","patch_set":1,"id":"98d9231b_6e8cfee6","line":64,"range":{"start_line":64,"start_character":2,"end_line":64,"end_character":31},"in_reply_to":"0f151836_fc4bc7ea","updated":"2025-07-03 11:02:54.000000000","message":"you can\n\ni will add examples to make this clear.\n\nmy proposall is that \n\n\u003ciothreads\u003e4\u003c/iothreads\u003e\n\nin the xml will be \n\nhw:iothreads + (number of disks * `hw:iothreads_per_disk`)\n\nin a future release we may then start explcity mapping\n\n`hw:iothreads_per_disk` iothread to each disk but that need libvirt 10 and i dont want to do that this cycle.\n\nin my current propsoal `hw:iothreads_per_disk` is jsut how many addtional iotread to add for each disk an instance has. but we can evolve it to be more then that over time.","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9eab23c605c72bae8cd57bfb297992baef6d727b","unresolved":false,"context_lines":[{"line_number":61,"context_line":"Two new flavor extra specs will be introduced:"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"- `hw:iothreads\u003d\u003cnum\u003e`"},{"line_number":64,"context_line":"- `hw:iothreads_per_disk\u003d\u003cnum\u003e`"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"The first will be used to set the default number of IO threads for a VM."},{"line_number":67,"context_line":"The second will be used to set the number of additional IO threads per disk for a VM."}],"source_content_type":"text/x-rst","patch_set":1,"id":"c1ba634b_0ae55f0b","line":64,"range":{"start_line":64,"start_character":2,"end_line":64,"end_character":31},"in_reply_to":"98d9231b_6e8cfee6","updated":"2025-07-03 14:33:49.000000000","message":"Acknowledged","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a6747c5b244b43e7c7c916fbfd41ea83fc80fbd0","unresolved":true,"context_lines":[{"line_number":64,"context_line":"- `hw:iothreads_per_disk\u003d\u003cnum\u003e`"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"The first will be used to set the default number of IO threads for a VM."},{"line_number":67,"context_line":"The second will be used to set the number of additional IO threads per disk for a VM."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Initially only the libivrt driver will support this feature."},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"c0db3aad_9199e6e7","line":67,"updated":"2025-07-03 09:42:43.000000000","message":"Well, given you can add new disks by Cinder, the number would need to be changed everytime some user would add another device, right?\n\nI\u0027m not really sure we need to do that *now*, maybe the first pass would be just about using iothreads.","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5c2a66eeadfb6f0b953d59af2d1ba445f021f5a9","unresolved":true,"context_lines":[{"line_number":64,"context_line":"- `hw:iothreads_per_disk\u003d\u003cnum\u003e`"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"The first will be used to set the default number of IO threads for a VM."},{"line_number":67,"context_line":"The second will be used to set the number of additional IO threads per disk for a VM."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Initially only the libivrt driver will support this feature."},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"af22876a_d7a843db","line":67,"in_reply_to":"1fc98298_56d9c351","updated":"2025-07-03 13:58:19.000000000","message":"to give use time to dicusss this properly ill move the per disk dicssion to the alternitivs section and we can revisti that next cycle in another spec. that will be the main change between v4 and v5","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9eab23c605c72bae8cd57bfb297992baef6d727b","unresolved":false,"context_lines":[{"line_number":64,"context_line":"- `hw:iothreads_per_disk\u003d\u003cnum\u003e`"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"The first will be used to set the default number of IO threads for a VM."},{"line_number":67,"context_line":"The second will be used to set the number of additional IO threads per disk for a VM."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Initially only the libivrt driver will support this feature."},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"75de8f60_20fe0400","line":67,"in_reply_to":"af22876a_d7a843db","updated":"2025-07-03 14:33:49.000000000","message":"Done","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"623adee054e29a83f800c47394579001145e0121","unresolved":true,"context_lines":[{"line_number":64,"context_line":"- `hw:iothreads_per_disk\u003d\u003cnum\u003e`"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"The first will be used to set the default number of IO threads for a VM."},{"line_number":67,"context_line":"The second will be used to set the number of additional IO threads per disk for a VM."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Initially only the libivrt driver will support this feature."},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"1fc98298_56d9c351","line":67,"in_reply_to":"c0bf2ca2_e674b58b","updated":"2025-07-03 13:03:22.000000000","message":"ok diging into this a littel more \n\nvirish iothreadset can adjust the size fo iothreadpools likve but it cant actully add new iothread live.\n\nvirsh iothreadadd - can add an IOThread to the guest domain\nbut the disk wont nessiarly be automaticly remapped.\n\ni hand basiclly hoped that\n\nif we had hw:iothreads_per_disk\u003d1 we could bump the iothread by one when attachign a volume and that the voluem woudl automaticlly be mapped to that by libvirt.\n\nthat might work but we woudl have to do some testing\n\ni see two paths forward.\n\ndocument that iothread are only modifed on instance boot.\nso it would only be updated on the next hard reboot ectra\nor move hw:iothreads_per_disk to the alternitive section for this cycle and come back to it next cycle when we have more time to test and design this aspect.\n\nwhat do folds think.\n\ni have confirmed i can add a iothread with virsh iothreadadd to a live domain\n```\nsean@icewind:~$ VISUAL\u003dnano EDITOR\u003dnano virsh iothreadinfo devstack-ui\nNo IOThreads found for the domain\nsean@icewind:~$ VISUAL\u003dnano EDITOR\u003dnano virsh iothreadadd --id 1 devstack-ui\n\nsean@icewind:~$ VISUAL\u003dnano EDITOR\u003dnano virsh iothreadinfo devstack-ui\n IOThread ID   CPU Affinity\n-----------------------------\n 1             0-27\n```\nand i can remove it again \n```\nsean@icewind:~$ VISUAL\u003dnano EDITOR\u003dnano virsh iothreaddel --id 1 devstack-ui\n\nsean@icewind:~$ VISUAL\u003dnano EDITOR\u003dnano virsh iothreadinfo devstack-ui\nNo IOThreads found for the domain\n```\nbut it wont be as simpel as just updatign the iothread number like i had hoped\nwe woudl have too treat this liek device attach/detach and make expict calls to add the iothread and remove them.\n\nso if we do this live i think that only make sense if we also map the disks to the iothreads and i want to defer that to next cycle for time/scope reaosns.\n\nso shall we only update the iothrads on boot or defer the per disk part to next cyle and simplify this spec to only static iothread via `hw:iothreads`.\n\nif we take the latter approach I\u0027ll update the name of the spec to reflect that.","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"66970beb79d7d8f1e56e812bfcc32e0d1bd3fb19","unresolved":true,"context_lines":[{"line_number":64,"context_line":"- `hw:iothreads_per_disk\u003d\u003cnum\u003e`"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"The first will be used to set the default number of IO threads for a VM."},{"line_number":67,"context_line":"The second will be used to set the number of additional IO threads per disk for a VM."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Initially only the libivrt driver will support this feature."},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"c0bf2ca2_e674b58b","line":67,"in_reply_to":"c0db3aad_9199e6e7","updated":"2025-07-03 11:31:46.000000000","message":"we coudl defer this but yes.\n\ni belive you can change the number of iothreads at runtime but i have not had time to poc this yet to confirm\n\nif wyou want to defer this to next cycle im not agaisnt it but i think we can trivially modify the iothread count at runtime.\n\ni know qemu can do this based on load using a iothread pool concpet that can grow and shirk dynmaiclly and you can dynmaicly alter cpu pinning at runtime too\nso i think we can do this without any need to restart.\n\ni intentally propsed the breakup of the feature into mutiple step later so that this woudl be after the basic static io thread supprot.\nif we run out of time this cycles this can just continue to next cyle.","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e7fbc14ea31287a3f9bc5a7462bd600939f37793","unresolved":true,"context_lines":[{"line_number":77,"context_line":"This is a reasonable default and should be used unless the operator has a"},{"line_number":78,"context_line":"specific reason to override it."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"The default value of `hw:iothreads` will be 1 if unset so that all vms will."},{"line_number":81,"context_line":"always have at least 1 IO thread unless the operator has explicitly disabled it."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"The default value of `hw:iothreads_per_disk` will be 0 if unset meaning that io"}],"source_content_type":"text/x-rst","patch_set":1,"id":"286733d3_457eeb34","line":80,"range":{"start_line":80,"start_character":75,"end_line":80,"end_character":76},"updated":"2025-07-03 08:56:19.000000000","message":"small typo \u0027.\u0027","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f8b6ffef6b08356599dee1f05b90d1280ed22094","unresolved":false,"context_lines":[{"line_number":77,"context_line":"This is a reasonable default and should be used unless the operator has a"},{"line_number":78,"context_line":"specific reason to override it."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"The default value of `hw:iothreads` will be 1 if unset so that all vms will."},{"line_number":81,"context_line":"always have at least 1 IO thread unless the operator has explicitly disabled it."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"The default value of `hw:iothreads_per_disk` will be 0 if unset meaning that io"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5faa827c_41262fa8","line":80,"range":{"start_line":80,"start_character":75,"end_line":80,"end_character":76},"in_reply_to":"286733d3_457eeb34","updated":"2025-07-03 12:21:03.000000000","message":"Done","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a6747c5b244b43e7c7c916fbfd41ea83fc80fbd0","unresolved":true,"context_lines":[{"line_number":78,"context_line":"specific reason to override it."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"The default value of `hw:iothreads` will be 1 if unset so that all vms will."},{"line_number":81,"context_line":"always have at least 1 IO thread unless the operator has explicitly disabled it."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"The default value of `hw:iothreads_per_disk` will be 0 if unset meaning that io"},{"line_number":84,"context_line":"performance will not scale with the number of disks."}],"source_content_type":"text/x-rst","patch_set":1,"id":"076558f7_19cf2e72","line":81,"updated":"2025-07-03 09:42:43.000000000","message":"This would mean that if I\u0027m restarting an instance, the XML would be using one iothread for it ?","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"66970beb79d7d8f1e56e812bfcc32e0d1bd3fb19","unresolved":true,"context_lines":[{"line_number":78,"context_line":"specific reason to override it."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"The default value of `hw:iothreads` will be 1 if unset so that all vms will."},{"line_number":81,"context_line":"always have at least 1 IO thread unless the operator has explicitly disabled it."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"The default value of `hw:iothreads_per_disk` will be 0 if unset meaning that io"},{"line_number":84,"context_line":"performance will not scale with the number of disks."}],"source_content_type":"text/x-rst","patch_set":1,"id":"4319a83a_0462cc30","line":81,"in_reply_to":"076558f7_19cf2e72","updated":"2025-07-03 11:31:46.000000000","message":"yes\n\nexisting vms will gain an io thread when there xml is next regenerated\n\n\nspecificlly the xml will contain \u003ciothreads\u003e1\u003c/iothreads\u003e\nwith no other changes to the xml\n\nby default the emulator threads and io thread float over the same cores as the vm vcpu so we dont need to specify anything else to get the performace uplifit for haveing 1 iothread.","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a6747c5b244b43e7c7c916fbfd41ea83fc80fbd0","unresolved":true,"context_lines":[{"line_number":81,"context_line":"always have at least 1 IO thread unless the operator has explicitly disabled it."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"The default value of `hw:iothreads_per_disk` will be 0 if unset meaning that io"},{"line_number":84,"context_line":"performance will not scale with the number of disks."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"While that may seam counter intuitive it is important to note iothreads are not"},{"line_number":87,"context_line":"free and directly impact the qemu overhead. While it is reasonable to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9c7296ed_f13359d4","line":84,"updated":"2025-07-03 09:42:43.000000000","message":"this is why I think we shoud discuss about that in another spec.","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5c2a66eeadfb6f0b953d59af2d1ba445f021f5a9","unresolved":false,"context_lines":[{"line_number":81,"context_line":"always have at least 1 IO thread unless the operator has explicitly disabled it."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"The default value of `hw:iothreads_per_disk` will be 0 if unset meaning that io"},{"line_number":84,"context_line":"performance will not scale with the number of disks."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"While that may seam counter intuitive it is important to note iothreads are not"},{"line_number":87,"context_line":"free and directly impact the qemu overhead. While it is reasonable to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"968e25d3_9d608dee","line":84,"in_reply_to":"9c7296ed_f13359d4","updated":"2025-07-03 13:58:19.000000000","message":"Acknowledged","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a6747c5b244b43e7c7c916fbfd41ea83fc80fbd0","unresolved":true,"context_lines":[{"line_number":83,"context_line":"The default value of `hw:iothreads_per_disk` will be 0 if unset meaning that io"},{"line_number":84,"context_line":"performance will not scale with the number of disks."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"While that may seam counter intuitive it is important to note iothreads are not"},{"line_number":87,"context_line":"free and directly impact the qemu overhead. While it is reasonable to"},{"line_number":88,"context_line":"introduce a default value of 1 IO thread per vm it is not reasonable to introduce"},{"line_number":89,"context_line":"a default value of 1 IO thread per disk as this may lead to a situation where"},{"line_number":90,"context_line":"a host is heavily oversubscribed if a vm has a large number of disks."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9787bb79_c5407e3b","line":87,"range":{"start_line":86,"start_character":0,"end_line":87,"end_character":44},"updated":"2025-07-03 09:42:43.000000000","message":"again, this is why I\u0027d prefer to just support now iothreads without looking at disks.","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5c2a66eeadfb6f0b953d59af2d1ba445f021f5a9","unresolved":true,"context_lines":[{"line_number":83,"context_line":"The default value of `hw:iothreads_per_disk` will be 0 if unset meaning that io"},{"line_number":84,"context_line":"performance will not scale with the number of disks."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"While that may seam counter intuitive it is important to note iothreads are not"},{"line_number":87,"context_line":"free and directly impact the qemu overhead. While it is reasonable to"},{"line_number":88,"context_line":"introduce a default value of 1 IO thread per vm it is not reasonable to introduce"},{"line_number":89,"context_line":"a default value of 1 IO thread per disk as this may lead to a situation where"},{"line_number":90,"context_line":"a host is heavily oversubscribed if a vm has a large number of disks."}],"source_content_type":"text/x-rst","patch_set":1,"id":"ce9dfbde_3b214766","line":87,"range":{"start_line":86,"start_character":0,"end_line":87,"end_character":44},"in_reply_to":"9787bb79_c5407e3b","updated":"2025-07-03 13:58:19.000000000","message":"ill update it to move the per disk part ot the alterniitve section in v5\n\ni had started to update it for the live updats and wanted to push that as v4 but ill now move it to the alternitivs and we can revist it next cycle.","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9eab23c605c72bae8cd57bfb297992baef6d727b","unresolved":false,"context_lines":[{"line_number":83,"context_line":"The default value of `hw:iothreads_per_disk` will be 0 if unset meaning that io"},{"line_number":84,"context_line":"performance will not scale with the number of disks."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"While that may seam counter intuitive it is important to note iothreads are not"},{"line_number":87,"context_line":"free and directly impact the qemu overhead. While it is reasonable to"},{"line_number":88,"context_line":"introduce a default value of 1 IO thread per vm it is not reasonable to introduce"},{"line_number":89,"context_line":"a default value of 1 IO thread per disk as this may lead to a situation where"},{"line_number":90,"context_line":"a host is heavily oversubscribed if a vm has a large number of disks."}],"source_content_type":"text/x-rst","patch_set":1,"id":"6ef47449_7f4f8528","line":87,"range":{"start_line":86,"start_character":0,"end_line":87,"end_character":44},"in_reply_to":"ce9dfbde_3b214766","updated":"2025-07-03 14:33:49.000000000","message":"Done","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e7fbc14ea31287a3f9bc5a7462bd600939f37793","unresolved":true,"context_lines":[{"line_number":93,"context_line":"`hw:iothreads_per_disk` to a non-zero value to enable io thread scaling."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"For similar reasons iothreads will not be configurable via image properties."},{"line_number":96,"context_line":"As iothread consome host cpu and ram they should only be configurable via"},{"line_number":97,"context_line":"flavor extra specs."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Multiqueue and IO Threads"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1d56b5c4_fcaf933a","line":96,"range":{"start_line":96,"start_character":12,"end_line":96,"end_character":19},"updated":"2025-07-03 08:56:19.000000000","message":"typo consume","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f8b6ffef6b08356599dee1f05b90d1280ed22094","unresolved":false,"context_lines":[{"line_number":93,"context_line":"`hw:iothreads_per_disk` to a non-zero value to enable io thread scaling."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"For similar reasons iothreads will not be configurable via image properties."},{"line_number":96,"context_line":"As iothread consome host cpu and ram they should only be configurable via"},{"line_number":97,"context_line":"flavor extra specs."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Multiqueue and IO Threads"}],"source_content_type":"text/x-rst","patch_set":1,"id":"c28c3685_0347b4bb","line":96,"range":{"start_line":96,"start_character":12,"end_line":96,"end_character":19},"in_reply_to":"1d56b5c4_fcaf933a","updated":"2025-07-03 12:21:03.000000000","message":"Done","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a6747c5b244b43e7c7c916fbfd41ea83fc80fbd0","unresolved":true,"context_lines":[{"line_number":104,"context_line":"In recent versions of qemu multiqueue is enabled by default for virtio-scsi"},{"line_number":105,"context_line":"and virtio-blk devices."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"While the number of queues is configurable via the libvirt, this configurablity"},{"line_number":108,"context_line":"is not exposed at this time. This spec will not change that. This may be a"},{"line_number":109,"context_line":"valid performance optimization in the future but it is not a goal of this spec."},{"line_number":110,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"d73f7e5f_91e40167","line":107,"range":{"start_line":107,"start_character":47,"end_line":107,"end_character":50},"updated":"2025-07-03 09:42:43.000000000","message":"remove \"the\"","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e7fbc14ea31287a3f9bc5a7462bd600939f37793","unresolved":true,"context_lines":[{"line_number":104,"context_line":"In recent versions of qemu multiqueue is enabled by default for virtio-scsi"},{"line_number":105,"context_line":"and virtio-blk devices."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"While the number of queues is configurable via the libvirt, this configurablity"},{"line_number":108,"context_line":"is not exposed at this time. This spec will not change that. This may be a"},{"line_number":109,"context_line":"valid performance optimization in the future but it is not a goal of this spec."},{"line_number":110,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fd41e0f_d68b720c","line":107,"range":{"start_line":107,"start_character":65,"end_line":107,"end_character":79},"updated":"2025-07-03 08:56:19.000000000","message":"typo I think it is \"configurability\"","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f8b6ffef6b08356599dee1f05b90d1280ed22094","unresolved":false,"context_lines":[{"line_number":104,"context_line":"In recent versions of qemu multiqueue is enabled by default for virtio-scsi"},{"line_number":105,"context_line":"and virtio-blk devices."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"While the number of queues is configurable via the libvirt, this configurablity"},{"line_number":108,"context_line":"is not exposed at this time. This spec will not change that. This may be a"},{"line_number":109,"context_line":"valid performance optimization in the future but it is not a goal of this spec."},{"line_number":110,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"fc20b01f_e4b9738d","line":107,"range":{"start_line":107,"start_character":65,"end_line":107,"end_character":79},"in_reply_to":"9fd41e0f_d68b720c","updated":"2025-07-03 12:21:03.000000000","message":"Done","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f8b6ffef6b08356599dee1f05b90d1280ed22094","unresolved":false,"context_lines":[{"line_number":104,"context_line":"In recent versions of qemu multiqueue is enabled by default for virtio-scsi"},{"line_number":105,"context_line":"and virtio-blk devices."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"While the number of queues is configurable via the libvirt, this configurablity"},{"line_number":108,"context_line":"is not exposed at this time. This spec will not change that. This may be a"},{"line_number":109,"context_line":"valid performance optimization in the future but it is not a goal of this spec."},{"line_number":110,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7cc5b5b9_c8884a37","line":107,"range":{"start_line":107,"start_character":47,"end_line":107,"end_character":50},"in_reply_to":"d73f7e5f_91e40167","updated":"2025-07-03 12:21:03.000000000","message":"Done","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e7fbc14ea31287a3f9bc5a7462bd600939f37793","unresolved":true,"context_lines":[{"line_number":117,"context_line":"------------------------"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"IO threads are a feature of qemu and as such are not available on all platforms."},{"line_number":120,"context_line":"libvirt has supproted configuring io threads for a very long time and as such"},{"line_number":121,"context_line":"it is fully supported in our minimum supported version of qemu and libvirt."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"As a result we do not need to check if libvirt supports io threads however"}],"source_content_type":"text/x-rst","patch_set":1,"id":"606a8506_85dfbaf7","line":120,"range":{"start_line":120,"start_character":12,"end_line":120,"end_character":21},"updated":"2025-07-03 08:56:19.000000000","message":"typo supported","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f8b6ffef6b08356599dee1f05b90d1280ed22094","unresolved":false,"context_lines":[{"line_number":117,"context_line":"------------------------"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"IO threads are a feature of qemu and as such are not available on all platforms."},{"line_number":120,"context_line":"libvirt has supproted configuring io threads for a very long time and as such"},{"line_number":121,"context_line":"it is fully supported in our minimum supported version of qemu and libvirt."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"As a result we do not need to check if libvirt supports io threads however"}],"source_content_type":"text/x-rst","patch_set":1,"id":"00c82d7c_36b2ca36","line":120,"range":{"start_line":120,"start_character":12,"end_line":120,"end_character":21},"in_reply_to":"606a8506_85dfbaf7","updated":"2025-07-03 12:21:03.000000000","message":"Done","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a6747c5b244b43e7c7c916fbfd41ea83fc80fbd0","unresolved":true,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"IO threads are a feature of qemu and as such are not available on all platforms."},{"line_number":120,"context_line":"libvirt has supproted configuring io threads for a very long time and as such"},{"line_number":121,"context_line":"it is fully supported in our minimum supported version of qemu and libvirt."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"As a result we do not need to check if libvirt supports io threads however"},{"line_number":124,"context_line":"we do need to consider if the nova-compute service supports io threads."}],"source_content_type":"text/x-rst","patch_set":1,"id":"58fe8252_0b1e2d67","line":121,"updated":"2025-07-03 09:42:43.000000000","message":"indeed, iothreads are supported from libvirt-1.2.8 https://libvirt.org/formatdomain.html#iothreads-allocation\n\nIMHO you should be telling that.","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5c2a66eeadfb6f0b953d59af2d1ba445f021f5a9","unresolved":true,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"IO threads are a feature of qemu and as such are not available on all platforms."},{"line_number":120,"context_line":"libvirt has supproted configuring io threads for a very long time and as such"},{"line_number":121,"context_line":"it is fully supported in our minimum supported version of qemu and libvirt."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"As a result we do not need to check if libvirt supports io threads however"},{"line_number":124,"context_line":"we do need to consider if the nova-compute service supports io threads."}],"source_content_type":"text/x-rst","patch_set":1,"id":"570436f9_e72308d1","line":121,"in_reply_to":"2f5fc210_04136329","updated":"2025-07-03 13:58:19.000000000","message":"forgot this ill do it in v5","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9eab23c605c72bae8cd57bfb297992baef6d727b","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"IO threads are a feature of qemu and as such are not available on all platforms."},{"line_number":120,"context_line":"libvirt has supproted configuring io threads for a very long time and as such"},{"line_number":121,"context_line":"it is fully supported in our minimum supported version of qemu and libvirt."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"As a result we do not need to check if libvirt supports io threads however"},{"line_number":124,"context_line":"we do need to consider if the nova-compute service supports io threads."}],"source_content_type":"text/x-rst","patch_set":1,"id":"002edc54_cdb530e7","line":121,"in_reply_to":"570436f9_e72308d1","updated":"2025-07-03 14:33:49.000000000","message":"Done","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f8b6ffef6b08356599dee1f05b90d1280ed22094","unresolved":true,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"IO threads are a feature of qemu and as such are not available on all platforms."},{"line_number":120,"context_line":"libvirt has supproted configuring io threads for a very long time and as such"},{"line_number":121,"context_line":"it is fully supported in our minimum supported version of qemu and libvirt."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"As a result we do not need to check if libvirt supports io threads however"},{"line_number":124,"context_line":"we do need to consider if the nova-compute service supports io threads."}],"source_content_type":"text/x-rst","patch_set":1,"id":"2f5fc210_04136329","line":121,"in_reply_to":"58fe8252_0b1e2d67","updated":"2025-07-03 12:21:03.000000000","message":"sure i can add that in v4","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e7fbc14ea31287a3f9bc5a7462bd600939f37793","unresolved":true,"context_lines":[{"line_number":124,"context_line":"we do need to consider if the nova-compute service supports io threads."},{"line_number":125,"context_line":"To facilitate this we will introduce a new compute capability trait"},{"line_number":126,"context_line":"`COMPUTE_IO_THREADS`. This will be set to false for all virt drivers by default"},{"line_number":127,"context_line":"except for the libvirt driver where it will be condtionally true if the"},{"line_number":128,"context_line":"virt_type is qemu or kvm."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"A new _translate_iothreads method will be added to the scheduler utils"}],"source_content_type":"text/x-rst","patch_set":1,"id":"49ae7c4b_38f679dd","line":127,"range":{"start_line":127,"start_character":47,"end_line":127,"end_character":59},"updated":"2025-07-03 08:56:19.000000000","message":"typo \"conditionally\"","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f8b6ffef6b08356599dee1f05b90d1280ed22094","unresolved":false,"context_lines":[{"line_number":124,"context_line":"we do need to consider if the nova-compute service supports io threads."},{"line_number":125,"context_line":"To facilitate this we will introduce a new compute capability trait"},{"line_number":126,"context_line":"`COMPUTE_IO_THREADS`. This will be set to false for all virt drivers by default"},{"line_number":127,"context_line":"except for the libvirt driver where it will be condtionally true if the"},{"line_number":128,"context_line":"virt_type is qemu or kvm."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"A new _translate_iothreads method will be added to the scheduler utils"}],"source_content_type":"text/x-rst","patch_set":1,"id":"0df6e6ff_c0b4862b","line":127,"range":{"start_line":127,"start_character":47,"end_line":127,"end_character":59},"in_reply_to":"49ae7c4b_38f679dd","updated":"2025-07-03 12:21:03.000000000","message":"Done","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a6747c5b244b43e7c7c916fbfd41ea83fc80fbd0","unresolved":true,"context_lines":[{"line_number":125,"context_line":"To facilitate this we will introduce a new compute capability trait"},{"line_number":126,"context_line":"`COMPUTE_IO_THREADS`. This will be set to false for all virt drivers by default"},{"line_number":127,"context_line":"except for the libvirt driver where it will be condtionally true if the"},{"line_number":128,"context_line":"virt_type is qemu or kvm."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"A new _translate_iothreads method will be added to the scheduler utils"},{"line_number":131,"context_line":"and called from ResourceRequest.from_request_spec to convert the flavor extra"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9d5193d8_e0c07e12","line":128,"updated":"2025-07-03 09:42:43.000000000","message":"why do we need to check a specific trait, while we could just check the service version ?","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"66970beb79d7d8f1e56e812bfcc32e0d1bd3fb19","unresolved":true,"context_lines":[{"line_number":125,"context_line":"To facilitate this we will introduce a new compute capability trait"},{"line_number":126,"context_line":"`COMPUTE_IO_THREADS`. This will be set to false for all virt drivers by default"},{"line_number":127,"context_line":"except for the libvirt driver where it will be condtionally true if the"},{"line_number":128,"context_line":"virt_type is qemu or kvm."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"A new _translate_iothreads method will be added to the scheduler utils"},{"line_number":131,"context_line":"and called from ResourceRequest.from_request_spec to convert the flavor extra"}],"source_content_type":"text/x-rst","patch_set":1,"id":"f884fb00_1613298b","line":128,"in_reply_to":"9d5193d8_e0c07e12","updated":"2025-07-03 11:31:46.000000000","message":"we can check the comptue service version but that mean only supporting this on a fully upgraded cloud.\n\ni dont really want the added complexity of per compute node chckes in the live migration code path for live migration.\n\nit also has the added complication for initall spwaw if its it not a min compute serverice check in the api becuase we may not shdule to a host that supprot it and have to try the alternate which may not supprot it either.\n\nso i woudl perfer a trait but im open to a min compute service check and saying its only supported if the cloud is fully upgraded.","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a6747c5b244b43e7c7c916fbfd41ea83fc80fbd0","unresolved":false,"context_lines":[{"line_number":137,"context_line":"IO threads will follow similar rules to `hw:emulator_threads_policy\u003dshared`"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"If a host has compute/cpu_shared_set defined then io threads will"},{"line_number":140,"context_line":"float over the numa local subset of cores."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"if it is not defined then io threads will float over the same cores as the"},{"line_number":143,"context_line":"vms VCPUs"}],"source_content_type":"text/x-rst","patch_set":1,"id":"e1f87122_2198a18c","line":140,"updated":"2025-07-03 09:42:43.000000000","message":"++","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a6747c5b244b43e7c7c916fbfd41ea83fc80fbd0","unresolved":false,"context_lines":[{"line_number":140,"context_line":"float over the numa local subset of cores."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"if it is not defined then io threads will float over the same cores as the"},{"line_number":143,"context_line":"vms VCPUs"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"This will not be configurable via flavor extra specs."},{"line_number":146,"context_line":"That is the only difference from the emulator threads policy."}],"source_content_type":"text/x-rst","patch_set":1,"id":"86872a77_3fb576b6","line":143,"updated":"2025-07-03 09:42:43.000000000","message":"++","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e7fbc14ea31287a3f9bc5a7462bd600939f37793","unresolved":true,"context_lines":[{"line_number":154,"context_line":"To deliver this feature in an incremental manner it will be broken up into"},{"line_number":155,"context_line":"aproximatly 4 parts."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"initally only static configuration will be supported at boot time."},{"line_number":158,"context_line":"i.e. all vms will have 1 iothread unless the operator has explicitly set it"},{"line_number":159,"context_line":"via the `hw:iothreads` flavor extra spec."},{"line_number":160,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"16a2885c_ce72157b","line":157,"range":{"start_line":157,"start_character":0,"end_line":157,"end_character":8},"updated":"2025-07-03 08:56:19.000000000","message":"typo: Initially","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f8b6ffef6b08356599dee1f05b90d1280ed22094","unresolved":false,"context_lines":[{"line_number":154,"context_line":"To deliver this feature in an incremental manner it will be broken up into"},{"line_number":155,"context_line":"aproximatly 4 parts."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"initally only static configuration will be supported at boot time."},{"line_number":158,"context_line":"i.e. all vms will have 1 iothread unless the operator has explicitly set it"},{"line_number":159,"context_line":"via the `hw:iothreads` flavor extra spec."},{"line_number":160,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"004a9d19_77936bae","line":157,"range":{"start_line":157,"start_character":0,"end_line":157,"end_character":8},"in_reply_to":"16a2885c_ce72157b","updated":"2025-07-03 12:21:03.000000000","message":"Done","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a6747c5b244b43e7c7c916fbfd41ea83fc80fbd0","unresolved":true,"context_lines":[{"line_number":159,"context_line":"via the `hw:iothreads` flavor extra spec."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"next we will add support for configuring the number of IO threads at runtime"},{"line_number":162,"context_line":"when a cinder volume is attached or detached."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"After that we will add supprot for cpu affinity for io threads. This will reuse"},{"line_number":165,"context_line":"the existing dst_cpu_shared_set_info filed in the LibvirtLiveMigrateData object"}],"source_content_type":"text/x-rst","patch_set":1,"id":"2722bffb_19a14969","line":162,"updated":"2025-07-03 09:42:43.000000000","message":"would this mean that we would need to restart the guest (in order to use the right IO threads number) once we attach the Cinder device or would we just wait for the restart ?\nHow would the user know whether their instance has the right number of IO threads ?","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"58434521c14ee76a5a396c1db388e054e3845a44","unresolved":true,"context_lines":[{"line_number":159,"context_line":"via the `hw:iothreads` flavor extra spec."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"next we will add support for configuring the number of IO threads at runtime"},{"line_number":162,"context_line":"when a cinder volume is attached or detached."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"After that we will add supprot for cpu affinity for io threads. This will reuse"},{"line_number":165,"context_line":"the existing dst_cpu_shared_set_info filed in the LibvirtLiveMigrateData object"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ef118a95_52fae241","line":162,"in_reply_to":"2722bffb_19a14969","updated":"2025-07-03 11:02:54.000000000","message":"i dont belive we would.\nagain i am not intended to support mapping a specific disk to a specific iothread\n\nqemu can do that internally.\n\nwe coudl do that next cycle but i want to put that out of scope for this cycle≥\n\ni will add some flavor and xml examples ot demonstrate how this woudl work in the next revision","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5c2a66eeadfb6f0b953d59af2d1ba445f021f5a9","unresolved":false,"context_lines":[{"line_number":159,"context_line":"via the `hw:iothreads` flavor extra spec."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"next we will add support for configuring the number of IO threads at runtime"},{"line_number":162,"context_line":"when a cinder volume is attached or detached."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"After that we will add supprot for cpu affinity for io threads. This will reuse"},{"line_number":165,"context_line":"the existing dst_cpu_shared_set_info filed in the LibvirtLiveMigrateData object"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5e87a911_3b20a1a5","line":162,"in_reply_to":"ef118a95_52fae241","updated":"2025-07-03 13:58:19.000000000","message":"Acknowledged","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e7fbc14ea31287a3f9bc5a7462bd600939f37793","unresolved":true,"context_lines":[{"line_number":161,"context_line":"next we will add support for configuring the number of IO threads at runtime"},{"line_number":162,"context_line":"when a cinder volume is attached or detached."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"After that we will add supprot for cpu affinity for io threads. This will reuse"},{"line_number":165,"context_line":"the existing dst_cpu_shared_set_info filed in the LibvirtLiveMigrateData object"},{"line_number":166,"context_line":"to support live migration for non numa guest and the existing emulator_pins field"},{"line_number":167,"context_line":"in the LibvirtLiveMigrateNUMAInfo object will be used to support live migration"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9e95fe16_4c0c7d02","line":164,"range":{"start_line":164,"start_character":23,"end_line":164,"end_character":30},"updated":"2025-07-03 08:56:19.000000000","message":"typo: support","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f8b6ffef6b08356599dee1f05b90d1280ed22094","unresolved":false,"context_lines":[{"line_number":161,"context_line":"next we will add support for configuring the number of IO threads at runtime"},{"line_number":162,"context_line":"when a cinder volume is attached or detached."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"After that we will add supprot for cpu affinity for io threads. This will reuse"},{"line_number":165,"context_line":"the existing dst_cpu_shared_set_info filed in the LibvirtLiveMigrateData object"},{"line_number":166,"context_line":"to support live migration for non numa guest and the existing emulator_pins field"},{"line_number":167,"context_line":"in the LibvirtLiveMigrateNUMAInfo object will be used to support live migration"}],"source_content_type":"text/x-rst","patch_set":1,"id":"88abadf4_5b133ffb","line":164,"range":{"start_line":164,"start_character":23,"end_line":164,"end_character":30},"in_reply_to":"9e95fe16_4c0c7d02","updated":"2025-07-03 12:21:03.000000000","message":"Done","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e7fbc14ea31287a3f9bc5a7462bd600939f37793","unresolved":true,"context_lines":[{"line_number":162,"context_line":"when a cinder volume is attached or detached."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"After that we will add supprot for cpu affinity for io threads. This will reuse"},{"line_number":165,"context_line":"the existing dst_cpu_shared_set_info filed in the LibvirtLiveMigrateData object"},{"line_number":166,"context_line":"to support live migration for non numa guest and the existing emulator_pins field"},{"line_number":167,"context_line":"in the LibvirtLiveMigrateNUMAInfo object will be used to support live migration"},{"line_number":168,"context_line":"for numa guests."}],"source_content_type":"text/x-rst","patch_set":1,"id":"86b7660a_0d5d54dd","line":165,"range":{"start_line":165,"start_character":37,"end_line":165,"end_character":42},"updated":"2025-07-03 08:56:19.000000000","message":"typo: field","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f8b6ffef6b08356599dee1f05b90d1280ed22094","unresolved":false,"context_lines":[{"line_number":162,"context_line":"when a cinder volume is attached or detached."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"After that we will add supprot for cpu affinity for io threads. This will reuse"},{"line_number":165,"context_line":"the existing dst_cpu_shared_set_info filed in the LibvirtLiveMigrateData object"},{"line_number":166,"context_line":"to support live migration for non numa guest and the existing emulator_pins field"},{"line_number":167,"context_line":"in the LibvirtLiveMigrateNUMAInfo object will be used to support live migration"},{"line_number":168,"context_line":"for numa guests."}],"source_content_type":"text/x-rst","patch_set":1,"id":"2bcad3e2_9c7602dd","line":165,"range":{"start_line":165,"start_character":37,"end_line":165,"end_character":42},"in_reply_to":"86b7660a_0d5d54dd","updated":"2025-07-03 12:21:03.000000000","message":"Done","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e7fbc14ea31287a3f9bc5a7462bd600939f37793","unresolved":true,"context_lines":[{"line_number":167,"context_line":"in the LibvirtLiveMigrateNUMAInfo object will be used to support live migration"},{"line_number":168,"context_line":"for numa guests."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"finally trait reporting and tranlation to required traits will be added."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"live migration"},{"line_number":173,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3d4ee537_a05968e0","line":170,"range":{"start_line":170,"start_character":0,"end_line":170,"end_character":7},"updated":"2025-07-03 08:56:19.000000000","message":"typo: Finally","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a6747c5b244b43e7c7c916fbfd41ea83fc80fbd0","unresolved":true,"context_lines":[{"line_number":167,"context_line":"in the LibvirtLiveMigrateNUMAInfo object will be used to support live migration"},{"line_number":168,"context_line":"for numa guests."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"finally trait reporting and tranlation to required traits will be added."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"live migration"},{"line_number":173,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bc444f55_b6507803","line":170,"range":{"start_line":170,"start_character":0,"end_line":170,"end_character":7},"in_reply_to":"3d4ee537_a05968e0","updated":"2025-07-03 09:42:43.000000000","message":"again, I\u0027m not convinced we need to yet again add traits.\nAs a reminder, our flavor extraspecs are not mandatory, so I think we should discuss whether we need to schedule or not.","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"66970beb79d7d8f1e56e812bfcc32e0d1bd3fb19","unresolved":true,"context_lines":[{"line_number":167,"context_line":"in the LibvirtLiveMigrateNUMAInfo object will be used to support live migration"},{"line_number":168,"context_line":"for numa guests."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"finally trait reporting and tranlation to required traits will be added."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"live migration"},{"line_number":173,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"2bf9031b_4365e356","line":170,"range":{"start_line":170,"start_character":0,"end_line":170,"end_character":7},"in_reply_to":"bc444f55_b6507803","updated":"2025-07-03 11:31:46.000000000","message":"for me this make the corret schdulign approch simpler but if there is a stong prefence for a min compute version checck i can adotp that approch instead.","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e7fbc14ea31287a3f9bc5a7462bd600939f37793","unresolved":true,"context_lines":[{"line_number":172,"context_line":"live migration"},{"line_number":173,"context_line":"--------------"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"Live migration is actually both simple and subtlely complex."},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"Simple because the number of io threads does not change during live migration."},{"line_number":178,"context_line":"that means without any additional work live migration will work as expected"}],"source_content_type":"text/x-rst","patch_set":1,"id":"05cdbaec_e9b11e85","line":175,"range":{"start_line":175,"start_character":43,"end_line":175,"end_character":51},"updated":"2025-07-03 08:56:19.000000000","message":"I think the word here is \"subtly\", but I\u0027m not native so I have a doubt.","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f8b6ffef6b08356599dee1f05b90d1280ed22094","unresolved":true,"context_lines":[{"line_number":172,"context_line":"live migration"},{"line_number":173,"context_line":"--------------"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"Live migration is actually both simple and subtlely complex."},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"Simple because the number of io threads does not change during live migration."},{"line_number":178,"context_line":"that means without any additional work live migration will work as expected"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba690372_c0b0b686","line":175,"range":{"start_line":175,"start_character":43,"end_line":175,"end_character":51},"in_reply_to":"05cdbaec_e9b11e85","updated":"2025-07-03 12:21:03.000000000","message":"oh ill change this in the next pass this is an alternitive older(archic) spelling of the same word, i shoudl use the us spelling which is `subtly`not `subtlely`","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5c2a66eeadfb6f0b953d59af2d1ba445f021f5a9","unresolved":false,"context_lines":[{"line_number":172,"context_line":"live migration"},{"line_number":173,"context_line":"--------------"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"Live migration is actually both simple and subtlely complex."},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"Simple because the number of io threads does not change during live migration."},{"line_number":178,"context_line":"that means without any additional work live migration will work as expected"}],"source_content_type":"text/x-rst","patch_set":1,"id":"58000ac7_176b4847","line":175,"range":{"start_line":175,"start_character":43,"end_line":175,"end_character":51},"in_reply_to":"ba690372_c0b0b686","updated":"2025-07-03 13:58:19.000000000","message":"Done","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e7fbc14ea31287a3f9bc5a7462bd600939f37793","unresolved":true,"context_lines":[{"line_number":190,"context_line":""},{"line_number":191,"context_line":"The libvirt domain xml will need to be updated to support"},{"line_number":192,"context_line":"both iothreads and iothreads cpu affinity."},{"line_number":193,"context_line":"io thread are confiugred by the iothreads element at the top level"},{"line_number":194,"context_line":"of the domain xml."},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"```"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bcebcd0d_f88bd9b4","line":193,"range":{"start_line":193,"start_character":14,"end_line":193,"end_character":24},"updated":"2025-07-03 08:56:19.000000000","message":"typo \"configured\"","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e7fbc14ea31287a3f9bc5a7462bd600939f37793","unresolved":true,"context_lines":[{"line_number":190,"context_line":""},{"line_number":191,"context_line":"The libvirt domain xml will need to be updated to support"},{"line_number":192,"context_line":"both iothreads and iothreads cpu affinity."},{"line_number":193,"context_line":"io thread are confiugred by the iothreads element at the top level"},{"line_number":194,"context_line":"of the domain xml."},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"```"}],"source_content_type":"text/x-rst","patch_set":1,"id":"045a8b5f_c6cba52d","line":193,"updated":"2025-07-03 08:56:19.000000000","message":"typo \"threads\"","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f8b6ffef6b08356599dee1f05b90d1280ed22094","unresolved":false,"context_lines":[{"line_number":190,"context_line":""},{"line_number":191,"context_line":"The libvirt domain xml will need to be updated to support"},{"line_number":192,"context_line":"both iothreads and iothreads cpu affinity."},{"line_number":193,"context_line":"io thread are confiugred by the iothreads element at the top level"},{"line_number":194,"context_line":"of the domain xml."},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"```"}],"source_content_type":"text/x-rst","patch_set":1,"id":"b226036c_ec0776df","line":193,"in_reply_to":"045a8b5f_c6cba52d","updated":"2025-07-03 12:21:03.000000000","message":"Done","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f8b6ffef6b08356599dee1f05b90d1280ed22094","unresolved":false,"context_lines":[{"line_number":190,"context_line":""},{"line_number":191,"context_line":"The libvirt domain xml will need to be updated to support"},{"line_number":192,"context_line":"both iothreads and iothreads cpu affinity."},{"line_number":193,"context_line":"io thread are confiugred by the iothreads element at the top level"},{"line_number":194,"context_line":"of the domain xml."},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"```"}],"source_content_type":"text/x-rst","patch_set":1,"id":"59da6ba2_5b2e451b","line":193,"range":{"start_line":193,"start_character":14,"end_line":193,"end_character":24},"in_reply_to":"bcebcd0d_f88bd9b4","updated":"2025-07-03 12:21:03.000000000","message":"Done","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e7fbc14ea31287a3f9bc5a7462bd600939f37793","unresolved":true,"context_lines":[{"line_number":205,"context_line":"  \u003ciothreadpin iothread\u003d\"1\" cpuset\u003d\"5,6\"/\u003e"},{"line_number":206,"context_line":"\u003c/cputune\u003e"},{"line_number":207,"context_line":"```"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"Alternatives"},{"line_number":211,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"0b362f59_c9a3f7f9","line":208,"updated":"2025-07-03 08:56:19.000000000","message":"It would be great to add a xml snippet about what the iothreads_per_disk parameter will do.\nI guess it declares something on \u003cdisk\u003e.","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a6747c5b244b43e7c7c916fbfd41ea83fc80fbd0","unresolved":true,"context_lines":[{"line_number":205,"context_line":"  \u003ciothreadpin iothread\u003d\"1\" cpuset\u003d\"5,6\"/\u003e"},{"line_number":206,"context_line":"\u003c/cputune\u003e"},{"line_number":207,"context_line":"```"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"Alternatives"},{"line_number":211,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"c259e79b_6c07c97e","line":208,"updated":"2025-07-03 09:42:43.000000000","message":"what would be the impact for the instance ?","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"58434521c14ee76a5a396c1db388e054e3845a44","unresolved":true,"context_lines":[{"line_number":205,"context_line":"  \u003ciothreadpin iothread\u003d\"1\" cpuset\u003d\"5,6\"/\u003e"},{"line_number":206,"context_line":"\u003c/cputune\u003e"},{"line_number":207,"context_line":"```"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"Alternatives"},{"line_number":211,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9c911a8a_6c713683","line":208,"in_reply_to":"0b362f59_c9a3f7f9","updated":"2025-07-03 11:02:54.000000000","message":"no it will have no impact on the disk at all \n\nit will only change the number we put in ` \u003ciothreads\u003e4\u003c/iothreads\u003e`","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9eab23c605c72bae8cd57bfb297992baef6d727b","unresolved":false,"context_lines":[{"line_number":205,"context_line":"  \u003ciothreadpin iothread\u003d\"1\" cpuset\u003d\"5,6\"/\u003e"},{"line_number":206,"context_line":"\u003c/cputune\u003e"},{"line_number":207,"context_line":"```"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"Alternatives"},{"line_number":211,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"8f463aa0_be75f647","line":208,"in_reply_to":"9c911a8a_6c713683","updated":"2025-07-03 14:33:49.000000000","message":"Done","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5c2a66eeadfb6f0b953d59af2d1ba445f021f5a9","unresolved":true,"context_lines":[{"line_number":205,"context_line":"  \u003ciothreadpin iothread\u003d\"1\" cpuset\u003d\"5,6\"/\u003e"},{"line_number":206,"context_line":"\u003c/cputune\u003e"},{"line_number":207,"context_line":"```"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"Alternatives"},{"line_number":211,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"0fbe14df_385d67bf","line":208,"in_reply_to":"c259e79b_6c07c97e","updated":"2025-07-03 13:58:19.000000000","message":"none for running vms. the iothread woudl be allcoated when teh vms xml is next generated i.e. when we hard reboot or cold migrate it.","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e7fbc14ea31287a3f9bc5a7462bd600939f37793","unresolved":true,"context_lines":[{"line_number":211,"context_line":"------------"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"- we could expose multiqueue tunables to the administrator. This is a valid but"},{"line_number":214,"context_line":"  without iothreads it will not matirally improve performance. As qemu/libvirt"},{"line_number":215,"context_line":"  will enable multiqueue by default for virtio-scsi and virtio-blk devices"},{"line_number":216,"context_line":"  this is not worth the added complexity to extend the scope of this spec."},{"line_number":217,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"16f6feef_091d9926","line":214,"range":{"start_line":214,"start_character":32,"end_line":214,"end_character":41},"updated":"2025-07-03 08:56:19.000000000","message":"naturally ?","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f8b6ffef6b08356599dee1f05b90d1280ed22094","unresolved":false,"context_lines":[{"line_number":211,"context_line":"------------"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"- we could expose multiqueue tunables to the administrator. This is a valid but"},{"line_number":214,"context_line":"  without iothreads it will not matirally improve performance. As qemu/libvirt"},{"line_number":215,"context_line":"  will enable multiqueue by default for virtio-scsi and virtio-blk devices"},{"line_number":216,"context_line":"  this is not worth the added complexity to extend the scope of this spec."},{"line_number":217,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"02dc580b_5e043a09","line":214,"range":{"start_line":214,"start_character":32,"end_line":214,"end_character":41},"in_reply_to":"16f6feef_091d9926","updated":"2025-07-03 12:21:03.000000000","message":"no i ment `materially` which in this context mean messruabely or significatly i.e\niw would have an effect if we had explcit multiqueue without iothread but its enabeld by default implicitly so it not have a tagible or `material` effect","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a6747c5b244b43e7c7c916fbfd41ea83fc80fbd0","unresolved":true,"context_lines":[{"line_number":278,"context_line":"defaulting to 1 iothread per vm is a reasonable default but"},{"line_number":279,"context_line":"it does slightly increase the qemu guest overhead. This trade off"},{"line_number":280,"context_line":"is considered acceptable for the benefit of the user experience."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"Implementation"},{"line_number":284,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"6fc6e185_f9465ebf","line":281,"updated":"2025-07-03 09:42:43.000000000","message":"that really depends whether we want to schedule instances based on that flavor spec or not.\n\nIf we really want to check the computes that support IO threads, then there is kind of a rolling-upgrade concern.","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5c2a66eeadfb6f0b953d59af2d1ba445f021f5a9","unresolved":true,"context_lines":[{"line_number":278,"context_line":"defaulting to 1 iothread per vm is a reasonable default but"},{"line_number":279,"context_line":"it does slightly increase the qemu guest overhead. This trade off"},{"line_number":280,"context_line":"is considered acceptable for the benefit of the user experience."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"Implementation"},{"line_number":284,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"b29bf4fb_b857972f","line":281,"in_reply_to":"227ccd22_5fcd94f7","updated":"2025-07-03 13:58:19.000000000","message":"lets loop back to this in v6, i will not adress this in v5 but if we decied we just want to do a min_comptue_service_version check then ill update teh spec to say we will do a min compute service version check in the api before allowingi io thread to be used.\n\ni prefer the trait but im open to either approch.","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"58434521c14ee76a5a396c1db388e054e3845a44","unresolved":true,"context_lines":[{"line_number":278,"context_line":"defaulting to 1 iothread per vm is a reasonable default but"},{"line_number":279,"context_line":"it does slightly increase the qemu guest overhead. This trade off"},{"line_number":280,"context_line":"is considered acceptable for the benefit of the user experience."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"Implementation"},{"line_number":284,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"227ccd22_5fcd94f7","line":281,"in_reply_to":"6fc6e185_f9465ebf","updated":"2025-07-03 11:02:54.000000000","message":"that why im adding a new compute capablity trait.\n`COMPUTE_IO_THREADS`\n\ni do want ot schdule based on supprot for io threads in the virt driver.\n\nthe libvirt version is new enough but i want to ensure that roooling update work and that we will filter out thing like ironnic or vmware automaticlly without needign any special action on the part of the operator.\n\nwe woudl only schdule based on iothread if you have the extra spec set.","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9eab23c605c72bae8cd57bfb297992baef6d727b","unresolved":true,"context_lines":[{"line_number":278,"context_line":"defaulting to 1 iothread per vm is a reasonable default but"},{"line_number":279,"context_line":"it does slightly increase the qemu guest overhead. This trade off"},{"line_number":280,"context_line":"is considered acceptable for the benefit of the user experience."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"Implementation"},{"line_number":284,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"808a4e42_6c05b5e3","line":281,"in_reply_to":"b29bf4fb_b857972f","updated":"2025-07-03 14:33:49.000000000","message":"this will be v7 if we decied to go this way.\n\nv6 will ust be renaming the file.\ni forgot to do that before pushign v5","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@linecorp.com","username":"masa"},"change_message_id":"a2a85115f9c1c1c221e4bd69643648ee95563c84","unresolved":true,"context_lines":[{"line_number":287,"context_line":"-----------"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"Primary assignee:"},{"line_number":290,"context_line":"  TBD"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"Other contributors:"},{"line_number":293,"context_line":"  sean-k-mooney"}],"source_content_type":"text/x-rst","patch_set":1,"id":"4c0b5753_e50519af","line":290,"updated":"2025-07-03 08:00:09.000000000","message":"If Nova team decided to separate the spec from virtio-blk spec, I\u0027m happy to work on this.","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9eab23c605c72bae8cd57bfb297992baef6d727b","unresolved":false,"context_lines":[{"line_number":287,"context_line":"-----------"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"Primary assignee:"},{"line_number":290,"context_line":"  TBD"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"Other contributors:"},{"line_number":293,"context_line":"  sean-k-mooney"}],"source_content_type":"text/x-rst","patch_set":1,"id":"68f5a0e7_21bac147","line":290,"in_reply_to":"1e6219c6_b7ed3917","updated":"2025-07-03 14:33:49.000000000","message":"Done","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"7365862e6490930e8ba074e9c006fdcb47cda4cb","unresolved":true,"context_lines":[{"line_number":287,"context_line":"-----------"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"Primary assignee:"},{"line_number":290,"context_line":"  TBD"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"Other contributors:"},{"line_number":293,"context_line":"  sean-k-mooney"}],"source_content_type":"text/x-rst","patch_set":1,"id":"804a5d84_1ad2fa9b","line":290,"in_reply_to":"4c0b5753_e50519af","updated":"2025-07-03 08:21:36.000000000","message":"Thank you really much Masahito.","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5c2a66eeadfb6f0b953d59af2d1ba445f021f5a9","unresolved":true,"context_lines":[{"line_number":287,"context_line":"-----------"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"Primary assignee:"},{"line_number":290,"context_line":"  TBD"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"Other contributors:"},{"line_number":293,"context_line":"  sean-k-mooney"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1e6219c6_b7ed3917","line":290,"in_reply_to":"6fc7a7fd_ec649942","updated":"2025-07-03 13:58:19.000000000","message":"ill update this in v5","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"58434521c14ee76a5a396c1db388e054e3845a44","unresolved":true,"context_lines":[{"line_number":287,"context_line":"-----------"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"Primary assignee:"},{"line_number":290,"context_line":"  TBD"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"Other contributors:"},{"line_number":293,"context_line":"  sean-k-mooney"}],"source_content_type":"text/x-rst","patch_set":1,"id":"6fc7a7fd_ec649942","line":290,"in_reply_to":"804a5d84_1ad2fa9b","updated":"2025-07-03 11:02:54.000000000","message":"thanks i set TBD yesterday because i was not sure if you would have time.\n\nthe intent of this spec was to define the minium useful iothread support that we coudl deliver this cycle while hopefully covering most of your usecase while also limiting the scope to minimes upgrade impact and complexity. we are running out of tiem to agree the design and impelment the code so i wanted to have a useful version we coudl ship this cycle and then work on the more complex bits next cycle.\n\ni.e. get it work then interage to make it more powerful over time as required.","commit_id":"a183d8cd6996223f2dcce516eceeb73c106afaf8"}],"specs/2025.2/approved/static-vm-iothreads.rst":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"dd9c655986410427898bd2ca43a429ec34b17065","unresolved":true,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"When the libvirt driver is used with the QEMU or KVM virt_type nova does not"},{"line_number":22,"context_line":"use io_threads by default. This means that all paravirtualized disks are"},{"line_number":23,"context_line":"forced to use a single emulator thread to service io requests."},{"line_number":24,"context_line":"This is a problem for two reasons:"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"1. It limits the io performance of the VM."}],"source_content_type":"text/x-rst","patch_set":6,"id":"04f5708c_ea0d228f","line":23,"range":{"start_line":23,"start_character":50,"end_line":23,"end_character":52},"updated":"2025-07-25 09:40:26.000000000","message":"nit: perhaps io shoud be IO (capitalized)","commit_id":"2c380cf7e9b0a071f3f63ef5087bb5be90a113e9"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"3736b74f8157f51f831a22c06e2efeece6eba54f","unresolved":true,"context_lines":[{"line_number":48,"context_line":"  ability to override them and opt out via low performance flavors intended for"},{"line_number":49,"context_line":"  heavily oversubscribed workloads."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"- As a cloud user I want to be able to run disk io intensive applciations like"},{"line_number":52,"context_line":"  etcd or relational databases and have better IO performance by selecting"},{"line_number":53,"context_line":"  a flavor with more IO threads."},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"c7735eea_8670ced6","line":51,"range":{"start_line":51,"start_character":61,"end_line":51,"end_character":73},"updated":"2025-07-04 13:48:33.000000000","message":"typo application","commit_id":"2c380cf7e9b0a071f3f63ef5087bb5be90a113e9"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"3736b74f8157f51f831a22c06e2efeece6eba54f","unresolved":true,"context_lines":[{"line_number":93,"context_line":"As iothreads consume host CPU and RAM they should only be configurable via"},{"line_number":94,"context_line":"flavor extra specs."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"Multiqueue and IO Threads"},{"line_number":97,"context_line":"-------------------------"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"The libvirt driver supports multiqueue for virtio-scsi and virtio-blk devices."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"In recent versions of QEMU multiqueue is enabled by default for virtio-scsi"},{"line_number":102,"context_line":"and virtio-blk devices."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"While the number of queues is configurable via the libvirt, this"},{"line_number":105,"context_line":"configurability is not exposed at this time. This may be a valid performance"},{"line_number":106,"context_line":"optimization in the future but it is not a goal of this spec."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Before committing to exposing multiqueue tunables to the administrator the"},{"line_number":109,"context_line":"default queue count needs to be considered in the presence of io threads."},{"line_number":110,"context_line":"This is left as a future optimization once we have a better understanding"},{"line_number":111,"context_line":"of the impact of io threads on performance. Disk multi queue configuration"},{"line_number":112,"context_line":"will be addressed by https://review.opendev.org/c/openstack/nova-specs/+/951636"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"IO thread and scheduling"},{"line_number":115,"context_line":"------------------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"43c47076_183c3fcf","line":112,"range":{"start_line":96,"start_character":0,"end_line":112,"end_character":79},"updated":"2025-07-04 13:48:33.000000000","message":"I would move this to the multiqueue spec.","commit_id":"2c380cf7e9b0a071f3f63ef5087bb5be90a113e9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"21b1c3d2830a4eda4acc651900a569ebe3f3c4b8","unresolved":true,"context_lines":[{"line_number":93,"context_line":"As iothreads consume host CPU and RAM they should only be configurable via"},{"line_number":94,"context_line":"flavor extra specs."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"Multiqueue and IO Threads"},{"line_number":97,"context_line":"-------------------------"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"The libvirt driver supports multiqueue for virtio-scsi and virtio-blk devices."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"In recent versions of QEMU multiqueue is enabled by default for virtio-scsi"},{"line_number":102,"context_line":"and virtio-blk devices."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"While the number of queues is configurable via the libvirt, this"},{"line_number":105,"context_line":"configurability is not exposed at this time. This may be a valid performance"},{"line_number":106,"context_line":"optimization in the future but it is not a goal of this spec."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Before committing to exposing multiqueue tunables to the administrator the"},{"line_number":109,"context_line":"default queue count needs to be considered in the presence of io threads."},{"line_number":110,"context_line":"This is left as a future optimization once we have a better understanding"},{"line_number":111,"context_line":"of the impact of io threads on performance. Disk multi queue configuration"},{"line_number":112,"context_line":"will be addressed by https://review.opendev.org/c/openstack/nova-specs/+/951636"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"IO thread and scheduling"},{"line_number":115,"context_line":"------------------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"ffbe5d6d_4611fa00","line":112,"range":{"start_line":96,"start_character":0,"end_line":112,"end_character":79},"in_reply_to":"43c47076_183c3fcf","updated":"2025-07-04 14:01:36.000000000","message":"i guess we could do that @masahito.muroi@linecorp.com are you happy to capture that in your spec","commit_id":"2c380cf7e9b0a071f3f63ef5087bb5be90a113e9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3dc2016c93393c97e3abe690c25ee4b2142da18e","unresolved":true,"context_lines":[{"line_number":225,"context_line":""},{"line_number":226,"context_line":".. code-block:: bash"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"  openstack flavor create --vcpus 4 --ram 4096 --disk 20 \\"},{"line_number":229,"context_line":"    --property hw:iothreads\u003d4 \\"},{"line_number":230,"context_line":"    m1.medium.iothreads"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"e177cf0d_933e5623","line":228,"range":{"start_line":228,"start_character":34,"end_line":228,"end_character":35},"updated":"2025-07-03 17:33:24.000000000","message":"nit: i porbaly shoudl have kept this at 2 to make it clear that the xml change because of the extra spec not the vcpu count","commit_id":"2c380cf7e9b0a071f3f63ef5087bb5be90a113e9"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"3736b74f8157f51f831a22c06e2efeece6eba54f","unresolved":true,"context_lines":[{"line_number":225,"context_line":""},{"line_number":226,"context_line":".. code-block:: bash"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"  openstack flavor create --vcpus 4 --ram 4096 --disk 20 \\"},{"line_number":229,"context_line":"    --property hw:iothreads\u003d4 \\"},{"line_number":230,"context_line":"    m1.medium.iothreads"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"0f9b85ef_8d15bb8d","line":228,"range":{"start_line":228,"start_character":34,"end_line":228,"end_character":35},"in_reply_to":"e177cf0d_933e5623","updated":"2025-07-04 13:48:33.000000000","message":"+1","commit_id":"2c380cf7e9b0a071f3f63ef5087bb5be90a113e9"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"3736b74f8157f51f831a22c06e2efeece6eba54f","unresolved":true,"context_lines":[{"line_number":251,"context_line":"Alternatives"},{"line_number":252,"context_line":"------------"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"**Dynamic iothread scaling with hw:iothreads_per_disk**"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"Originally this spec included a `hw:iothreads_per_disk\u003d\u003cnum\u003e` flavor extra spec"},{"line_number":257,"context_line":"that would enable dynamic scaling of iothreads based on the number of attached"},{"line_number":258,"context_line":"disks. This alternative was moved out of scope for 2025.2 due to implementation"},{"line_number":259,"context_line":"complexity but remains a valuable future enhancement."},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"The design would work as follows:"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"- Add `hw:iothreads_per_disk\u003d\u003cnum\u003e` flavor extra spec"},{"line_number":264,"context_line":"- Calculate total iothreads as: `hw:iothreads` + ("},{"line_number":265,"context_line":"  number of disks × `hw:iothreads_per_disk`)"},{"line_number":266,"context_line":"- Use libvirt APIs `virDomainAddIOThread`_ and `virDomainDelIOThread`_ to"},{"line_number":267,"context_line":"  dynamically adjust iothread count at runtime"},{"line_number":268,"context_line":"- Trigger iothread adjustments during Cinder volume attach/detach operations"},{"line_number":269,"context_line":"- For QEMU driver, iothread IDs start at 1 (not 0)"},{"line_number":270,"context_line":"- CPU affinity would need to be managed for dynamically added iothreads"},{"line_number":271,"context_line":"  there are libivrt api for this as well."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":".. _virDomainAddIOThread: https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainAddIOThread"},{"line_number":274,"context_line":".. _virDomainDelIOThread: https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainDelIOThread"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"This approach would provide better IO performance scaling as storage is added"},{"line_number":277,"context_line":"to VMs but introduces significant complexity in volume operations,"},{"line_number":278,"context_line":"live migration,and CPU affinity management. It is being deferred to allow"},{"line_number":279,"context_line":"design and implementation time in a future release cycle."},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"**Multiqueue tunables**"},{"line_number":282,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"13424896_8454cc03","line":279,"range":{"start_line":254,"start_character":0,"end_line":279,"end_character":57},"updated":"2025-07-04 13:48:33.000000000","message":"I’ll be brief here and simply link to another spec.\n\nI think it would make sense to split this work into three separate specs that we could address step by step:\n\n-One for iothread, which is probably the easiest to implement and likely to bring the most performance benefit.\n\n-A second one for iothreads_per_disk, where we can elaborate further and fully address the complexity.\n\n-A third one for the multiqueue tunable.","commit_id":"2c380cf7e9b0a071f3f63ef5087bb5be90a113e9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"21b1c3d2830a4eda4acc651900a569ebe3f3c4b8","unresolved":true,"context_lines":[{"line_number":251,"context_line":"Alternatives"},{"line_number":252,"context_line":"------------"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"**Dynamic iothread scaling with hw:iothreads_per_disk**"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"Originally this spec included a `hw:iothreads_per_disk\u003d\u003cnum\u003e` flavor extra spec"},{"line_number":257,"context_line":"that would enable dynamic scaling of iothreads based on the number of attached"},{"line_number":258,"context_line":"disks. This alternative was moved out of scope for 2025.2 due to implementation"},{"line_number":259,"context_line":"complexity but remains a valuable future enhancement."},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"The design would work as follows:"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"- Add `hw:iothreads_per_disk\u003d\u003cnum\u003e` flavor extra spec"},{"line_number":264,"context_line":"- Calculate total iothreads as: `hw:iothreads` + ("},{"line_number":265,"context_line":"  number of disks × `hw:iothreads_per_disk`)"},{"line_number":266,"context_line":"- Use libvirt APIs `virDomainAddIOThread`_ and `virDomainDelIOThread`_ to"},{"line_number":267,"context_line":"  dynamically adjust iothread count at runtime"},{"line_number":268,"context_line":"- Trigger iothread adjustments during Cinder volume attach/detach operations"},{"line_number":269,"context_line":"- For QEMU driver, iothread IDs start at 1 (not 0)"},{"line_number":270,"context_line":"- CPU affinity would need to be managed for dynamically added iothreads"},{"line_number":271,"context_line":"  there are libivrt api for this as well."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":".. _virDomainAddIOThread: https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainAddIOThread"},{"line_number":274,"context_line":".. _virDomainDelIOThread: https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainDelIOThread"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"This approach would provide better IO performance scaling as storage is added"},{"line_number":277,"context_line":"to VMs but introduces significant complexity in volume operations,"},{"line_number":278,"context_line":"live migration,and CPU affinity management. It is being deferred to allow"},{"line_number":279,"context_line":"design and implementation time in a future release cycle."},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"**Multiqueue tunables**"},{"line_number":282,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"78a74ce8_afd33a83","line":279,"range":{"start_line":254,"start_character":0,"end_line":279,"end_character":57},"in_reply_to":"13424896_8454cc03","updated":"2025-07-04 14:01:36.000000000","message":"ok we can do that.\n\nat this point we are passed spec freeze for this cycle but when we update this for next cycle we can move the per_disk part out to a third spec.\n\ni moved it to here because  i dint want to creat a third spec yet since i was hopign we might be abel to do do it this cycle.","commit_id":"2c380cf7e9b0a071f3f63ef5087bb5be90a113e9"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"3736b74f8157f51f831a22c06e2efeece6eba54f","unresolved":true,"context_lines":[{"line_number":280,"context_line":""},{"line_number":281,"context_line":"**Multiqueue tunables**"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"We could expose multiqueue tunables to the administrator."},{"line_number":284,"context_line":"This is a valid option but without iothreads it will not materially improve"},{"line_number":285,"context_line":"performance. As QEMU/libvirt will enable multiqueue by default for"},{"line_number":286,"context_line":"virtio-scsi and virtio-blk devices this is not worth the added"},{"line_number":287,"context_line":"complexity of extending the scope of this spec."},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"disk multi queue configuration will be addressed by"},{"line_number":290,"context_line":"https://review.opendev.org/c/openstack/nova-specs/+/951636"}],"source_content_type":"text/x-rst","patch_set":6,"id":"ea3dca4e_7fbf0051","line":287,"range":{"start_line":283,"start_character":0,"end_line":287,"end_character":47},"updated":"2025-07-04 13:48:33.000000000","message":"I would suggest removing this block and simply keeping a link to the relevant specification.\nAll of this can be explained directly within the spec itself, and doing so will help keep this one lighter and more focused.","commit_id":"2c380cf7e9b0a071f3f63ef5087bb5be90a113e9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"21b1c3d2830a4eda4acc651900a569ebe3f3c4b8","unresolved":true,"context_lines":[{"line_number":280,"context_line":""},{"line_number":281,"context_line":"**Multiqueue tunables**"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"We could expose multiqueue tunables to the administrator."},{"line_number":284,"context_line":"This is a valid option but without iothreads it will not materially improve"},{"line_number":285,"context_line":"performance. As QEMU/libvirt will enable multiqueue by default for"},{"line_number":286,"context_line":"virtio-scsi and virtio-blk devices this is not worth the added"},{"line_number":287,"context_line":"complexity of extending the scope of this spec."},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"disk multi queue configuration will be addressed by"},{"line_number":290,"context_line":"https://review.opendev.org/c/openstack/nova-specs/+/951636"}],"source_content_type":"text/x-rst","patch_set":6,"id":"b68b82e1_84f3279e","line":287,"range":{"start_line":283,"start_character":0,"end_line":287,"end_character":47},"in_reply_to":"ea3dca4e_7fbf0051","updated":"2025-07-04 14:01:36.000000000","message":"so i could butg this is basilly me saying why multi quee is out of scope fo theis spec.\n\ni dont think it woudl be correct to fully remove all refence to multi queu because it is important to consider both aspects together.\n\ni woudl perfer to keep this here but i im oke with moving the other section to the other spec.","commit_id":"2c380cf7e9b0a071f3f63ef5087bb5be90a113e9"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"dd9c655986410427898bd2ca43a429ec34b17065","unresolved":true,"context_lines":[{"line_number":291,"context_line":""},{"line_number":292,"context_line":"**Fixed single iothread**"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"We could start with exactly 1 iothread per VM without configuration."},{"line_number":295,"context_line":"This was proposed in a previous cycle but the incremental work required is"},{"line_number":296,"context_line":"small and while having 1 iothread per VM is a reasonable default it is not"},{"line_number":297,"context_line":"a good user experience to force it on all workloads."},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"Data model impact"},{"line_number":300,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"c0216aa3_01864d9b","line":297,"range":{"start_line":294,"start_character":0,"end_line":297,"end_character":52},"updated":"2025-07-25 09:40:26.000000000","message":"For reference the 2025.1 PTG discussion summary for static configurable 1 IOThread per VM:\nhttps://etherpad.opendev.org/p/nova-2025.1-ptg#L686\n\nAnd my work on the static 1 IOThread per VM patch:\nhttps://review.opendev.org/c/openstack/nova/+/939254\n\nThe proposal here for sure gives much bigger flexibility for admins/endusers","commit_id":"2c380cf7e9b0a071f3f63ef5087bb5be90a113e9"}]}
