)]}'
{"ironic_python_agent/extensions/standby.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0752cff53430d4687e26505d855331c38da1a429","unresolved":true,"context_lines":[{"line_number":203,"context_line":"               image, device]"},{"line_number":204,"context_line":"    LOG.info(\u0027Writing image with command: {}\u0027.format(\u0027 \u0027.join(command)))"},{"line_number":205,"context_line":"    try:"},{"line_number":206,"context_line":"        # TODO(dtantsur): switch to disk_utils.convert_image when it supports"},{"line_number":207,"context_line":"        # -t and -W flags and defaults to 2 GiB memory limit."},{"line_number":208,"context_line":"        limits \u003d processutils.ProcessLimits(address_space\u003d2048 * units.Mi)"},{"line_number":209,"context_line":"        # TODO(TheJulia): qemu-img uses a default of 8 * nCPU to determine"}],"source_content_type":"text/x-python","patch_set":3,"id":"ad849f9e_0fdf32cf","line":206,"range":{"start_line":206,"start_character":35,"end_line":206,"end_character":60},"updated":"2021-05-27 10:48:01.000000000","message":"This should have been proposed to ironic-lib, this place is going away.","commit_id":"9e4c7052a2fd9aac03858db696bf1ea9487f15e6"},{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"0f4ca95d56839190224c0d6b038b0f4523c3a495","unresolved":true,"context_lines":[{"line_number":205,"context_line":"    try:"},{"line_number":206,"context_line":"        # TODO(dtantsur): switch to disk_utils.convert_image when it supports"},{"line_number":207,"context_line":"        # -t and -W flags and defaults to 2 GiB memory limit."},{"line_number":208,"context_line":"        limits \u003d processutils.ProcessLimits(address_space\u003d2048 * units.Mi)"},{"line_number":209,"context_line":"        # TODO(TheJulia): qemu-img uses a default of 8 * nCPU to determine"},{"line_number":210,"context_line":"        # how many chunks of memory to allocate based upon the discussion in"},{"line_number":211,"context_line":"        # https://bugzilla.redhat.com/show_bug.cgi?id\u003d1892773."}],"source_content_type":"text/x-python","patch_set":3,"id":"8f5fee09_95d48117","line":208,"range":{"start_line":208,"start_character":58,"end_line":208,"end_character":62},"updated":"2021-05-26 22:12:41.000000000","message":"should we revert back to 1gb?","commit_id":"9e4c7052a2fd9aac03858db696bf1ea9487f15e6"},{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"e65918ca65a3a2efb5d33f80d6e82789dd3f6482","unresolved":true,"context_lines":[{"line_number":205,"context_line":"    try:"},{"line_number":206,"context_line":"        # TODO(dtantsur): switch to disk_utils.convert_image when it supports"},{"line_number":207,"context_line":"        # -t and -W flags and defaults to 2 GiB memory limit."},{"line_number":208,"context_line":"        limits \u003d processutils.ProcessLimits(address_space\u003d2048 * units.Mi)"},{"line_number":209,"context_line":"        # TODO(TheJulia): qemu-img uses a default of 8 * nCPU to determine"},{"line_number":210,"context_line":"        # how many chunks of memory to allocate based upon the discussion in"},{"line_number":211,"context_line":"        # https://bugzilla.redhat.com/show_bug.cgi?id\u003d1892773."}],"source_content_type":"text/x-python","patch_set":3,"id":"1ebb19ed_a7811bdd","line":208,"range":{"start_line":208,"start_character":58,"end_line":208,"end_character":62},"in_reply_to":"74d4de04_dd841023","updated":"2021-05-27 13:31:40.000000000","message":"Indeed. This patch address the root-cause instead of just bumping up the limit and crossing fingers. 2GiB limit isn\u0027t likely to break anything though.","commit_id":"9e4c7052a2fd9aac03858db696bf1ea9487f15e6"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"ad0dcda78820a01210ac87b070134ceb7d44599b","unresolved":true,"context_lines":[{"line_number":205,"context_line":"    try:"},{"line_number":206,"context_line":"        # TODO(dtantsur): switch to disk_utils.convert_image when it supports"},{"line_number":207,"context_line":"        # -t and -W flags and defaults to 2 GiB memory limit."},{"line_number":208,"context_line":"        limits \u003d processutils.ProcessLimits(address_space\u003d2048 * units.Mi)"},{"line_number":209,"context_line":"        # TODO(TheJulia): qemu-img uses a default of 8 * nCPU to determine"},{"line_number":210,"context_line":"        # how many chunks of memory to allocate based upon the discussion in"},{"line_number":211,"context_line":"        # https://bugzilla.redhat.com/show_bug.cgi?id\u003d1892773."}],"source_content_type":"text/x-python","patch_set":3,"id":"74d4de04_dd841023","line":208,"range":{"start_line":208,"start_character":58,"end_line":208,"end_character":62},"in_reply_to":"8f5fee09_95d48117","updated":"2021-05-26 22:26:54.000000000","message":"We saw a few problems where we had to increase to 2GiB so I think we should keep this.","commit_id":"9e4c7052a2fd9aac03858db696bf1ea9487f15e6"},{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"df86886612b4e9a69bdb05a294b2fa6994425971","unresolved":true,"context_lines":[{"line_number":206,"context_line":"        # TODO(dtantsur): switch to disk_utils.convert_image when it supports"},{"line_number":207,"context_line":"        # -t and -W flags and defaults to 2 GiB memory limit."},{"line_number":208,"context_line":"        limits \u003d processutils.ProcessLimits(address_space\u003d2048 * units.Mi)"},{"line_number":209,"context_line":"        # TODO(TheJulia): qemu-img uses a default of 8 * nCPU to determine"},{"line_number":210,"context_line":"        # how many chunks of memory to allocate based upon the discussion in"},{"line_number":211,"context_line":"        # https://bugzilla.redhat.com/show_bug.cgi?id\u003d1892773."},{"line_number":212,"context_line":"        # Setting MALLOC_AREA_MAX\u003d1 results in a process memory footprint of"}],"source_content_type":"text/x-python","patch_set":3,"id":"c05b0c13_a89a70e7","line":209,"range":{"start_line":209,"start_character":26,"end_line":209,"end_character":34},"updated":"2021-05-26 20:56:55.000000000","message":"It\u0027s glibc/malloc doing this - https://sourceware.org/glibc/wiki/MallocInternals#Arenas_and_Heaps\n\nqemu-img is oblivous to all of this. If it mallocs 64k it just gets an address from glibc malloc. Malloc will take from one of it\u0027s pre-allocated address ranges. \n\nNo memory will be used unless/until qemu-img writes data to the addresses, so ultimately qemu-img is behaving precisely the same and has the same memory footprint - it\u0027s just these pre-allocated arenas from glibc that are changing.","commit_id":"9e4c7052a2fd9aac03858db696bf1ea9487f15e6"},{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"df86886612b4e9a69bdb05a294b2fa6994425971","unresolved":true,"context_lines":[{"line_number":209,"context_line":"        # TODO(TheJulia): qemu-img uses a default of 8 * nCPU to determine"},{"line_number":210,"context_line":"        # how many chunks of memory to allocate based upon the discussion in"},{"line_number":211,"context_line":"        # https://bugzilla.redhat.com/show_bug.cgi?id\u003d1892773."},{"line_number":212,"context_line":"        # Setting MALLOC_AREA_MAX\u003d1 results in a process memory footprint of"},{"line_number":213,"context_line":"        # ~250mb. Setting it to 3 will allow for multiple areas, but won\u0027t"},{"line_number":214,"context_line":"        # greatly exceed the footprint."},{"line_number":215,"context_line":"        env_vars \u003d {\u0027MALLOC_ARENA_MAX\u0027: \u00273\u0027}"}],"source_content_type":"text/x-python","patch_set":3,"id":"edcdd203_9bfb622e","line":212,"range":{"start_line":212,"start_character":25,"end_line":212,"end_character":29},"updated":"2021-05-26 20:56:55.000000000","message":"nit: ARENA","commit_id":"9e4c7052a2fd9aac03858db696bf1ea9487f15e6"},{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"df86886612b4e9a69bdb05a294b2fa6994425971","unresolved":true,"context_lines":[{"line_number":210,"context_line":"        # how many chunks of memory to allocate based upon the discussion in"},{"line_number":211,"context_line":"        # https://bugzilla.redhat.com/show_bug.cgi?id\u003d1892773."},{"line_number":212,"context_line":"        # Setting MALLOC_AREA_MAX\u003d1 results in a process memory footprint of"},{"line_number":213,"context_line":"        # ~250mb. Setting it to 3 will allow for multiple areas, but won\u0027t"},{"line_number":214,"context_line":"        # greatly exceed the footprint."},{"line_number":215,"context_line":"        env_vars \u003d {\u0027MALLOC_ARENA_MAX\u0027: \u00273\u0027}"},{"line_number":216,"context_line":"        # Entirely disabling threading results in the same memory footprint"}],"source_content_type":"text/x-python","patch_set":3,"id":"25c99148_a8fb2bf1","line":213,"range":{"start_line":213,"start_character":58,"end_line":213,"end_character":63},"updated":"2021-05-26 20:56:55.000000000","message":"nit: arenas","commit_id":"9e4c7052a2fd9aac03858db696bf1ea9487f15e6"},{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"0f4ca95d56839190224c0d6b038b0f4523c3a495","unresolved":true,"context_lines":[{"line_number":212,"context_line":"        # Setting MALLOC_AREA_MAX\u003d1 results in a process memory footprint of"},{"line_number":213,"context_line":"        # ~250mb. Setting it to 3 will allow for multiple areas, but won\u0027t"},{"line_number":214,"context_line":"        # greatly exceed the footprint."},{"line_number":215,"context_line":"        env_vars \u003d {\u0027MALLOC_ARENA_MAX\u0027: \u00273\u0027}"},{"line_number":216,"context_line":"        # Entirely disabling threading results in the same memory footprint"},{"line_number":217,"context_line":"        # as 1 areana, but multiple threads are useful for performance"},{"line_number":218,"context_line":"        # as the file could be fragmented/compressed."}],"source_content_type":"text/x-python","patch_set":3,"id":"658dc291_23276ebe","line":215,"range":{"start_line":215,"start_character":41,"end_line":215,"end_character":42},"updated":"2021-05-26 22:12:41.000000000","message":"1 might be better actually. It would then be deterministic. It seems to have no effect on performance in my completely non-scientific test converting a ~1gb qcow2.","commit_id":"9e4c7052a2fd9aac03858db696bf1ea9487f15e6"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"ad0dcda78820a01210ac87b070134ceb7d44599b","unresolved":true,"context_lines":[{"line_number":212,"context_line":"        # Setting MALLOC_AREA_MAX\u003d1 results in a process memory footprint of"},{"line_number":213,"context_line":"        # ~250mb. Setting it to 3 will allow for multiple areas, but won\u0027t"},{"line_number":214,"context_line":"        # greatly exceed the footprint."},{"line_number":215,"context_line":"        env_vars \u003d {\u0027MALLOC_ARENA_MAX\u0027: \u00273\u0027}"},{"line_number":216,"context_line":"        # Entirely disabling threading results in the same memory footprint"},{"line_number":217,"context_line":"        # as 1 areana, but multiple threads are useful for performance"},{"line_number":218,"context_line":"        # as the file could be fragmented/compressed."}],"source_content_type":"text/x-python","patch_set":3,"id":"cf04ac96_28693d43","line":215,"range":{"start_line":215,"start_character":41,"end_line":215,"end_character":42},"in_reply_to":"658dc291_23276ebe","updated":"2021-05-26 22:26:54.000000000","message":"Based on the NOTE 1-3 would have same footprint, but 3 would provide better performance.","commit_id":"9e4c7052a2fd9aac03858db696bf1ea9487f15e6"},{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"e65918ca65a3a2efb5d33f80d6e82789dd3f6482","unresolved":true,"context_lines":[{"line_number":212,"context_line":"        # Setting MALLOC_AREA_MAX\u003d1 results in a process memory footprint of"},{"line_number":213,"context_line":"        # ~250mb. Setting it to 3 will allow for multiple areas, but won\u0027t"},{"line_number":214,"context_line":"        # greatly exceed the footprint."},{"line_number":215,"context_line":"        env_vars \u003d {\u0027MALLOC_ARENA_MAX\u0027: \u00273\u0027}"},{"line_number":216,"context_line":"        # Entirely disabling threading results in the same memory footprint"},{"line_number":217,"context_line":"        # as 1 areana, but multiple threads are useful for performance"},{"line_number":218,"context_line":"        # as the file could be fragmented/compressed."}],"source_content_type":"text/x-python","patch_set":3,"id":"ae751d26_a20036a5","line":215,"range":{"start_line":215,"start_character":41,"end_line":215,"end_character":42},"in_reply_to":"cf04ac96_28693d43","updated":"2021-05-27 13:31:40.000000000","message":"\u003e Based on the NOTE 1-3 would have same footprint, but 3 would provide better performance.\n\nThen the note isn\u0027t clear :-) More malloc arenas will mean more address space used:\n\nFor a 1.1gb (4gb virt) overcloud-full.qcow2:\n  MALLOC_ARENA_MAX\u003d3:\n    peak address space usage \u003d~ 325mb\n    peak memory usage (max RSS) \u003d 28396kb\n    elapsed time 6.69s\n  MALLOC_ARENA_MAX\u003d1:\n    peak address space usage \u003d~ 181mb\n    peak memory usage (max RSS) \u003d 27116kb\n    elapsed time 6.54s\n\n\u003e 1 might be better actually. It would then be deterministic.\nI\u0027m wrong it wouldn\u0027t be deterministic. Would also need to run qemu-img convert with single thread (-m 1).\n\nRe performance - the number of malloc arenas and the number of threads doesn\u0027t seem to make much difference at all in the test I\u0027ve run. I expect qcow2 -\u003e raw is a very easy conversion and I/O is the limiting factor.","commit_id":"9e4c7052a2fd9aac03858db696bf1ea9487f15e6"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"184c1617c41fe128ed2c7e27ecc3fc3930b3cf2a","unresolved":true,"context_lines":[{"line_number":214,"context_line":"        # greatly exceed the footprint."},{"line_number":215,"context_line":"        env_vars \u003d {\u0027MALLOC_ARENA_MAX\u0027: \u00273\u0027}"},{"line_number":216,"context_line":"        # Entirely disabling threading results in the same memory footprint"},{"line_number":217,"context_line":"        # as 1 areana, but multiple threads are useful for performance"},{"line_number":218,"context_line":"        # as the file could be fragmented/compressed."},{"line_number":219,"context_line":"        utils.execute(*command, prlimit\u003dlimits, env_variables\u003denv_vars)"},{"line_number":220,"context_line":"    except processutils.ProcessExecutionError as e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"4ff724fe_e2a497d5","line":217,"range":{"start_line":217,"start_character":15,"end_line":217,"end_character":21},"updated":"2021-05-27 07:48:57.000000000","message":"nit: arena","commit_id":"9e4c7052a2fd9aac03858db696bf1ea9487f15e6"}]}
