)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bc9fd046dea7d5ded14d191116e433db23b0bcae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"c7d76849_f0ad37ce","updated":"2025-10-07 09:57:38.000000000","message":"I moved all of the comments we agreed on to the parent. Except the copy problem. Without a reproducer test I\u0027m not support happy to just add that change. If you have a reproducer then let me know otherwise I will try to make one","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8517d98118b9cff4a57f0d8c5beb0f3beba8955f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ebe49fee_3be82c77","updated":"2025-10-03 19:01:20.000000000","message":"This is partly just some note/enhachemts form my local testing of gibis poc with the help of claude.\n\ni had it do several passes of analsys fo gibis patch, the bug report and the related code but hwen i asked it to consoldite the 6 docuemnt it produced into 1 it was a bit over eger and deleted the orginals. so the detail reports are unfortunetly gone. i identifed one possibel regression which this patch fixes and suggeded the loging enhancemnd and impovemnts to the config option help text which im 50:50 on i see where its going but unsure if the verbosity trade off is worth it.\n\nso if we dont use any of this that fine i just wanted to push this somewhere before i disable rof rthe weekend properly.","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c977896c70d61664cc24c58b59b4cd0eacf61866","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"4dd964da_aeb61867","updated":"2025-10-04 10:14:34.000000000","message":"o/ Do you want to keep this as a separate commit top of mine independently improving it further or it is more of a set of suggestions to me to take things from it and squash back into the parent?\n(Both works for me)","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5ec20c6309849356e5aa6981b00fea4bfa1885cf","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"d36dd8ae_a1a285b9","in_reply_to":"4dd964da_aeb61867","updated":"2025-10-06 10:28:11.000000000","message":"either is fine i dint really want to mess with your patch but wanted to als push thos somehwer non local to have a discussion so i put it as a seperate patch on top. i was thinking maybe pull any bits we found useful into your but we can leave it on top if you prefer.\n\nwhat i can do is strip out the bits that we dont feel are useful, (the loging and the posible regresion and just keep the extra text and a very minimal change to the config option text. you can then squash it or we can keep ti as a seperate patch.\n\nill tweak the 32*32 case to 750 candiates to make it just a little faster in ci","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"}],"placement/conf/workarounds.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8517d98118b9cff4a57f0d8c5beb0f3beba8955f","unresolved":true,"context_lines":[{"line_number":77,"context_line":"* ``[placement]allocation_candidates_generation_strategy``: Use \u0027breadth-first\u0027"},{"line_number":78,"context_line":"  with this option to balance candidates across compute nodes."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"For more information, see the bug report:"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":".. _bug #2126751: https://bugs.launchpad.net/placement/+bug/2126751"},{"line_number":83,"context_line":"\"\"\"),"}],"source_content_type":"text/x-python","patch_set":1,"id":"ef006dcc_9502fabe","line":80,"updated":"2025-10-03 19:01:20.000000000","message":"this is now two verbose and it does not really follw the same style as the other option but ther might be somethign in between. that might be useful","commit_id":"85f3a7803b774e473bad8d01c870cdb024b41dcd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5ec20c6309849356e5aa6981b00fea4bfa1885cf","unresolved":true,"context_lines":[{"line_number":77,"context_line":"* ``[placement]allocation_candidates_generation_strategy``: Use \u0027breadth-first\u0027"},{"line_number":78,"context_line":"  with this option to balance candidates across compute nodes."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"For more information, see the bug report:"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":".. _bug #2126751: https://bugs.launchpad.net/placement/+bug/2126751"},{"line_number":83,"context_line":"\"\"\"),"}],"source_content_type":"text/x-python","patch_set":1,"id":"efee68ee_840e9c1f","line":80,"in_reply_to":"ad7b8860_e3020b76","updated":"2025-10-06 10:28:11.000000000","message":"ya so the only thing i think i woudl keep is the whitespace fixes adn the \n\n`when (not )to enable` sections","commit_id":"85f3a7803b774e473bad8d01c870cdb024b41dcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c977896c70d61664cc24c58b59b4cd0eacf61866","unresolved":true,"context_lines":[{"line_number":77,"context_line":"* ``[placement]allocation_candidates_generation_strategy``: Use \u0027breadth-first\u0027"},{"line_number":78,"context_line":"  with this option to balance candidates across compute nodes."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"For more information, see the bug report:"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":".. _bug #2126751: https://bugs.launchpad.net/placement/+bug/2126751"},{"line_number":83,"context_line":"\"\"\"),"}],"source_content_type":"text/x-python","patch_set":1,"id":"ad7b8860_e3020b76","line":80,"in_reply_to":"ef006dcc_9502fabe","updated":"2025-10-04 10:14:34.000000000","message":"I agree this is verbose, some of the details probably more belong to the developer doc like actual scale figures, and some of the text is just reiterating the same things multiple times (LLM?) that we can fold in or remove.","commit_id":"85f3a7803b774e473bad8d01c870cdb024b41dcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bc9fd046dea7d5ded14d191116e433db23b0bcae","unresolved":false,"context_lines":[{"line_number":77,"context_line":"* ``[placement]allocation_candidates_generation_strategy``: Use \u0027breadth-first\u0027"},{"line_number":78,"context_line":"  with this option to balance candidates across compute nodes."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"For more information, see the bug report:"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":".. _bug #2126751: https://bugs.launchpad.net/placement/+bug/2126751"},{"line_number":83,"context_line":"\"\"\"),"}],"source_content_type":"text/x-python","patch_set":1,"id":"cf59460a_18ba2f20","line":80,"in_reply_to":"efee68ee_840e9c1f","updated":"2025-10-07 09:57:38.000000000","message":"Done","commit_id":"85f3a7803b774e473bad8d01c870cdb024b41dcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c977896c70d61664cc24c58b59b4cd0eacf61866","unresolved":true,"context_lines":[{"line_number":36,"context_line":"when generating allocation candidates for requests with many granular resource"},{"line_number":37,"context_line":"groups. It is specifically designed for SRIOV and vGPU workloads."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"WHEN TO ENABLE THIS OPTION:"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    * You have compute nodes with 8 or more child resource providers"},{"line_number":42,"context_line":"      (e.g., SRIOV Physical Functions, vGPU devices)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bc9667da_ba7f4e85","line":39,"updated":"2025-10-04 10:14:34.000000000","message":"I would rather not use all capital. I think we can use restructured text bold, or just have a normal sentence and whitespace to make section headers","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bc9fd046dea7d5ded14d191116e433db23b0bcae","unresolved":false,"context_lines":[{"line_number":36,"context_line":"when generating allocation candidates for requests with many granular resource"},{"line_number":37,"context_line":"groups. It is specifically designed for SRIOV and vGPU workloads."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"WHEN TO ENABLE THIS OPTION:"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    * You have compute nodes with 8 or more child resource providers"},{"line_number":42,"context_line":"      (e.g., SRIOV Physical Functions, vGPU devices)"}],"source_content_type":"text/x-python","patch_set":2,"id":"94977380_7e33160c","line":39,"in_reply_to":"b9bd2f85_ea742c37","updated":"2025-10-07 09:57:38.000000000","message":"Done","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5ec20c6309849356e5aa6981b00fea4bfa1885cf","unresolved":true,"context_lines":[{"line_number":36,"context_line":"when generating allocation candidates for requests with many granular resource"},{"line_number":37,"context_line":"groups. It is specifically designed for SRIOV and vGPU workloads."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"WHEN TO ENABLE THIS OPTION:"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    * You have compute nodes with 8 or more child resource providers"},{"line_number":42,"context_line":"      (e.g., SRIOV Physical Functions, vGPU devices)"}],"source_content_type":"text/x-python","patch_set":2,"id":"b9bd2f85_ea742c37","line":39,"in_reply_to":"bc9667da_ba7f4e85","updated":"2025-10-06 10:28:11.000000000","message":"ya same to me this is too inconsitent with the formating we are using else where to use as is","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c977896c70d61664cc24c58b59b4cd0eacf61866","unresolved":true,"context_lines":[{"line_number":42,"context_line":"      (e.g., SRIOV Physical Functions, vGPU devices)"},{"line_number":43,"context_line":"    * Each child provider has small capacity (typically 1 unit per resource)"},{"line_number":44,"context_line":"    * VM requests specify 8 or more independent resource groups"},{"line_number":45,"context_line":"      (e.g., a VM requesting 8 different SRIOV VFs)"},{"line_number":46,"context_line":"    * You observe GET /allocation_candidates queries taking more than 5 seconds"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"PERFORMANCE CHARACTERISTICS:"}],"source_content_type":"text/x-python","patch_set":2,"id":"b6854a21_87ee0930","line":45,"range":{"start_line":45,"start_character":31,"end_line":45,"end_character":40},"updated":"2025-10-04 10:14:34.000000000","message":"I don\u0027t think it needs to be different.","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bc9fd046dea7d5ded14d191116e433db23b0bcae","unresolved":false,"context_lines":[{"line_number":42,"context_line":"      (e.g., SRIOV Physical Functions, vGPU devices)"},{"line_number":43,"context_line":"    * Each child provider has small capacity (typically 1 unit per resource)"},{"line_number":44,"context_line":"    * VM requests specify 8 or more independent resource groups"},{"line_number":45,"context_line":"      (e.g., a VM requesting 8 different SRIOV VFs)"},{"line_number":46,"context_line":"    * You observe GET /allocation_candidates queries taking more than 5 seconds"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"PERFORMANCE CHARACTERISTICS:"}],"source_content_type":"text/x-python","patch_set":2,"id":"56651807_162e8e66","line":45,"range":{"start_line":45,"start_character":31,"end_line":45,"end_character":40},"in_reply_to":"8a263188_f02b3d5e","updated":"2025-10-07 09:57:38.000000000","message":"Done","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5ec20c6309849356e5aa6981b00fea4bfa1885cf","unresolved":true,"context_lines":[{"line_number":42,"context_line":"      (e.g., SRIOV Physical Functions, vGPU devices)"},{"line_number":43,"context_line":"    * Each child provider has small capacity (typically 1 unit per resource)"},{"line_number":44,"context_line":"    * VM requests specify 8 or more independent resource groups"},{"line_number":45,"context_line":"      (e.g., a VM requesting 8 different SRIOV VFs)"},{"line_number":46,"context_line":"    * You observe GET /allocation_candidates queries taking more than 5 seconds"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"PERFORMANCE CHARACTERISTICS:"}],"source_content_type":"text/x-python","patch_set":2,"id":"8a263188_f02b3d5e","line":45,"range":{"start_line":45,"start_character":31,"end_line":45,"end_character":40},"in_reply_to":"b6854a21_87ee0930","updated":"2025-10-06 10:28:11.000000000","message":"right it does not","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c977896c70d61664cc24c58b59b4cd0eacf61866","unresolved":true,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"PERFORMANCE CHARACTERISTICS:"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    * Speedup: 6x to 600x for typical SRIOV/vGPU workloads (8-21 groups)"},{"line_number":51,"context_line":"    * Overhead: May be 2-3x slower for requests with fewer than 4 groups"},{"line_number":52,"context_line":"    * Memory: Minimal additional memory usage"},{"line_number":53,"context_line":"    * Scaling: Works best when number of groups is close to number of providers"}],"source_content_type":"text/x-python","patch_set":2,"id":"19188251_788f7a96","line":50,"updated":"2025-10-04 10:14:34.000000000","message":"Unfortunately I had no patient to run any of the bigger tests without the fix to completion so I don\u0027t know the baseline timing. But those will be the interesting numbers not what we can actually measure for small scale.\n\nOverall I think the human deployer does not care about the actual speedup, more like what are the tuning they need to make the workload work.","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5ec20c6309849356e5aa6981b00fea4bfa1885cf","unresolved":true,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"PERFORMANCE CHARACTERISTICS:"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    * Speedup: 6x to 600x for typical SRIOV/vGPU workloads (8-21 groups)"},{"line_number":51,"context_line":"    * Overhead: May be 2-3x slower for requests with fewer than 4 groups"},{"line_number":52,"context_line":"    * Memory: Minimal additional memory usage"},{"line_number":53,"context_line":"    * Scaling: Works best when number of groups is close to number of providers"}],"source_content_type":"text/x-python","patch_set":2,"id":"dc96afe3_d6f6eccd","line":50,"in_reply_to":"19188251_788f7a96","updated":"2025-10-06 10:28:11.000000000","message":"same i think the first tow sections are not really useful for the target audicnce","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bc9fd046dea7d5ded14d191116e433db23b0bcae","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"PERFORMANCE CHARACTERISTICS:"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    * Speedup: 6x to 600x for typical SRIOV/vGPU workloads (8-21 groups)"},{"line_number":51,"context_line":"    * Overhead: May be 2-3x slower for requests with fewer than 4 groups"},{"line_number":52,"context_line":"    * Memory: Minimal additional memory usage"},{"line_number":53,"context_line":"    * Scaling: Works best when number of groups is close to number of providers"}],"source_content_type":"text/x-python","patch_set":2,"id":"eeae3f83_6880a441","line":50,"in_reply_to":"dc96afe3_d6f6eccd","updated":"2025-10-07 09:57:38.000000000","message":"Done","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c977896c70d61664cc24c58b59b4cd0eacf61866","unresolved":true,"context_lines":[{"line_number":48,"context_line":"PERFORMANCE CHARACTERISTICS:"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    * Speedup: 6x to 600x for typical SRIOV/vGPU workloads (8-21 groups)"},{"line_number":51,"context_line":"    * Overhead: May be 2-3x slower for requests with fewer than 4 groups"},{"line_number":52,"context_line":"    * Memory: Minimal additional memory usage"},{"line_number":53,"context_line":"    * Scaling: Works best when number of groups is close to number of providers"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"c5024597_1d9d96a0","line":51,"range":{"start_line":51,"start_character":0,"end_line":51,"end_character":72},"updated":"2025-10-04 10:14:34.000000000","message":"do we have a test showing this? I\u0027m interested","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bc9fd046dea7d5ded14d191116e433db23b0bcae","unresolved":false,"context_lines":[{"line_number":48,"context_line":"PERFORMANCE CHARACTERISTICS:"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    * Speedup: 6x to 600x for typical SRIOV/vGPU workloads (8-21 groups)"},{"line_number":51,"context_line":"    * Overhead: May be 2-3x slower for requests with fewer than 4 groups"},{"line_number":52,"context_line":"    * Memory: Minimal additional memory usage"},{"line_number":53,"context_line":"    * Scaling: Works best when number of groups is close to number of providers"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"b7b323af_19f47edd","line":51,"range":{"start_line":51,"start_character":0,"end_line":51,"end_character":72},"in_reply_to":"c5024597_1d9d96a0","updated":"2025-10-07 09:57:38.000000000","message":"Done","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c977896c70d61664cc24c58b59b4cd0eacf61866","unresolved":true,"context_lines":[{"line_number":50,"context_line":"    * Speedup: 6x to 600x for typical SRIOV/vGPU workloads (8-21 groups)"},{"line_number":51,"context_line":"    * Overhead: May be 2-3x slower for requests with fewer than 4 groups"},{"line_number":52,"context_line":"    * Memory: Minimal additional memory usage"},{"line_number":53,"context_line":"    * Scaling: Works best when number of groups is close to number of providers"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"EXAMPLES OF WHEN TO ENABLE:"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"73702108_4a95b162","line":53,"updated":"2025-10-04 10:14:34.000000000","message":"I see where it is coming from and I agree that it is true, but I don\u0027t think the audience of our config option cares about it.","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bc9fd046dea7d5ded14d191116e433db23b0bcae","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    * Speedup: 6x to 600x for typical SRIOV/vGPU workloads (8-21 groups)"},{"line_number":51,"context_line":"    * Overhead: May be 2-3x slower for requests with fewer than 4 groups"},{"line_number":52,"context_line":"    * Memory: Minimal additional memory usage"},{"line_number":53,"context_line":"    * Scaling: Works best when number of groups is close to number of providers"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"EXAMPLES OF WHEN TO ENABLE:"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"34b14271_f1eacdcf","line":53,"in_reply_to":"73702108_4a95b162","updated":"2025-10-07 09:57:38.000000000","message":"Done","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c977896c70d61664cc24c58b59b4cd0eacf61866","unresolved":true,"context_lines":[{"line_number":52,"context_line":"    * Memory: Minimal additional memory usage"},{"line_number":53,"context_line":"    * Scaling: Works best when number of groups is close to number of providers"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"EXAMPLES OF WHEN TO ENABLE:"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    * SRIOV: VM requesting 8 VFs from 8 different Physical Functions"},{"line_number":58,"context_line":"    * vGPU: VM requesting 16 GPU slices from 16 different vGPU resources"},{"line_number":59,"context_line":"    * NUMA: Fine-grained CPU/memory placement with many allocation groups"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"EXAMPLES OF WHEN NOT TO ENABLE:"}],"source_content_type":"text/x-python","patch_set":2,"id":"0201aa79_d1c911ba","line":58,"range":{"start_line":55,"start_character":0,"end_line":58,"end_character":72},"updated":"2025-10-04 10:14:34.000000000","message":"This feels repetitive to WHEN TO ENABLE THIS OPTION. Either fold it in or simply drop it.","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5ec20c6309849356e5aa6981b00fea4bfa1885cf","unresolved":true,"context_lines":[{"line_number":52,"context_line":"    * Memory: Minimal additional memory usage"},{"line_number":53,"context_line":"    * Scaling: Works best when number of groups is close to number of providers"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"EXAMPLES OF WHEN TO ENABLE:"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    * SRIOV: VM requesting 8 VFs from 8 different Physical Functions"},{"line_number":58,"context_line":"    * vGPU: VM requesting 16 GPU slices from 16 different vGPU resources"},{"line_number":59,"context_line":"    * NUMA: Fine-grained CPU/memory placement with many allocation groups"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"EXAMPLES OF WHEN NOT TO ENABLE:"}],"source_content_type":"text/x-python","patch_set":2,"id":"050684e1_a3518f0a","line":58,"range":{"start_line":55,"start_character":0,"end_line":58,"end_character":72},"in_reply_to":"0201aa79_d1c911ba","updated":"2025-10-06 10:28:11.000000000","message":"it does but i actully think the only thing i woulc keep form its suggetioon is the idea of addeign a when to enabel and when not to enable case\n```\nwhen to enable:\n\n   * SRIOV: VM requesting 8 VFs or PFs from 8 different Physical Functions.\n   * vGPU: VM requesting 16 GPU slices from 16 different vGPU resources.\n \nwhen not to enable:\n\n    * Flat resource provider trees (all resources in root provider)\n    * Requests with fewer than 4 resource groups\n```\n\ni think i would drop most if not all of the rest of this docs update.","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bc9fd046dea7d5ded14d191116e433db23b0bcae","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    * Memory: Minimal additional memory usage"},{"line_number":53,"context_line":"    * Scaling: Works best when number of groups is close to number of providers"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"EXAMPLES OF WHEN TO ENABLE:"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    * SRIOV: VM requesting 8 VFs from 8 different Physical Functions"},{"line_number":58,"context_line":"    * vGPU: VM requesting 16 GPU slices from 16 different vGPU resources"},{"line_number":59,"context_line":"    * NUMA: Fine-grained CPU/memory placement with many allocation groups"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"EXAMPLES OF WHEN NOT TO ENABLE:"}],"source_content_type":"text/x-python","patch_set":2,"id":"4e43557e_2b071259","line":58,"range":{"start_line":55,"start_character":0,"end_line":58,"end_character":72},"in_reply_to":"050684e1_a3518f0a","updated":"2025-10-07 09:57:38.000000000","message":"Done","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c977896c70d61664cc24c58b59b4cd0eacf61866","unresolved":true,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    * SRIOV: VM requesting 8 VFs from 8 different Physical Functions"},{"line_number":58,"context_line":"    * vGPU: VM requesting 16 GPU slices from 16 different vGPU resources"},{"line_number":59,"context_line":"    * NUMA: Fine-grained CPU/memory placement with many allocation groups"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"EXAMPLES OF WHEN NOT TO ENABLE:"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"26e5dc9b_f8d84a3c","line":59,"updated":"2025-10-04 10:14:34.000000000","message":"I\u0027m not sure I see the relevance of numa here.","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bc9fd046dea7d5ded14d191116e433db23b0bcae","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    * SRIOV: VM requesting 8 VFs from 8 different Physical Functions"},{"line_number":58,"context_line":"    * vGPU: VM requesting 16 GPU slices from 16 different vGPU resources"},{"line_number":59,"context_line":"    * NUMA: Fine-grained CPU/memory placement with many allocation groups"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"EXAMPLES OF WHEN NOT TO ENABLE:"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1845d06c_393610c1","line":59,"in_reply_to":"26e5dc9b_f8d84a3c","updated":"2025-10-07 09:57:38.000000000","message":"Done","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c977896c70d61664cc24c58b59b4cd0eacf61866","unresolved":true,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    * Flat resource provider trees (all resources in root provider)"},{"line_number":64,"context_line":"    * Requests with fewer than 4 resource groups"},{"line_number":65,"context_line":"    * Shared resource providers (e.g., shared storage)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"RECOMMENDATION:"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"6b9a933f_045565dd","line":65,"updated":"2025-10-04 10:14:34.000000000","message":"We have 0 scaling tests for it so I would not imply it it helps there","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bc9fd046dea7d5ded14d191116e433db23b0bcae","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    * Flat resource provider trees (all resources in root provider)"},{"line_number":64,"context_line":"    * Requests with fewer than 4 resource groups"},{"line_number":65,"context_line":"    * Shared resource providers (e.g., shared storage)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"RECOMMENDATION:"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"c7b6eaf9_99438bf7","line":65,"in_reply_to":"6b9a933f_045565dd","updated":"2025-10-07 09:57:38.000000000","message":"Done","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c977896c70d61664cc24c58b59b4cd0eacf61866","unresolved":true,"context_lines":[{"line_number":64,"context_line":"    * Requests with fewer than 4 resource groups"},{"line_number":65,"context_line":"    * Shared resource providers (e.g., shared storage)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"RECOMMENDATION:"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    Enable this if you experience scheduler timeouts or slow allocation"},{"line_number":70,"context_line":"    candidate generation with SRIOV or vGPU workloads requiring 8 or more"},{"line_number":71,"context_line":"    devices per VM. For other deployments, leave disabled."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Related options:"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"b69bfa8f_888c3fc9","line":71,"range":{"start_line":67,"start_character":0,"end_line":71,"end_character":58},"updated":"2025-10-04 10:14:34.000000000","message":"Repetition","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bc9fd046dea7d5ded14d191116e433db23b0bcae","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    * Requests with fewer than 4 resource groups"},{"line_number":65,"context_line":"    * Shared resource providers (e.g., shared storage)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"RECOMMENDATION:"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    Enable this if you experience scheduler timeouts or slow allocation"},{"line_number":70,"context_line":"    candidate generation with SRIOV or vGPU workloads requiring 8 or more"},{"line_number":71,"context_line":"    devices per VM. For other deployments, leave disabled."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Related options:"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"8c5a5ef9_a4b29682","line":71,"range":{"start_line":67,"start_character":0,"end_line":71,"end_character":58},"in_reply_to":"b69bfa8f_888c3fc9","updated":"2025-10-07 09:57:38.000000000","message":"Done","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"}],"placement/objects/allocation_candidate.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8517d98118b9cff4a57f0d8c5beb0f3beba8955f","unresolved":true,"context_lines":[{"line_number":972,"context_line":"        len(areqs),"},{"line_number":973,"context_line":"        \u0027enabled\u0027 if optimize else \u0027disabled\u0027,"},{"line_number":974,"context_line":"    )"},{"line_number":975,"context_line":""},{"line_number":976,"context_line":"    # It\u0027s possible we\u0027ve filtered out everything.  If so, short out."},{"line_number":977,"context_line":"    if not areqs:"},{"line_number":978,"context_line":"        return [], []"}],"source_content_type":"text/x-python","patch_set":1,"id":"963a31c4_cf5198a6","line":975,"updated":"2025-10-03 19:01:20.000000000","message":"this partly compensate for the remvoal of https://review.opendev.org/c/openstack/placement/+/962775/2\n\nagain im unsure if this is really needed.","commit_id":"85f3a7803b774e473bad8d01c870cdb024b41dcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bc9fd046dea7d5ded14d191116e433db23b0bcae","unresolved":false,"context_lines":[{"line_number":972,"context_line":"        len(areqs),"},{"line_number":973,"context_line":"        \u0027enabled\u0027 if optimize else \u0027disabled\u0027,"},{"line_number":974,"context_line":"    )"},{"line_number":975,"context_line":""},{"line_number":976,"context_line":"    # It\u0027s possible we\u0027ve filtered out everything.  If so, short out."},{"line_number":977,"context_line":"    if not areqs:"},{"line_number":978,"context_line":"        return [], []"}],"source_content_type":"text/x-python","patch_set":1,"id":"b19fe274_c80ae942","line":975,"in_reply_to":"8709193a_011627b2","updated":"2025-10-07 09:57:38.000000000","message":"Acknowledged","commit_id":"85f3a7803b774e473bad8d01c870cdb024b41dcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c977896c70d61664cc24c58b59b4cd0eacf61866","unresolved":true,"context_lines":[{"line_number":972,"context_line":"        len(areqs),"},{"line_number":973,"context_line":"        \u0027enabled\u0027 if optimize else \u0027disabled\u0027,"},{"line_number":974,"context_line":"    )"},{"line_number":975,"context_line":""},{"line_number":976,"context_line":"    # It\u0027s possible we\u0027ve filtered out everything.  If so, short out."},{"line_number":977,"context_line":"    if not areqs:"},{"line_number":978,"context_line":"        return [], []"}],"source_content_type":"text/x-python","patch_set":1,"id":"9e61739f_19d80289","line":975,"in_reply_to":"963a31c4_cf5198a6","updated":"2025-10-04 10:14:34.000000000","message":"Yeah I don\u0027t think this gives much help to troubleshoot the actual performance. \n\nThe part of the log \" across %d anchors: \" is hand wavey. Right now I cannot formulate with simple words what that data structure means exactly.  \n\nI think the part of \"returned %d candidates\" is redundant, later on placement logs that information already.","commit_id":"85f3a7803b774e473bad8d01c870cdb024b41dcd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5ec20c6309849356e5aa6981b00fea4bfa1885cf","unresolved":true,"context_lines":[{"line_number":972,"context_line":"        len(areqs),"},{"line_number":973,"context_line":"        \u0027enabled\u0027 if optimize else \u0027disabled\u0027,"},{"line_number":974,"context_line":"    )"},{"line_number":975,"context_line":""},{"line_number":976,"context_line":"    # It\u0027s possible we\u0027ve filtered out everything.  If so, short out."},{"line_number":977,"context_line":"    if not areqs:"},{"line_number":978,"context_line":"        return [], []"}],"source_content_type":"text/x-python","patch_set":1,"id":"8709193a_011627b2","line":975,"in_reply_to":"9e61739f_19d80289","updated":"2025-10-06 10:28:11.000000000","message":"ack lets ignore this then.","commit_id":"85f3a7803b774e473bad8d01c870cdb024b41dcd"}],"placement/objects/research_context.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8517d98118b9cff4a57f0d8c5beb0f3beba8955f","unresolved":true,"context_lines":[{"line_number":355,"context_line":"        if self.group_policy !\u003d \u0027none\u0027:"},{"line_number":356,"context_line":"            return arr"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        return copy.copy(arr)"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"    def exceeds_capacity(self, areq):"},{"line_number":361,"context_line":"        \"\"\"Checks a (consolidated) AllocationRequest against the provider"}],"source_content_type":"text/x-python","patch_set":1,"id":"c25b212c_06372287","line":358,"updated":"2025-10-03 19:01:20.000000000","message":"this is the possibel regression that claude identifed when i had it deep dive on the implication of the code change\n\nthis is why i pushed this for review so we can determin if this actully is a regression we need to resolve.","commit_id":"85f3a7803b774e473bad8d01c870cdb024b41dcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c977896c70d61664cc24c58b59b4cd0eacf61866","unresolved":true,"context_lines":[{"line_number":355,"context_line":"        if self.group_policy !\u003d \u0027none\u0027:"},{"line_number":356,"context_line":"            return arr"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        return copy.copy(arr)"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"    def exceeds_capacity(self, areq):"},{"line_number":361,"context_line":"        \"\"\"Checks a (consolidated) AllocationRequest against the provider"}],"source_content_type":"text/x-python","patch_set":1,"id":"571d69ac_49b3a2be","line":358,"in_reply_to":"c25b212c_06372287","updated":"2025-10-04 10:14:34.000000000","message":"Thanks for the heads up to look more into this part of the change. My original proposal of the change here was very much driven by tests started to fail due to the side effect of the consolidate call now called more than before. My change made those test pass again, but of course it does not mean there are no new edge cases to test.\n\nI suggest to try to write a reproducer test for the problem suggested by the LLM, based on the reproducer it is lot easier to justify the fix or see other possible fixes. \n\nBtw, I have an independent idea of inlining / simplifying the logic of then whole consolidate function into the new product algo, as we do a repetitive recalculation of the same prefix + additional suffix that can be optimized if we don\u0027t start to consolidate the extended partial_candidate over and over. If that works and actually helps the performance then this code can remain to be intact and only used in the old algo.","commit_id":"85f3a7803b774e473bad8d01c870cdb024b41dcd"}],"placement/tests/functional/test_allocation_candidates.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8517d98118b9cff4a57f0d8c5beb0f3beba8955f","unresolved":true,"context_lines":[{"line_number":346,"context_line":"            computes\u003d2, pfs\u003d64, vfs_per_pf\u003d1, req_groups\u003d64,"},{"line_number":347,"context_line":"            req_res_per_group\u003d1,"},{"line_number":348,"context_line":"            req_limit\u003d10,"},{"line_number":349,"context_line":"            expected_candidates\u003d10, expected_computes_with_candidates\u003d2)"}],"source_content_type":"text/x-python","patch_set":1,"id":"38cdc073_6fb38e7d","line":349,"updated":"2025-10-03 19:01:20.000000000","message":"i added these based on my local testign","commit_id":"85f3a7803b774e473bad8d01c870cdb024b41dcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bc9fd046dea7d5ded14d191116e433db23b0bcae","unresolved":false,"context_lines":[{"line_number":346,"context_line":"            computes\u003d2, pfs\u003d64, vfs_per_pf\u003d1, req_groups\u003d64,"},{"line_number":347,"context_line":"            req_res_per_group\u003d1,"},{"line_number":348,"context_line":"            req_limit\u003d10,"},{"line_number":349,"context_line":"            expected_candidates\u003d10, expected_computes_with_candidates\u003d2)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3d0dc5d6_401d4f68","line":349,"in_reply_to":"38cdc073_6fb38e7d","updated":"2025-10-07 09:57:38.000000000","message":"Done","commit_id":"85f3a7803b774e473bad8d01c870cdb024b41dcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c977896c70d61664cc24c58b59b4cd0eacf61866","unresolved":true,"context_lines":[{"line_number":304,"context_line":"            expected_candidates\u003d1000, expected_computes_with_candidates\u003d2)"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    def test_many_non_viable_candidates_32_32_two_computes(self):"},{"line_number":307,"context_line":"        # This is runs in 31.85 seconds"},{"line_number":308,"context_line":"        self.conf_fixture.conf.set_override("},{"line_number":309,"context_line":"            \"optimize_for_wide_provider_trees\", True, group\u003d\"workarounds\")"},{"line_number":310,"context_line":"        self.conf_fixture.conf.set_override("}],"source_content_type":"text/x-python","patch_set":2,"id":"bef854e6_607f2157","line":307,"updated":"2025-10-04 10:14:34.000000000","message":"OK this is still acceptable slow in the CI so it make sense to keep them\n\n2025-10-03 19:01:48.527634 | ubuntu-noble | {6} placement.tests.functional.test_allocation_candidates.TestWideTreeAllocationCandidateExplosion.test_many_non_viable_candidates_32_32_two_computes [105.872103s] ... ok","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bc9fd046dea7d5ded14d191116e433db23b0bcae","unresolved":false,"context_lines":[{"line_number":304,"context_line":"            expected_candidates\u003d1000, expected_computes_with_candidates\u003d2)"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    def test_many_non_viable_candidates_32_32_two_computes(self):"},{"line_number":307,"context_line":"        # This is runs in 31.85 seconds"},{"line_number":308,"context_line":"        self.conf_fixture.conf.set_override("},{"line_number":309,"context_line":"            \"optimize_for_wide_provider_trees\", True, group\u003d\"workarounds\")"},{"line_number":310,"context_line":"        self.conf_fixture.conf.set_override("}],"source_content_type":"text/x-python","patch_set":2,"id":"69d0144f_143d2925","line":307,"in_reply_to":"2b4df945_9caeda87","updated":"2025-10-07 09:57:38.000000000","message":"Done","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5ec20c6309849356e5aa6981b00fea4bfa1885cf","unresolved":true,"context_lines":[{"line_number":304,"context_line":"            expected_candidates\u003d1000, expected_computes_with_candidates\u003d2)"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    def test_many_non_viable_candidates_32_32_two_computes(self):"},{"line_number":307,"context_line":"        # This is runs in 31.85 seconds"},{"line_number":308,"context_line":"        self.conf_fixture.conf.set_override("},{"line_number":309,"context_line":"            \"optimize_for_wide_provider_trees\", True, group\u003d\"workarounds\")"},{"line_number":310,"context_line":"        self.conf_fixture.conf.set_override("}],"source_content_type":"text/x-python","patch_set":2,"id":"2b4df945_9caeda87","line":307,"in_reply_to":"bef854e6_607f2157","updated":"2025-10-06 10:28:11.000000000","message":"ya this was borderline for me locally\nwe could make this a littel fast with say 750 candiates?\n\n32*32 seams to be the point were we start fallign off a cliff performance wise.","commit_id":"6d1206bee804a9109c59b545bd0935419f6e5d1c"}]}
