)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"9f3386b8eeb3c2af69b6c77e71bc3dabaa094975","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"blueprint: iothreads-for-instances"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add config option to enable one iothread per"},{"line_number":10,"context_line":"instance on a given compute."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related-Bug: iothreads-for-instances"},{"line_number":13,"context_line":"Change-Id: I8b22e5bca560d111934fbdf67494a4e288b9e50a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"a45743d5_b7d4d0d6","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":28},"updated":"2025-10-27 03:37:45.000000000","message":"How about adding a flavor extra spec for that purpose? In my opinion, a flavor extra spec would be more flexible.","commit_id":"a6f721620934ff6b459f491ab833933a631936bb"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"dba9611c94325dcadb58d3d1b7a55b31d18679f9","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"blueprint: iothreads-for-instances"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add config option to enable one iothread per"},{"line_number":10,"context_line":"instance on a given compute."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related-Bug: iothreads-for-instances"},{"line_number":13,"context_line":"Change-Id: I8b22e5bca560d111934fbdf67494a4e288b9e50a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"d4e1aac2_f83fb59e","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":28},"in_reply_to":"32bf1290_1011c06b","updated":"2025-12-17 15:04:34.000000000","message":"I should have worked on that, but falled behind the task so far :( Was planning to get to it before milestone-2 fwiw.","commit_id":"a6f721620934ff6b459f491ab833933a631936bb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"191da12cbf094f9cd6a22db8f639cfab2c3ae58c","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"blueprint: iothreads-for-instances"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add config option to enable one iothread per"},{"line_number":10,"context_line":"instance on a given compute."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related-Bug: iothreads-for-instances"},{"line_number":13,"context_line":"Change-Id: I8b22e5bca560d111934fbdf67494a4e288b9e50a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1c2a945c_16ca73ac","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":28},"in_reply_to":"3c41052b_108e72ca","updated":"2026-01-21 18:14:38.000000000","message":"Done","commit_id":"a6f721620934ff6b459f491ab833933a631936bb"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"cfe0121f6d196420066e494460c98645bfb62420","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"blueprint: iothreads-for-instances"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add config option to enable one iothread per"},{"line_number":10,"context_line":"instance on a given compute."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related-Bug: iothreads-for-instances"},{"line_number":13,"context_line":"Change-Id: I8b22e5bca560d111934fbdf67494a4e288b9e50a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"ea54abf4_525bcac0","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":28},"in_reply_to":"467040b2_d0c71378","updated":"2025-12-17 03:05:24.000000000","message":"So, this is a PoC patch, right? I\u0027ve read https://etherpad.opendev.org/p/nova-2026.1-ptg#L544 and https://review.opendev.org/c/openstack/nova-specs/+/951636, but  I\u0027m still a bit lost about this patch. Is this patch related to virtio-blk multiqueue feature? Why we can just uncondtionlly add 1 iothread to all vms now? I only recently started following Nova project. I believe I missed some informations. Where I can get more context informations about this patch?","commit_id":"a6f721620934ff6b459f491ab833933a631936bb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a81f97a39c1c183913ccd0756801b824a72da26a","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"blueprint: iothreads-for-instances"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add config option to enable one iothread per"},{"line_number":10,"context_line":"instance on a given compute."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related-Bug: iothreads-for-instances"},{"line_number":13,"context_line":"Change-Id: I8b22e5bca560d111934fbdf67494a4e288b9e50a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"ad9ad721_79598957","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":28},"in_reply_to":"5d033075_d4210bed","updated":"2025-11-19 17:29:59.000000000","message":"right we agree to remvoe the config option and just uncondtionlly add 1 iothread to all vms.\n\nwe said once that is merged and working we coudl consider adding extra spec as a followup\n\nthere are several ways to possibly do that but we wanted to get the minimal resaonsble improvemtn done first then poc/revisti this in the future.","commit_id":"a6f721620934ff6b459f491ab833933a631936bb"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"6066010f30c1c3c34945fead80d34f5e2d107d4c","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"blueprint: iothreads-for-instances"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add config option to enable one iothread per"},{"line_number":10,"context_line":"instance on a given compute."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related-Bug: iothreads-for-instances"},{"line_number":13,"context_line":"Change-Id: I8b22e5bca560d111934fbdf67494a4e288b9e50a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5d033075_d4210bed","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":28},"in_reply_to":"7fbbfb80_71bf19ea","updated":"2025-11-06 07:55:16.000000000","message":"based on the discussions during the PTG for this cycle as a kind of 1st step no extra-specs will be added:\nhttps://etherpad.opendev.org/p/nova-2026.1-ptg#L998","commit_id":"a6f721620934ff6b459f491ab833933a631936bb"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"746354a26aa58b6e6357f0024faf40c6deb91e23","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"blueprint: iothreads-for-instances"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add config option to enable one iothread per"},{"line_number":10,"context_line":"instance on a given compute."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related-Bug: iothreads-for-instances"},{"line_number":13,"context_line":"Change-Id: I8b22e5bca560d111934fbdf67494a4e288b9e50a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7fbbfb80_71bf19ea","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":28},"in_reply_to":"a45743d5_b7d4d0d6","updated":"2025-10-27 12:53:56.000000000","message":"There will be a session during the PTG and one direction is to add extraspecs:\nhttps://etherpad.opendev.org/p/nova-2026.1-ptg#L544","commit_id":"a6f721620934ff6b459f491ab833933a631936bb"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"77450705409019b9dad5db5945afe2edb23ab573","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"blueprint: iothreads-for-instances"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add config option to enable one iothread per"},{"line_number":10,"context_line":"instance on a given compute."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related-Bug: iothreads-for-instances"},{"line_number":13,"context_line":"Change-Id: I8b22e5bca560d111934fbdf67494a4e288b9e50a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"467040b2_d0c71378","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":28},"in_reply_to":"ad9ad721_79598957","updated":"2025-12-03 16:51:45.000000000","message":"ack, thanks for summarizing here","commit_id":"a6f721620934ff6b459f491ab833933a631936bb"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"979a2d2cccadc55a7290a9bc1ac72862103612f9","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"blueprint: iothreads-for-instances"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add config option to enable one iothread per"},{"line_number":10,"context_line":"instance on a given compute."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related-Bug: iothreads-for-instances"},{"line_number":13,"context_line":"Change-Id: I8b22e5bca560d111934fbdf67494a4e288b9e50a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3c41052b_108e72ca","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":28},"in_reply_to":"d0324997_76c6269b","updated":"2026-01-14 08:31:02.000000000","message":"Hi, coming back for this patch, but January is hard with internal trainings etc, but on my way....","commit_id":"a6f721620934ff6b459f491ab833933a631936bb"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"0a006e62207deb7e6d88447cd3dbc5c03faf413e","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"blueprint: iothreads-for-instances"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add config option to enable one iothread per"},{"line_number":10,"context_line":"instance on a given compute."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related-Bug: iothreads-for-instances"},{"line_number":13,"context_line":"Change-Id: I8b22e5bca560d111934fbdf67494a4e288b9e50a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"d0324997_76c6269b","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":28},"in_reply_to":"d4e1aac2_f83fb59e","updated":"2025-12-18 01:56:19.000000000","message":"Hi sean. Thanks a lot for the detailed explanation — it cleared up many of my questions","commit_id":"a6f721620934ff6b459f491ab833933a631936bb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0d18fd2d1bfa583e4e66f53b076b78f554f8a6f4","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"blueprint: iothreads-for-instances"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add config option to enable one iothread per"},{"line_number":10,"context_line":"instance on a given compute."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related-Bug: iothreads-for-instances"},{"line_number":13,"context_line":"Change-Id: I8b22e5bca560d111934fbdf67494a4e288b9e50a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"32bf1290_1011c06b","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":28},"in_reply_to":"ea54abf4_525bcac0","updated":"2025-12-17 10:05:58.000000000","message":"yes and no.\n\nthis is not directly related to enabling multi queue for block devices\nor https://review.opendev.org/c/openstack/nova-specs/+/951636\n\niothreads are a separate functionality that we have talked about supporting in nova since at least 2020 and predates https://review.opendev.org/c/openstack/nova-specs/+/951636 so this patch is not intended to enable mutliqueue directly.\n\nvirtio-blk multi queue is automatically enabled by qemu in newer version so we do not need to explicit enable that in nova.\nwe may implement https://review.opendev.org/c/openstack/nova-specs/+/951636 eventulaly but its not planned for this release.\n\nwe agreed at the last ptg to proceed with a specless blueprint to add 1 iothread unconditonally ot all vms.\n\nBy adding 1 io thread to all vms we move the io operation off the main tread whic solve some issues with managing vms under load\ntoday beause we have no iothread the qemu main thread is handling all vm io and responidn to the qemu monitor commands form libvirt/nova.\nthis will also have a mild performance improvemebut but more imporantly it will impove the managablity of the vm\n\nwe also agreed to revisit the diffent approch to supprot more the 1 io thread only after this inital work was complete.\n\nit is likely that in a future release we will add the ablity to have more the one iothread either staticly via flaovr extra specs, dynamically via fixed bounds via iothreadppools, dynamically with 1 per cinder volume\n\noriginally https://review.opendev.org/c/openstack/nova-specs/+/951636 was seen as too complex to support based on the value it would provide as it required a very very new version of libvirt to be able to map individual queues to specific io-threads.\n\nwhile we coudl eventully supprot that ther eis a lot more value to having basic iothread supprot now then trying to devlier a very complext solution that few will be able to use in the short to medium term.\n\nso this is not intened as a poc it inted to be a standaone feature and the implemation is getting closer to being merable based on the restrict MVP (1 iothread for every vm) that we scoped it down too.","commit_id":"a6f721620934ff6b459f491ab833933a631936bb"},{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"cfe0121f6d196420066e494460c98645bfb62420","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"blueprint: iothreads-for-instances"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add config option to enable one iothread per"},{"line_number":10,"context_line":"instance on a given compute."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related-Bug: iothreads-for-instances"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"a022cd1a_65c6cafc","line":9,"range":{"start_line":9,"start_character":4,"end_line":9,"end_character":17},"updated":"2025-12-17 03:05:24.000000000","message":"I noticed that the config option has already removed","commit_id":"88b00ee2a38abebcf184db31dc936315fe4a5a04"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1391d81be39406a32cc576357efd195a8bf7e336","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"blueprint: iothreads-for-instances"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add config option to enable one iothread per"},{"line_number":10,"context_line":"instance on a given compute."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related-Bug: iothreads-for-instances"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"9d10b9dd_210def87","line":9,"range":{"start_line":9,"start_character":4,"end_line":9,"end_character":17},"in_reply_to":"14ad34dc_591dad56","updated":"2026-01-16 14:42:39.000000000","message":"Thanks, I removed the mention of cfg option","commit_id":"88b00ee2a38abebcf184db31dc936315fe4a5a04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0d18fd2d1bfa583e4e66f53b076b78f554f8a6f4","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"blueprint: iothreads-for-instances"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add config option to enable one iothread per"},{"line_number":10,"context_line":"instance on a given compute."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related-Bug: iothreads-for-instances"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"14ad34dc_591dad56","line":9,"range":{"start_line":9,"start_character":4,"end_line":9,"end_character":17},"in_reply_to":"a022cd1a_65c6cafc","updated":"2025-12-17 10:05:58.000000000","message":"right we shoudl update this\n\n\n\n```suggestion\nenable one io-thread per qemu instance.\n```","commit_id":"88b00ee2a38abebcf184db31dc936315fe4a5a04"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"884e44673ee752649a5b391ee36e59325a3a2c74","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"fd7bed67_ad083170","updated":"2025-01-14 16:11:14.000000000","message":"WIP at the moment, but any comments help","commit_id":"f92fdec182d9dc71002daf522dc7182aaa30be0b"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"7d0746462c61edfd98438ff2b370664061047d8d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"701cf87a_60564b40","updated":"2025-07-04 14:01:41.000000000","message":"Thanks a lot for submitting this patch! I really appreciate your interest in contributing to Nova.\n\nApologies if I’m being a bit procedural here — I don’t want to discourage participation in any way — but I wanted to give you a heads-up that patches like this, especially when they touch non-trivial features, usually require going through the spec process before we can consider merging them.\n\nIn particular, features like the one you’re proposing are best discussed first during the Project Team Gathering (PTG), where core maintainers and contributors can align on the direction. After that, we typically expect a specification to be submitted and approved before working on the actual implementation. This helps everyone get on the same page and improves the chance of a successful merge.\n\nThere are already two related specs under discussion that may be of interest:\n\n-https://review.opendev.org/c/openstack/nova-specs/+/953940 (iothreads)\nand\n- https://review.opendev.org/c/openstack/nova-specs/+/953940 (multiqueue)\n\nA couple of suggestions:\n\nI strongly encourage you to participate in the review of those specs, especially if your use case isn’t fully covered, your input would be very valuable.\n\nWe’d absolutely welcome your help with the implementation phase once the specs are approved!\n\nThanks again for your contribution, it’s great to see new folks getting involved. Don’t hesitate to reach out if you have questions about the process or want guidance.","commit_id":"aa20f6677d99a58b5dc67fe7a641d6ebe537b20e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"b68bcde2c608c48ec0be08b9ef4eeea820eb0ac1","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"82baaee3_e95b4433","in_reply_to":"679cc1e6_3a5dcb59","updated":"2025-07-24 11:18:43.000000000","message":"For the multiqueue spec you mean this one: https://review.opendev.org/c/openstack/nova-specs/+/951636 (Add spec for virtio-blk multiqueue extra_spec ) ?","commit_id":"aa20f6677d99a58b5dc67fe7a641d6ebe537b20e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"00914e6ba4b5248451c7f89c7dc58c0c7e3c5588","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"679cc1e6_3a5dcb59","in_reply_to":"701cf87a_60564b40","updated":"2025-07-22 10:44:29.000000000","message":"Hi, thanks for taking care. This topic was discussed on 2025.1 PTG, see:\nhttps://etherpad.opendev.org/p/nova-2025.1-ptg#L689\n(We agreed that a lightweight blueprint is enough for this work, so the blueprint: https://blueprints.launchpad.net/nova/+spec/iothreads-for-instances )\n\nI had less time sadly to work on this topic. Do you think that more administrative things are necessary like spec?","commit_id":"aa20f6677d99a58b5dc67fe7a641d6ebe537b20e"},{"author":{"_account_id":5241,"name":"Martin Magr","email":"mmagr@redhat.com","username":"mmagr"},"change_message_id":"dc3a667fc8df8416bb11807f412855cba5dbb1f4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"1fe92386_bda9740c","updated":"2025-10-20 09:06:12.000000000","message":"@lajoskatona Do you plan to finish this spec proposal and then implementation of it in near future?","commit_id":"a6f721620934ff6b459f491ab833933a631936bb"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"934e6f4e6a0fce4bbb3c1d261bc580fe7b11b23f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"5dce73f4_6a7b2cd4","updated":"2025-07-24 14:31:13.000000000","message":"todo add more tests","commit_id":"a6f721620934ff6b459f491ab833933a631936bb"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"e25aa4551d1cb3a378f0fe9a9f9308cf74286ad9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"0a5d811d_bd991c24","in_reply_to":"1fe92386_bda9740c","updated":"2025-10-21 15:00:04.000000000","message":"There are new proposals for IOthread support, and on the coming PTG it will be a topic: https://etherpad.opendev.org/p/nova-2026.1-ptg#L403","commit_id":"a6f721620934ff6b459f491ab833933a631936bb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d3e0e0fba0ea523a3e53232ca10903ad8e8306a7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"b2328d56_9ba64384","updated":"2025-12-04 02:39:58.000000000","message":"This needs a release note and updated unit tests for these changes","commit_id":"f9b1e2d61d99cd746f12f2283682376993d011b7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0d18fd2d1bfa583e4e66f53b076b78f554f8a6f4","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":8,"id":"6d96a19c_f953f570","updated":"2025-12-17 10:05:58.000000000","message":"my comment form v7 still look unaddressed but this is now pretty close to the mvp","commit_id":"88b00ee2a38abebcf184db31dc936315fe4a5a04"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"53463d883e9bba0435b186eaf2e06fa8f96a96f1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"f2c00ec4_76f6bc30","updated":"2026-01-16 15:35:54.000000000","message":"Direction looks good but I see a small bug inline and probably a related missing test coverage","commit_id":"333230d3084aefdc7968efd1bd1cfa635244f7e9"},{"author":{"_account_id":33612,"name":"yuval","email":"yuval@lightbitslabs.com","username":"yuval"},"change_message_id":"d083740513f9caada5b0dfc4ee0a3cd62244fdc1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"7936b6aa_c2bdcf4a","updated":"2026-02-03 15:08:33.000000000","message":"I dont understand how do I use it? I need to set something in the conifguration?","commit_id":"76d64b9cb4241b73e62b3775f13d8eddcc0cb778"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0ca4bd58a9337d9f561a6d63eed5a88eda180085","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"77f56a6f_1311c186","updated":"2026-01-21 12:19:53.000000000","message":"Looks good to me now. I think this is the right step forward, we can always complicate the logic and and configuration possibility later.","commit_id":"76d64b9cb4241b73e62b3775f13d8eddcc0cb778"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"aec5560239129dbd57365ab13c033b00d368cfde","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"ecc5401e_a9e5c831","in_reply_to":"7936b6aa_c2bdcf4a","updated":"2026-02-04 09:08:16.000000000","message":"No you don\u0027t need to set anything, that was the agreement for this cycle on the last PTG: https://etherpad.opendev.org/p/nova-2026.1-ptg#L998","commit_id":"76d64b9cb4241b73e62b3775f13d8eddcc0cb778"}],"nova/conf/compute.py":[{"author":{"_account_id":28329,"name":"yangjianfeng","display_name":"JeffYang","email":"yjf1970231893@gmail.com","username":"yangjianfeng"},"change_message_id":"9f3386b8eeb3c2af69b6c77e71bc3dabaa094975","unresolved":true,"context_lines":[{"line_number":945,"context_line":"               help\u003d\"\"\""},{"line_number":946,"context_line":"Use IOThreads for instances."},{"line_number":947,"context_line":""},{"line_number":948,"context_line":"If the ``pervm`` value is used 1 IOThread is aalocated for the instance."},{"line_number":949,"context_line":"If the instance has only ``pinned`` CPUs than it is not allowed to have"},{"line_number":950,"context_line":"IOThreads enabled."},{"line_number":951,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"256d7853_81d1f6a3","line":948,"range":{"start_line":948,"start_character":45,"end_line":948,"end_character":55},"updated":"2025-10-27 03:37:45.000000000","message":"s\\allocated","commit_id":"a6f721620934ff6b459f491ab833933a631936bb"}],"nova/tests/fixtures/nova.py":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"0a049ea5189e70a8dec022df624ad8b2e3a9fb3e","unresolved":true,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        with mock.patch(\u0027nova.context.get_admin_context\u0027,"},{"line_number":103,"context_line":"                        return_value\u003dself.ctxt):"},{"line_number":104,"context_line":"            # Drive this through kwargs for example, to have this"},{"line_number":105,"context_line":"            # return_value flexible for coming tests"},{"line_number":106,"context_line":"            with mock.patch.object(hardware, \u0027is_disk_iothreads_enabled\u0027,"},{"line_number":107,"context_line":"                                   return_value\u003dFalse):"},{"line_number":108,"context_line":"                self.service \u003d service.Service.create(**self.kwargs)"},{"line_number":109,"context_line":"                self.service.start()"},{"line_number":110,"context_line":"        self.addCleanup(self.service.kill)"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"b3deec08_af76ac54","line":108,"range":{"start_line":104,"start_character":0,"end_line":108,"end_character":68},"updated":"2025-07-24 11:52:33.000000000","message":"In the meantime I work on this locally","commit_id":"a6f721620934ff6b459f491ab833933a631936bb"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"191da12cbf094f9cd6a22db8f639cfab2c3ae58c","unresolved":false,"context_lines":[{"line_number":5272,"context_line":"                                vconfig.LibvirtConfigGuestCPUTuneIOThreadPin)"},{"line_number":5273,"context_line":"            self.assertEqual(cfg.cputune.emulatorpin.cpuset,"},{"line_number":5274,"context_line":"                            cfg.cputune.iothreadpin.cpuset)"},{"line_number":5275,"context_line":"            self.assertEqual(set([6]), cfg.cputune.iothreadpin.cpuset)"},{"line_number":5276,"context_line":""},{"line_number":5277,"context_line":"    @mock.patch.object(host.Host, \"_check_machine_type\", new\u003dmock.Mock())"},{"line_number":5278,"context_line":"    def test_get_guest_config_iothreadpin_shared_emulator_threads(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"ac29b8e8_835efa40","line":5275,"updated":"2026-01-21 18:14:38.000000000","message":"+1","commit_id":"76d64b9cb4241b73e62b3775f13d8eddcc0cb778"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"191da12cbf094f9cd6a22db8f639cfab2c3ae58c","unresolved":false,"context_lines":[{"line_number":5327,"context_line":"                                vconfig.LibvirtConfigGuestCPUTuneIOThreadPin)"},{"line_number":5328,"context_line":"            self.assertEqual(cfg.cputune.emulatorpin.cpuset,"},{"line_number":5329,"context_line":"                            cfg.cputune.iothreadpin.cpuset)"},{"line_number":5330,"context_line":"            self.assertEqual(set([1, 2]), cfg.cputune.iothreadpin.cpuset)"},{"line_number":5331,"context_line":""},{"line_number":5332,"context_line":"    @mock.patch.object(host.Host, \"_check_machine_type\", new\u003dmock.Mock())"},{"line_number":5333,"context_line":"    def test_get_guest_config_iothreadpin_numa_topology(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"59d5b497_50dc3874","line":5330,"updated":"2026-01-21 18:14:38.000000000","message":"+1","commit_id":"76d64b9cb4241b73e62b3775f13d8eddcc0cb778"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"191da12cbf094f9cd6a22db8f639cfab2c3ae58c","unresolved":true,"context_lines":[{"line_number":5378,"context_line":"                                vconfig.LibvirtConfigGuestCPUTuneIOThreadPin)"},{"line_number":5379,"context_line":"            self.assertEqual(cfg.cputune.emulatorpin.cpuset,"},{"line_number":5380,"context_line":"                            cfg.cputune.iothreadpin.cpuset)"},{"line_number":5381,"context_line":"            self.assertEqual(set([0, 1, 2, 3]), cfg.cputune.iothreadpin.cpuset)"},{"line_number":5382,"context_line":""},{"line_number":5383,"context_line":"    def test_get_guest_config_numa_host_instance_shared_emulthreads_err("},{"line_number":5384,"context_line":"            self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fea4f4c_0f698cb3","line":5381,"updated":"2026-01-21 18:14:38.000000000","message":"one thing we didnt cover (i dont think we need to expelcity) is emulater_thread_policy\u003disolate\n\nthre we dedicated one pined core for the emulator thread and the iotread should run on that too.\n\nwith that said based on how the implemation works in driver i dont see how this could fail since we assign ethe emulator thread value to the iothread value so i think this is enough test coverage in general.","commit_id":"76d64b9cb4241b73e62b3775f13d8eddcc0cb778"}],"nova/virt/libvirt/config.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d3e0e0fba0ea523a3e53232ca10903ad8e8306a7","unresolved":true,"context_lines":[{"line_number":2645,"context_line":"        return root"},{"line_number":2646,"context_line":""},{"line_number":2647,"context_line":""},{"line_number":2648,"context_line":"class LibvirtConfigGuestCPUTuneEmulatorPin(LibvirtConfigObject):"},{"line_number":2649,"context_line":""},{"line_number":2650,"context_line":"    def __init__(self, **kwargs):"},{"line_number":2651,"context_line":"        super(LibvirtConfigGuestCPUTuneEmulatorPin, self).__init__("},{"line_number":2652,"context_line":"            root_name\u003d\"emulatorpin\","},{"line_number":2653,"context_line":"            **kwargs)"},{"line_number":2654,"context_line":""},{"line_number":2655,"context_line":"        self.cpuset \u003d None"},{"line_number":2656,"context_line":""},{"line_number":2657,"context_line":"    def format_dom(self):"},{"line_number":2658,"context_line":"        root \u003d super(LibvirtConfigGuestCPUTuneEmulatorPin, self).format_dom()"},{"line_number":2659,"context_line":""},{"line_number":2660,"context_line":"        if self.cpuset is not None:"},{"line_number":2661,"context_line":"            root.set(\"cpuset\","},{"line_number":2662,"context_line":"                     hardware.format_cpu_spec(self.cpuset))"},{"line_number":2663,"context_line":""},{"line_number":2664,"context_line":"        return root"},{"line_number":2665,"context_line":""},{"line_number":2666,"context_line":""},{"line_number":2667,"context_line":"class LibvirtConfigGuestCPUTuneVCPUSched(LibvirtConfigObject):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7987b541_23c0ef18","line":2664,"range":{"start_line":2648,"start_character":1,"end_line":2664,"end_character":19},"updated":"2025-12-04 02:39:58.000000000","message":"so you will need to duplciate this for iothreadpin","commit_id":"f9b1e2d61d99cd746f12f2283682376993d011b7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"191da12cbf094f9cd6a22db8f639cfab2c3ae58c","unresolved":false,"context_lines":[{"line_number":2645,"context_line":"        return root"},{"line_number":2646,"context_line":""},{"line_number":2647,"context_line":""},{"line_number":2648,"context_line":"class LibvirtConfigGuestCPUTuneEmulatorPin(LibvirtConfigObject):"},{"line_number":2649,"context_line":""},{"line_number":2650,"context_line":"    def __init__(self, **kwargs):"},{"line_number":2651,"context_line":"        super(LibvirtConfigGuestCPUTuneEmulatorPin, self).__init__("},{"line_number":2652,"context_line":"            root_name\u003d\"emulatorpin\","},{"line_number":2653,"context_line":"            **kwargs)"},{"line_number":2654,"context_line":""},{"line_number":2655,"context_line":"        self.cpuset \u003d None"},{"line_number":2656,"context_line":""},{"line_number":2657,"context_line":"    def format_dom(self):"},{"line_number":2658,"context_line":"        root \u003d super(LibvirtConfigGuestCPUTuneEmulatorPin, self).format_dom()"},{"line_number":2659,"context_line":""},{"line_number":2660,"context_line":"        if self.cpuset is not None:"},{"line_number":2661,"context_line":"            root.set(\"cpuset\","},{"line_number":2662,"context_line":"                     hardware.format_cpu_spec(self.cpuset))"},{"line_number":2663,"context_line":""},{"line_number":2664,"context_line":"        return root"},{"line_number":2665,"context_line":""},{"line_number":2666,"context_line":""},{"line_number":2667,"context_line":"class LibvirtConfigGuestCPUTuneVCPUSched(LibvirtConfigObject):"}],"source_content_type":"text/x-python","patch_set":7,"id":"032fe5af_b1c2f056","line":2664,"range":{"start_line":2648,"start_character":1,"end_line":2664,"end_character":19},"in_reply_to":"7987b541_23c0ef18","updated":"2026-01-21 18:14:38.000000000","message":"Done","commit_id":"f9b1e2d61d99cd746f12f2283682376993d011b7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d3e0e0fba0ea523a3e53232ca10903ad8e8306a7","unresolved":true,"context_lines":[{"line_number":2698,"context_line":"        self.quota \u003d None"},{"line_number":2699,"context_line":"        self.period \u003d None"},{"line_number":2700,"context_line":"        self.vcpupin \u003d []"},{"line_number":2701,"context_line":"        self.emulatorpin \u003d None"},{"line_number":2702,"context_line":"        self.vcpusched \u003d []"},{"line_number":2703,"context_line":""},{"line_number":2704,"context_line":"    def format_dom(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"763561fa_dfb4f516","line":2701,"updated":"2025-12-04 02:39:58.000000000","message":"and add iothreadpin here","commit_id":"f9b1e2d61d99cd746f12f2283682376993d011b7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"191da12cbf094f9cd6a22db8f639cfab2c3ae58c","unresolved":false,"context_lines":[{"line_number":2698,"context_line":"        self.quota \u003d None"},{"line_number":2699,"context_line":"        self.period \u003d None"},{"line_number":2700,"context_line":"        self.vcpupin \u003d []"},{"line_number":2701,"context_line":"        self.emulatorpin \u003d None"},{"line_number":2702,"context_line":"        self.vcpusched \u003d []"},{"line_number":2703,"context_line":""},{"line_number":2704,"context_line":"    def format_dom(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"4689d17f_cbdbeadf","line":2701,"in_reply_to":"763561fa_dfb4f516","updated":"2026-01-21 18:14:38.000000000","message":"Done","commit_id":"f9b1e2d61d99cd746f12f2283682376993d011b7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d3e0e0fba0ea523a3e53232ca10903ad8e8306a7","unresolved":true,"context_lines":[{"line_number":2712,"context_line":"            root.append(self._text_node(\"period\", str(self.period)))"},{"line_number":2713,"context_line":""},{"line_number":2714,"context_line":"        if self.emulatorpin is not None:"},{"line_number":2715,"context_line":"            root.append(self.emulatorpin.format_dom())"},{"line_number":2716,"context_line":"        for vcpu in self.vcpupin:"},{"line_number":2717,"context_line":"            root.append(vcpu.format_dom())"},{"line_number":2718,"context_line":"        for sched in self.vcpusched:"}],"source_content_type":"text/x-python","patch_set":7,"id":"6e5aa254_5b2056b8","line":2715,"updated":"2025-12-04 02:39:58.000000000","message":"and here\n\nand make sure that iothreadpin and emulator thread pin are set the same everyhere emulator pin is set today.\n\nif we dont do that then the iothread will float over the realtime and pinned cpu cores we we do not want.","commit_id":"f9b1e2d61d99cd746f12f2283682376993d011b7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"53463d883e9bba0435b186eaf2e06fa8f96a96f1","unresolved":true,"context_lines":[{"line_number":2712,"context_line":"            root.append(self._text_node(\"period\", str(self.period)))"},{"line_number":2713,"context_line":""},{"line_number":2714,"context_line":"        if self.emulatorpin is not None:"},{"line_number":2715,"context_line":"            root.append(self.emulatorpin.format_dom())"},{"line_number":2716,"context_line":"        for vcpu in self.vcpupin:"},{"line_number":2717,"context_line":"            root.append(vcpu.format_dom())"},{"line_number":2718,"context_line":"        for sched in self.vcpusched:"}],"source_content_type":"text/x-python","patch_set":7,"id":"6f211224_e9bd20cd","line":2715,"in_reply_to":"6e5aa254_5b2056b8","updated":"2026-01-16 15:35:54.000000000","message":"I agree withe this to keep supporting the realtime case.","commit_id":"f9b1e2d61d99cd746f12f2283682376993d011b7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"191da12cbf094f9cd6a22db8f639cfab2c3ae58c","unresolved":false,"context_lines":[{"line_number":2712,"context_line":"            root.append(self._text_node(\"period\", str(self.period)))"},{"line_number":2713,"context_line":""},{"line_number":2714,"context_line":"        if self.emulatorpin is not None:"},{"line_number":2715,"context_line":"            root.append(self.emulatorpin.format_dom())"},{"line_number":2716,"context_line":"        for vcpu in self.vcpupin:"},{"line_number":2717,"context_line":"            root.append(vcpu.format_dom())"},{"line_number":2718,"context_line":"        for sched in self.vcpusched:"}],"source_content_type":"text/x-python","patch_set":7,"id":"8a39dfe4_41344a94","line":2715,"in_reply_to":"6f211224_e9bd20cd","updated":"2026-01-21 18:14:38.000000000","message":"Done","commit_id":"f9b1e2d61d99cd746f12f2283682376993d011b7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d3e0e0fba0ea523a3e53232ca10903ad8e8306a7","unresolved":true,"context_lines":[{"line_number":3273,"context_line":""},{"line_number":3274,"context_line":"        # Set 1 IO thread per VM for all instances."},{"line_number":3275,"context_line":"        if self.iothreads is not None:"},{"line_number":3276,"context_line":"            root.append(self._text_node(\"iothreads\", str(self.iothreads)))"},{"line_number":3277,"context_line":""},{"line_number":3278,"context_line":"        self._format_devices(root)"},{"line_number":3279,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"85b2bb7c_e5e5d10a","line":3276,"updated":"2025-12-04 02:39:58.000000000","message":"+1\n\nlooking at the defition of iothreadpin\n\n```\niothreadpin\n\n    The optional iothreadpin element specifies which of host physical CPUs the IOThreads will be pinned to. If this is omitted and attribute cpuset of element vcpu is not specified, the IOThreads are pinned to all the physical CPUs by default. There are two required attributes, the attribute iothread specifies the IOThread ID and the attribute cpuset specifying which physical CPUs to pin to. See the IOThreads Allocation section documenting valid values of iothread. Since 1.2.9\n```\n\nthe default behvaior will work for floating vms\n\nif the vm has cpu pinning we shoudl set \n\niothreadpin to the same value as emulatorpin","commit_id":"f9b1e2d61d99cd746f12f2283682376993d011b7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"191da12cbf094f9cd6a22db8f639cfab2c3ae58c","unresolved":false,"context_lines":[{"line_number":3273,"context_line":""},{"line_number":3274,"context_line":"        # Set 1 IO thread per VM for all instances."},{"line_number":3275,"context_line":"        if self.iothreads is not None:"},{"line_number":3276,"context_line":"            root.append(self._text_node(\"iothreads\", str(self.iothreads)))"},{"line_number":3277,"context_line":""},{"line_number":3278,"context_line":"        self._format_devices(root)"},{"line_number":3279,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"694e9a0f_bd4581b5","line":3276,"in_reply_to":"85b2bb7c_e5e5d10a","updated":"2026-01-21 18:14:38.000000000","message":"Done","commit_id":"f9b1e2d61d99cd746f12f2283682376993d011b7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"53463d883e9bba0435b186eaf2e06fa8f96a96f1","unresolved":true,"context_lines":[{"line_number":3417,"context_line":"                        self.add_perf_event(p.get(\u0027name\u0027))"},{"line_number":3418,"context_line":"            elif c.tag \u003d\u003d \u0027os\u0027:"},{"line_number":3419,"context_line":"                self._parse_os(c)"},{"line_number":3420,"context_line":"            elif c.tag \u003d\u003d \u0027iothreds\u0027:"},{"line_number":3421,"context_line":"                self.iothreads \u003d int(c.text)"},{"line_number":3422,"context_line":"            else:"},{"line_number":3423,"context_line":"                self._parse_basic_props(c)"}],"source_content_type":"text/x-python","patch_set":9,"id":"26a92bc0_26419a24","line":3420,"updated":"2026-01-16 15:35:54.000000000","message":"this is a bug, the field is called \"iothreads\" on \"iothreds\". Do we miss some test coverage to catch this?","commit_id":"333230d3084aefdc7968efd1bd1cfa635244f7e9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4b4b5289ec24ea20e887908b462570cae82dee9c","unresolved":true,"context_lines":[{"line_number":3417,"context_line":"                        self.add_perf_event(p.get(\u0027name\u0027))"},{"line_number":3418,"context_line":"            elif c.tag \u003d\u003d \u0027os\u0027:"},{"line_number":3419,"context_line":"                self._parse_os(c)"},{"line_number":3420,"context_line":"            elif c.tag \u003d\u003d \u0027iothreds\u0027:"},{"line_number":3421,"context_line":"                self.iothreads \u003d int(c.text)"},{"line_number":3422,"context_line":"            else:"},{"line_number":3423,"context_line":"                self._parse_basic_props(c)"}],"source_content_type":"text/x-python","patch_set":9,"id":"b0a26a86_6f3eba31","line":3420,"in_reply_to":"26a92bc0_26419a24","updated":"2026-01-16 16:17:01.000000000","message":"so this is in the parse_dom codepath which we dont actully need for anythign today.\n\nas in we are not reading back the io thread form the xml to use it for anything\n\nso either we are missing test coverage or we have bad data in the fake xml we are parsing in the the unit tests.\n\nlater ya this is not tested in teh sense that we have no assert that we get the expecte value in the object that is built form the xml for the parse_dom function related to this change.","commit_id":"333230d3084aefdc7968efd1bd1cfa635244f7e9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"191da12cbf094f9cd6a22db8f639cfab2c3ae58c","unresolved":false,"context_lines":[{"line_number":3417,"context_line":"                        self.add_perf_event(p.get(\u0027name\u0027))"},{"line_number":3418,"context_line":"            elif c.tag \u003d\u003d \u0027os\u0027:"},{"line_number":3419,"context_line":"                self._parse_os(c)"},{"line_number":3420,"context_line":"            elif c.tag \u003d\u003d \u0027iothreds\u0027:"},{"line_number":3421,"context_line":"                self.iothreads \u003d int(c.text)"},{"line_number":3422,"context_line":"            else:"},{"line_number":3423,"context_line":"                self._parse_basic_props(c)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f57047f_08b112ca","line":3420,"in_reply_to":"5f562937_4d2133c9","updated":"2026-01-21 18:14:38.000000000","message":"Done","commit_id":"333230d3084aefdc7968efd1bd1cfa635244f7e9"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"06c862f880ba206c9b2b6efc20b90c7c63734a4c","unresolved":true,"context_lines":[{"line_number":3417,"context_line":"                        self.add_perf_event(p.get(\u0027name\u0027))"},{"line_number":3418,"context_line":"            elif c.tag \u003d\u003d \u0027os\u0027:"},{"line_number":3419,"context_line":"                self._parse_os(c)"},{"line_number":3420,"context_line":"            elif c.tag \u003d\u003d \u0027iothreds\u0027:"},{"line_number":3421,"context_line":"                self.iothreads \u003d int(c.text)"},{"line_number":3422,"context_line":"            else:"},{"line_number":3423,"context_line":"                self._parse_basic_props(c)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f562937_4d2133c9","line":3420,"in_reply_to":"b0a26a86_6f3eba31","updated":"2026-01-19 15:18:18.000000000","message":"my bad .... 🤦\nI added a small test libvir/test_config.py that at least catches my spelling mistakes","commit_id":"333230d3084aefdc7968efd1bd1cfa635244f7e9"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d3e0e0fba0ea523a3e53232ca10903ad8e8306a7","unresolved":true,"context_lines":[{"line_number":578,"context_line":"        # See also nova.virt.libvirt.cpu.api.API.core()."},{"line_number":579,"context_line":"        self.cpu_api \u003d libvirt_cpu.API()"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"        self.iothreads \u003d 0"},{"line_number":582,"context_line":""},{"line_number":583,"context_line":"    def _discover_vpmems(self, vpmem_conf\u003dNone):"},{"line_number":584,"context_line":"        \"\"\"Discover vpmems on host and configuration."}],"source_content_type":"text/x-python","patch_set":7,"id":"d9953a77_33e5ce78","line":581,"range":{"start_line":581,"start_character":7,"end_line":581,"end_character":26},"updated":"2025-12-04 02:39:58.000000000","message":"we agreed to alwasy set this to 1","commit_id":"f9b1e2d61d99cd746f12f2283682376993d011b7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"191da12cbf094f9cd6a22db8f639cfab2c3ae58c","unresolved":false,"context_lines":[{"line_number":578,"context_line":"        # See also nova.virt.libvirt.cpu.api.API.core()."},{"line_number":579,"context_line":"        self.cpu_api \u003d libvirt_cpu.API()"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"        self.iothreads \u003d 0"},{"line_number":582,"context_line":""},{"line_number":583,"context_line":"    def _discover_vpmems(self, vpmem_conf\u003dNone):"},{"line_number":584,"context_line":"        \"\"\"Discover vpmems on host and configuration."}],"source_content_type":"text/x-python","patch_set":7,"id":"1220460a_3d23d04d","line":581,"range":{"start_line":581,"start_character":7,"end_line":581,"end_character":26},"in_reply_to":"d9953a77_33e5ce78","updated":"2026-01-21 18:14:38.000000000","message":"Done","commit_id":"f9b1e2d61d99cd746f12f2283682376993d011b7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d3e0e0fba0ea523a3e53232ca10903ad8e8306a7","unresolved":true,"context_lines":[{"line_number":1269,"context_line":"                    \"cpu_dedicated_set\u0027 options. Unset \u0027reserved_host_cpus\u0027.\")"},{"line_number":1270,"context_line":"                raise exception.InvalidConfiguration(msg)"},{"line_number":1271,"context_line":""},{"line_number":1272,"context_line":"            if cpu_dedicated_set and not cpu_shared_set:"},{"line_number":1273,"context_line":"                self.iothreads \u003d 0"},{"line_number":1274,"context_line":"            else:"},{"line_number":1275,"context_line":"                self.iothreads \u003d 1"},{"line_number":1276,"context_line":""},{"line_number":1277,"context_line":"            return"},{"line_number":1278,"context_line":""},{"line_number":1279,"context_line":"        if cpu_dedicated_set:"}],"source_content_type":"text/x-python","patch_set":7,"id":"b44f3049_1d3fa49a","line":1276,"range":{"start_line":1272,"start_character":11,"end_line":1276,"end_character":1},"updated":"2025-12-04 02:39:58.000000000","message":"it shoudl be 1 in both cases the reason we set iothreadpin to emulator thrad pin is so that when you have cpu pinning thre isnt a conflict","commit_id":"f9b1e2d61d99cd746f12f2283682376993d011b7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"191da12cbf094f9cd6a22db8f639cfab2c3ae58c","unresolved":false,"context_lines":[{"line_number":1269,"context_line":"                    \"cpu_dedicated_set\u0027 options. Unset \u0027reserved_host_cpus\u0027.\")"},{"line_number":1270,"context_line":"                raise exception.InvalidConfiguration(msg)"},{"line_number":1271,"context_line":""},{"line_number":1272,"context_line":"            if cpu_dedicated_set and not cpu_shared_set:"},{"line_number":1273,"context_line":"                self.iothreads \u003d 0"},{"line_number":1274,"context_line":"            else:"},{"line_number":1275,"context_line":"                self.iothreads \u003d 1"},{"line_number":1276,"context_line":""},{"line_number":1277,"context_line":"            return"},{"line_number":1278,"context_line":""},{"line_number":1279,"context_line":"        if cpu_dedicated_set:"}],"source_content_type":"text/x-python","patch_set":7,"id":"c5a3ce4e_3f51be2e","line":1276,"range":{"start_line":1272,"start_character":11,"end_line":1276,"end_character":1},"in_reply_to":"b44f3049_1d3fa49a","updated":"2026-01-21 18:14:38.000000000","message":"Done","commit_id":"f9b1e2d61d99cd746f12f2283682376993d011b7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fc2ef6287cda88f028d1d3757c9aaf66a7dc2866","unresolved":true,"context_lines":[{"line_number":559,"context_line":"        # See also nova.virt.libvirt.cpu.api.API.core()."},{"line_number":560,"context_line":"        self.cpu_api \u003d libvirt_cpu.API()"},{"line_number":561,"context_line":""},{"line_number":562,"context_line":"        self.iothreads \u003d 1"},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"    def _discover_vpmems(self, vpmem_conf\u003dNone):"},{"line_number":565,"context_line":"        \"\"\"Discover vpmems on host and configuration."}],"source_content_type":"text/x-python","patch_set":8,"id":"92a0f3e1_e83b444d","line":562,"updated":"2025-12-16 17:48:22.000000000","message":"i dont think we want to do this here","commit_id":"88b00ee2a38abebcf184db31dc936315fe4a5a04"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1391d81be39406a32cc576357efd195a8bf7e336","unresolved":false,"context_lines":[{"line_number":559,"context_line":"        # See also nova.virt.libvirt.cpu.api.API.core()."},{"line_number":560,"context_line":"        self.cpu_api \u003d libvirt_cpu.API()"},{"line_number":561,"context_line":""},{"line_number":562,"context_line":"        self.iothreads \u003d 1"},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"    def _discover_vpmems(self, vpmem_conf\u003dNone):"},{"line_number":565,"context_line":"        \"\"\"Discover vpmems on host and configuration."}],"source_content_type":"text/x-python","patch_set":8,"id":"f71d8e62_8b593f08","line":562,"in_reply_to":"92a0f3e1_e83b444d","updated":"2026-01-16 14:42:39.000000000","message":"Acknowledged","commit_id":"88b00ee2a38abebcf184db31dc936315fe4a5a04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fc2ef6287cda88f028d1d3757c9aaf66a7dc2866","unresolved":true,"context_lines":[{"line_number":1250,"context_line":"                    \"cpu_dedicated_set\u0027 options. Unset \u0027reserved_host_cpus\u0027.\")"},{"line_number":1251,"context_line":"                raise exception.InvalidConfiguration(msg)"},{"line_number":1252,"context_line":""},{"line_number":1253,"context_line":"            self.iothreads \u003d 1"},{"line_number":1254,"context_line":""},{"line_number":1255,"context_line":"            return"},{"line_number":1256,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"a1bc031f_0c6f4c4a","line":1253,"updated":"2025-12-16 17:48:22.000000000","message":"this is not required if we are seting it in `__init__` but i think we can remove this entirly","commit_id":"88b00ee2a38abebcf184db31dc936315fe4a5a04"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1391d81be39406a32cc576357efd195a8bf7e336","unresolved":false,"context_lines":[{"line_number":1250,"context_line":"                    \"cpu_dedicated_set\u0027 options. Unset \u0027reserved_host_cpus\u0027.\")"},{"line_number":1251,"context_line":"                raise exception.InvalidConfiguration(msg)"},{"line_number":1252,"context_line":""},{"line_number":1253,"context_line":"            self.iothreads \u003d 1"},{"line_number":1254,"context_line":""},{"line_number":1255,"context_line":"            return"},{"line_number":1256,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"08a4536e_4f5668e1","line":1253,"in_reply_to":"a1bc031f_0c6f4c4a","updated":"2026-01-16 14:42:39.000000000","message":"Acknowledged","commit_id":"88b00ee2a38abebcf184db31dc936315fe4a5a04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fc2ef6287cda88f028d1d3757c9aaf66a7dc2866","unresolved":true,"context_lines":[{"line_number":6525,"context_line":"                    cpu, object_numa_cell, vcpus_rt,"},{"line_number":6526,"context_line":"                    emulator_threads_policy, pin_cpuset)"},{"line_number":6527,"context_line":"                guest_cpu_tune.emulatorpin.cpuset.update(emu_pin_cpuset)"},{"line_number":6528,"context_line":"                guest_cpu_tune.iothreadpin.cpuset.update(emu_pin_cpuset)"},{"line_number":6529,"context_line":""},{"line_number":6530,"context_line":"        # TODO(berrange) When the guest has \u003e1 NUMA node, it will"},{"line_number":6531,"context_line":"        # span multiple host NUMA nodes. By pinning emulator threads"}],"source_content_type":"text/x-python","patch_set":8,"id":"1288ce5f_1d54364f","line":6528,"updated":"2025-12-16 17:48:22.000000000","message":"we shoudl add a comment ot make it clear that its intentional that we use emu_pin_cpuset for both emulatorpin and iothreadpin\n\nthis is correct but we should add a note so someone does not think its a bug","commit_id":"88b00ee2a38abebcf184db31dc936315fe4a5a04"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1391d81be39406a32cc576357efd195a8bf7e336","unresolved":false,"context_lines":[{"line_number":6525,"context_line":"                    cpu, object_numa_cell, vcpus_rt,"},{"line_number":6526,"context_line":"                    emulator_threads_policy, pin_cpuset)"},{"line_number":6527,"context_line":"                guest_cpu_tune.emulatorpin.cpuset.update(emu_pin_cpuset)"},{"line_number":6528,"context_line":"                guest_cpu_tune.iothreadpin.cpuset.update(emu_pin_cpuset)"},{"line_number":6529,"context_line":""},{"line_number":6530,"context_line":"        # TODO(berrange) When the guest has \u003e1 NUMA node, it will"},{"line_number":6531,"context_line":"        # span multiple host NUMA nodes. By pinning emulator threads"}],"source_content_type":"text/x-python","patch_set":8,"id":"bc1df1fd_55cc1e4d","line":6528,"in_reply_to":"1288ce5f_1d54364f","updated":"2026-01-16 14:42:39.000000000","message":"Done","commit_id":"88b00ee2a38abebcf184db31dc936315fe4a5a04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fc2ef6287cda88f028d1d3757c9aaf66a7dc2866","unresolved":true,"context_lines":[{"line_number":7556,"context_line":"        self._set_features(guest, instance.os_type, image_meta, flavor)"},{"line_number":7557,"context_line":"        self._set_clock(guest, instance.os_type, image_meta)"},{"line_number":7558,"context_line":""},{"line_number":7559,"context_line":"        guest.iothreads \u003d self.iothreads"},{"line_number":7560,"context_line":""},{"line_number":7561,"context_line":"        storage_configs \u003d self._get_guest_storage_config(context,"},{"line_number":7562,"context_line":"                instance, image_meta, disk_info, rescue, block_device_info,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9be8be8f_e058b3fc","line":7559,"updated":"2025-12-16 17:48:22.000000000","message":"we shudl jsut hard code it to 1 here","commit_id":"88b00ee2a38abebcf184db31dc936315fe4a5a04"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1391d81be39406a32cc576357efd195a8bf7e336","unresolved":false,"context_lines":[{"line_number":7556,"context_line":"        self._set_features(guest, instance.os_type, image_meta, flavor)"},{"line_number":7557,"context_line":"        self._set_clock(guest, instance.os_type, image_meta)"},{"line_number":7558,"context_line":""},{"line_number":7559,"context_line":"        guest.iothreads \u003d self.iothreads"},{"line_number":7560,"context_line":""},{"line_number":7561,"context_line":"        storage_configs \u003d self._get_guest_storage_config(context,"},{"line_number":7562,"context_line":"                instance, image_meta, disk_info, rescue, block_device_info,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3587c31d_60fc4da5","line":7559,"in_reply_to":"9be8be8f_e058b3fc","updated":"2026-01-16 14:42:39.000000000","message":"Done","commit_id":"88b00ee2a38abebcf184db31dc936315fe4a5a04"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"53463d883e9bba0435b186eaf2e06fa8f96a96f1","unresolved":true,"context_lines":[{"line_number":6522,"context_line":"                    emulator_threads_policy, pin_cpuset)"},{"line_number":6523,"context_line":"                # Note(lajoskatona): Here we set emu_pin_cpuset for both"},{"line_number":6524,"context_line":"                # emulatorpin and iothreadpin, this is makes sure that"},{"line_number":6525,"context_line":"                # all guest has 1 IOthread"},{"line_number":6526,"context_line":"                guest_cpu_tune.emulatorpin.cpuset.update(emu_pin_cpuset)"},{"line_number":6527,"context_line":"                guest_cpu_tune.iothreadpin.cpuset.update(emu_pin_cpuset)"},{"line_number":6528,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"d281ff97_5c599a5c","line":6525,"updated":"2026-01-16 15:35:54.000000000","message":"```\n    # emulatorpin and iothreadpin, this is makes sure that\n    # all guest has 1 IOthread\n```\n\nI would say\n```\n   # ... this makes sure that both emulator and iothreads are pinned to cores other than the instance\u0027s cores to support realtime cpus.\n```","commit_id":"333230d3084aefdc7968efd1bd1cfa635244f7e9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"191da12cbf094f9cd6a22db8f639cfab2c3ae58c","unresolved":false,"context_lines":[{"line_number":6522,"context_line":"                    emulator_threads_policy, pin_cpuset)"},{"line_number":6523,"context_line":"                # Note(lajoskatona): Here we set emu_pin_cpuset for both"},{"line_number":6524,"context_line":"                # emulatorpin and iothreadpin, this is makes sure that"},{"line_number":6525,"context_line":"                # all guest has 1 IOthread"},{"line_number":6526,"context_line":"                guest_cpu_tune.emulatorpin.cpuset.update(emu_pin_cpuset)"},{"line_number":6527,"context_line":"                guest_cpu_tune.iothreadpin.cpuset.update(emu_pin_cpuset)"},{"line_number":6528,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"2d1bddfe_cbb5f105","line":6525,"in_reply_to":"afcdccf8_f4388334","updated":"2026-01-21 18:14:38.000000000","message":"Done","commit_id":"333230d3084aefdc7968efd1bd1cfa635244f7e9"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"06c862f880ba206c9b2b6efc20b90c7c63734a4c","unresolved":true,"context_lines":[{"line_number":6522,"context_line":"                    emulator_threads_policy, pin_cpuset)"},{"line_number":6523,"context_line":"                # Note(lajoskatona): Here we set emu_pin_cpuset for both"},{"line_number":6524,"context_line":"                # emulatorpin and iothreadpin, this is makes sure that"},{"line_number":6525,"context_line":"                # all guest has 1 IOthread"},{"line_number":6526,"context_line":"                guest_cpu_tune.emulatorpin.cpuset.update(emu_pin_cpuset)"},{"line_number":6527,"context_line":"                guest_cpu_tune.iothreadpin.cpuset.update(emu_pin_cpuset)"},{"line_number":6528,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"afcdccf8_f4388334","line":6525,"in_reply_to":"d281ff97_5c599a5c","updated":"2026-01-19 15:18:18.000000000","message":"thanks","commit_id":"333230d3084aefdc7968efd1bd1cfa635244f7e9"}]}
