)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":28715,"name":"Jim Gauld","email":"James.Gauld@windriver.com","username":"jgauld"},"change_message_id":"806660ee07fa213f055e414b618dd1ade187e5e4","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2019-09-17 12:52:20 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allow configuration of isolcpus"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ia849967e086bb1dadf27020e400a223c4c7cae5f"},{"line_number":10,"context_line":"Task: TBD"},{"line_number":11,"context_line":"Signed-off-by: David Sullivan \u003cdavid.sullivan@windriver.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3fa7e38b_33c57d8f","line":8,"updated":"2019-09-17 17:53:27.000000000","message":"Description is a bit sparse.\nPerhaps also add something like:\nAdding \"Isolcpus\" cpu type to system inventory. Corresponding low-latency grub options and kubernetes cpu-manager options are calculated.","commit_id":"ef2b80f3dac3b1c60a8afc4c41365fb5dea9d488"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"6afdaf6eec70f77af57e45382c4d839b2da4ef13","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2019-09-17 13:20:49 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allow configuration of isolcpus"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ia849967e086bb1dadf27020e400a223c4c7cae5f"},{"line_number":10,"context_line":"Task: TBD"},{"line_number":11,"context_line":"Signed-off-by: David Sullivan \u003cdavid.sullivan@windriver.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3fa7e38b_c3f9a280","line":8,"updated":"2019-09-18 21:03:32.000000000","message":"I think this commit message should have some more information about why the change is being made, any possible complications (like restrictions on allowable combinations of isolcpus and platform CPUs, interactions with vswitch CPUs, etc.)","commit_id":"77fa46273ccb0d77478246c6a19513a1c614038a"},{"author":{"_account_id":14174,"name":"Bart Wensley","email":"bartwensley@hotmail.com","username":"bartwensley"},"change_message_id":"61067bef844550e84574879b52d7b18f707f4f3c","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Allow configuration of isolcpus"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ia849967e086bb1dadf27020e400a223c4c7cae5f"},{"line_number":10,"context_line":"Task: TBD"},{"line_number":11,"context_line":"Signed-off-by: David Sullivan \u003cdavid.sullivan@windriver.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3fa7e38b_efa5aeb6","line":10,"range":{"start_line":10,"start_character":6,"end_line":10,"end_character":9},"updated":"2019-09-18 11:59:00.000000000","message":"If the commit isn\u0027t ready to merge, you need to give it a W-1.","commit_id":"77fa46273ccb0d77478246c6a19513a1c614038a"},{"author":{"_account_id":28434,"name":"David Sullivan","email":"david.sullivan@windriver.com","username":"dsullivanwr"},"change_message_id":"e2a4ce886e4b7ad5ed5d95d7a20091c4059dfc19","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Allow configuration of isolcpus"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ia849967e086bb1dadf27020e400a223c4c7cae5f"},{"line_number":10,"context_line":"Task: TBD"},{"line_number":11,"context_line":"Signed-off-by: David Sullivan \u003cdavid.sullivan@windriver.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3fa7e38b_f266f151","line":10,"range":{"start_line":10,"start_character":6,"end_line":10,"end_character":9},"in_reply_to":"3fa7e38b_efa5aeb6","updated":"2019-09-18 13:02:20.000000000","message":"Sorry I had set the WF to -1, but it reset with the new patches","commit_id":"77fa46273ccb0d77478246c6a19513a1c614038a"},{"author":{"_account_id":28715,"name":"Jim Gauld","email":"James.Gauld@windriver.com","username":"jgauld"},"change_message_id":"2e56e8f905a092a62e82c590ae9a66ce7c82842e","unresolved":false,"context_lines":[{"line_number":13,"context_line":"config. Lowlatency worker nodes will no longer have all application CPUs"},{"line_number":14,"context_line":"in the isolcpu set."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Kuberentes reserves CPUs in a block, not by numa node or range of CPUs."},{"line_number":17,"context_line":"Due to this we must restrict the Isolated CPUs to a contiguous block"},{"line_number":18,"context_line":"starting on numa 0 (after the platform cores)."},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3fa7e38b_889ba2c7","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":10},"updated":"2019-09-20 14:38:11.000000000","message":"typo","commit_id":"8f9d7daee83a213992492037701089f8f0849317"},{"author":{"_account_id":28434,"name":"David Sullivan","email":"david.sullivan@windriver.com","username":"dsullivanwr"},"change_message_id":"e0bf337159b37d956bc9149ec32d1125b9acf8f2","unresolved":false,"context_lines":[{"line_number":13,"context_line":"config. Lowlatency worker nodes will no longer have all application CPUs"},{"line_number":14,"context_line":"in the isolcpu set."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Kuberentes reserves CPUs in a block, not by numa node or range of CPUs."},{"line_number":17,"context_line":"Due to this we must restrict the Isolated CPUs to a contiguous block"},{"line_number":18,"context_line":"starting on numa 0 (after the platform cores)."},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3fa7e38b_c8767a07","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":10},"in_reply_to":"3fa7e38b_889ba2c7","updated":"2019-09-20 14:55:56.000000000","message":"Done","commit_id":"8f9d7daee83a213992492037701089f8f0849317"}],"sysinv/sysinv/sysinv/sysinv/api/controllers/v1/cpu.py":[{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"d17b54c957cd2a64b321840b151de32f717984f5","unresolved":false,"context_lines":[{"line_number":607,"context_line":"            count *\u003d 2"},{"line_number":608,"context_line":"        counts[s][constants.ISOLATED_FUNCTION] \u003d count"},{"line_number":609,"context_line":"        # let the remaining values grow/shrink dynamically"},{"line_number":610,"context_line":"        counts[s][constants.APPLICATION_FUNCTION] \u003d 0"},{"line_number":611,"context_line":"        counts[s][constants.NO_FUNCTION] \u003d 0"},{"line_number":612,"context_line":"    return counts"},{"line_number":613,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_7dabad1c","line":610,"updated":"2019-09-18 19:00:04.000000000","message":"how will this algorithm adjust counts[s][constants.PLATFORM_FUNCTION] when it is changed to Isolated?","commit_id":"77fa46273ccb0d77478246c6a19513a1c614038a"},{"author":{"_account_id":28434,"name":"David Sullivan","email":"david.sullivan@windriver.com","username":"dsullivanwr"},"change_message_id":"20984ab0f1af0f39775787833a6611995862a8ed","unresolved":false,"context_lines":[{"line_number":607,"context_line":"            count *\u003d 2"},{"line_number":608,"context_line":"        counts[s][constants.ISOLATED_FUNCTION] \u003d count"},{"line_number":609,"context_line":"        # let the remaining values grow/shrink dynamically"},{"line_number":610,"context_line":"        counts[s][constants.APPLICATION_FUNCTION] \u003d 0"},{"line_number":611,"context_line":"        counts[s][constants.NO_FUNCTION] \u003d 0"},{"line_number":612,"context_line":"    return counts"},{"line_number":613,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_a66022a7","line":610,"in_reply_to":"3fa7e38b_7dabad1c","updated":"2019-09-19 16:49:44.000000000","message":"For clarity this work the same way as assigning vswitch or shared cores. I think most of this code is redundant, but I don\u0027t have time to refactor it before this code needs to go in.","commit_id":"77fa46273ccb0d77478246c6a19513a1c614038a"}],"sysinv/sysinv/sysinv/sysinv/api/controllers/v1/cpu_utils.py":[{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"6afdaf6eec70f77af57e45382c4d839b2da4ef13","unresolved":false,"context_lines":[{"line_number":288,"context_line":"                return (\"The %s function can only be assigned up to %s cores.\" %"},{"line_number":289,"context_line":"                        (constants.VSWITCH_FUNCTION.lower(), VSWITCH_MAX_CORES))"},{"line_number":290,"context_line":"        elif func.lower() \u003d\u003d constants.ISOLATED_FUNCTION.lower():"},{"line_number":291,"context_line":"            # We need to check that isolated CPUs are contiguous for kubernetes"},{"line_number":292,"context_line":"            # i.e. isolated cpus can not be allocated on the second numa node"},{"line_number":293,"context_line":"            # unless all the cpus of the first numa node are isolated"},{"line_number":294,"context_line":"            has_application_cpus \u003d False"},{"line_number":295,"context_line":"            for s in range(0, len(host.nodes)):"},{"line_number":296,"context_line":"                numa_counts \u003d cpu_counts[s]"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_c3da02e8","line":293,"range":{"start_line":291,"start_character":14,"end_line":293,"end_character":69},"updated":"2019-09-18 21:03:32.000000000","message":"this is not quite accurate.  The cores that we tell kubernetes are reserved must be contiguous.  This includes platform cores, isolated cores, and vswitch cores.\n\nThis means we can\u0027t allocate any of these three types of cores on the second numa node until all the cores of the first numa node are configured as one of these three types.","commit_id":"77fa46273ccb0d77478246c6a19513a1c614038a"},{"author":{"_account_id":28434,"name":"David Sullivan","email":"david.sullivan@windriver.com","username":"dsullivanwr"},"change_message_id":"20984ab0f1af0f39775787833a6611995862a8ed","unresolved":false,"context_lines":[{"line_number":288,"context_line":"                return (\"The %s function can only be assigned up to %s cores.\" %"},{"line_number":289,"context_line":"                        (constants.VSWITCH_FUNCTION.lower(), VSWITCH_MAX_CORES))"},{"line_number":290,"context_line":"        elif func.lower() \u003d\u003d constants.ISOLATED_FUNCTION.lower():"},{"line_number":291,"context_line":"            # We need to check that isolated CPUs are contiguous for kubernetes"},{"line_number":292,"context_line":"            # i.e. isolated cpus can not be allocated on the second numa node"},{"line_number":293,"context_line":"            # unless all the cpus of the first numa node are isolated"},{"line_number":294,"context_line":"            has_application_cpus \u003d False"},{"line_number":295,"context_line":"            for s in range(0, len(host.nodes)):"},{"line_number":296,"context_line":"                numa_counts \u003d cpu_counts[s]"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_86f646f9","line":293,"range":{"start_line":291,"start_character":14,"end_line":293,"end_character":69},"in_reply_to":"3fa7e38b_c3da02e8","updated":"2019-09-19 16:49:44.000000000","message":"For the isolated cores kubernetes will grab the first x cores in order. So they need to be contiguous. System reserved (platform cores) can come before it, but nothing else.","commit_id":"77fa46273ccb0d77478246c6a19513a1c614038a"},{"author":{"_account_id":28715,"name":"Jim Gauld","email":"James.Gauld@windriver.com","username":"jgauld"},"change_message_id":"c1d04e0fbab5368dff401706c702a0edf049bd9b","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                   constants.PLATFORM_FUNCTION"},{"line_number":280,"context_line":"        for s in range(0, len(host.nodes)):"},{"line_number":281,"context_line":"            if s \u003e 0 and cpu_counts[s][constants.PLATFORM_FUNCTION] \u003e 0:"},{"line_number":282,"context_line":"                return \"%s cores can only be allocated on core 0\" % \\"},{"line_number":283,"context_line":"                       constants.PLATFORM_FUNCTION"},{"line_number":284,"context_line":"    if constants.WORKER in (host.subfunctions or host.personality):"},{"line_number":285,"context_line":"        if func.lower() \u003d\u003d constants.VSWITCH_FUNCTION.lower():"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_459fd302","line":282,"range":{"start_line":282,"start_character":58,"end_line":282,"end_character":62},"updated":"2019-09-20 14:37:07.000000000","message":"Should be: Processor 0","commit_id":"8f9d7daee83a213992492037701089f8f0849317"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"c552afd3776e093d85bbe10957c0ae0107a052e0","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                   constants.PLATFORM_FUNCTION"},{"line_number":280,"context_line":"        for s in range(0, len(host.nodes)):"},{"line_number":281,"context_line":"            if s \u003e 0 and cpu_counts[s][constants.PLATFORM_FUNCTION] \u003e 0:"},{"line_number":282,"context_line":"                return \"%s cores can only be allocated on core 0\" % \\"},{"line_number":283,"context_line":"                       constants.PLATFORM_FUNCTION"},{"line_number":284,"context_line":"    if constants.WORKER in (host.subfunctions or host.personality):"},{"line_number":285,"context_line":"        if func.lower() \u003d\u003d constants.VSWITCH_FUNCTION.lower():"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_b9602703","line":282,"range":{"start_line":282,"start_character":58,"end_line":282,"end_character":62},"in_reply_to":"3fa7e38b_459fd302","updated":"2019-09-26 19:03:14.000000000","message":"\u003e Should be: Processor 0\n\nI dislike this \"Processor\" stuff, since what we really care about is NUMA node, which is distinct from \"socket\" or \"processor\".  But I\u0027m just being grumpy. :)","commit_id":"8f9d7daee83a213992492037701089f8f0849317"},{"author":{"_account_id":28434,"name":"David Sullivan","email":"david.sullivan@windriver.com","username":"dsullivanwr"},"change_message_id":"e0bf337159b37d956bc9149ec32d1125b9acf8f2","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                   constants.PLATFORM_FUNCTION"},{"line_number":280,"context_line":"        for s in range(0, len(host.nodes)):"},{"line_number":281,"context_line":"            if s \u003e 0 and cpu_counts[s][constants.PLATFORM_FUNCTION] \u003e 0:"},{"line_number":282,"context_line":"                return \"%s cores can only be allocated on core 0\" % \\"},{"line_number":283,"context_line":"                       constants.PLATFORM_FUNCTION"},{"line_number":284,"context_line":"    if constants.WORKER in (host.subfunctions or host.personality):"},{"line_number":285,"context_line":"        if func.lower() \u003d\u003d constants.VSWITCH_FUNCTION.lower():"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_a87c5eeb","line":282,"range":{"start_line":282,"start_character":58,"end_line":282,"end_character":62},"in_reply_to":"3fa7e38b_459fd302","updated":"2019-09-20 14:55:56.000000000","message":"Done","commit_id":"8f9d7daee83a213992492037701089f8f0849317"}],"sysinv/sysinv/sysinv/sysinv/puppet/kubernetes.py":[{"author":{"_account_id":28715,"name":"Jim Gauld","email":"James.Gauld@windriver.com","username":"jgauld"},"change_message_id":"806660ee07fa213f055e414b618dd1ade187e5e4","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        isol_cpus \u003d self._get_host_cpu_list("},{"line_number":191,"context_line":"            host, function \u003d constants.ISOLATED_FUNCTION, threads \u003d True)"},{"line_number":192,"context_line":"        isol_cpuset \u003d set([c.cpu for c in isol_cpus])"},{"line_number":193,"context_line":"        isol_nodeset \u003d set([c.numa_node for c in isol_cpus])"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        # determine platform reserved number of logical cpus"},{"line_number":196,"context_line":"        k8s_reserved_cpus \u003d len(platform_cpuset)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_f36285d8","line":193,"range":{"start_line":193,"start_character":8,"end_line":193,"end_character":60},"updated":"2019-09-17 17:53:27.000000000","message":"isol_nodeset is not used","commit_id":"ef2b80f3dac3b1c60a8afc4c41365fb5dea9d488"}],"sysinv/sysinv/sysinv/sysinv/puppet/platform.py":[{"author":{"_account_id":28715,"name":"Jim Gauld","email":"James.Gauld@windriver.com","username":"jgauld"},"change_message_id":"806660ee07fa213f055e414b618dd1ade187e5e4","unresolved":false,"context_lines":[{"line_number":549,"context_line":"            # isolated logical cpus"},{"line_number":550,"context_line":"            app_isolated_cpus \u003d self._get_host_cpu_list("},{"line_number":551,"context_line":"                host, constants.ISOLATED_FUNCTION, threads\u003dTrue)"},{"line_number":552,"context_line":"            app_isolated_cpusset \u003d set([c.cpu for c in app_isolated_cpus])"},{"line_number":553,"context_line":"            app_isolated_ranges \u003d utils.format_range_set(app_isolated_cpusset)"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"            cpu_options \u003d \"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_13b5e131","line":552,"range":{"start_line":552,"start_character":25,"end_line":552,"end_character":32},"updated":"2019-09-17 17:53:27.000000000","message":"variable name inconsistent; everywhere else uses \u0027cpuset\u0027","commit_id":"ef2b80f3dac3b1c60a8afc4c41365fb5dea9d488"}]}
