diff --git a/be/src/agent/resource_group_usage_recorder.cpp b/be/src/agent/resource_group_usage_recorder.cpp index c5794a3094c360..0ecba8541cff5c 100644 --- a/be/src/agent/resource_group_usage_recorder.cpp +++ b/be/src/agent/resource_group_usage_recorder.cpp @@ -38,16 +38,26 @@ std::vector ResourceGroupUsageRecorder::get_resource_group_ if (it == group_to_usage.end()) { TResourceGroupUsage group_usage; group_usage.__set_group_id(wg.id()); + group_usage.__set_group_version(wg.version()); group_usage.__set_mem_used_bytes(wg.mem_consumption_bytes()); group_usage.__set_num_running_queries(wg.num_running_queries()); + group_usage.__set_mem_limit_bytes(wg.mem_limit_bytes()); + group_usage.__set_mem_pool(wg.mem_pool()); + group_usage.__set_mem_pool_mem_limit_bytes(wg.parent_memory_limit_bytes().value_or(0)); + group_usage.__set_mem_pool_mem_used_bytes(wg.parent_memory_usage_bytes().value_or(0)); group_to_usage.emplace(wg.id(), std::move(group_usage)); - curr_group_to_cpu_runtime_ns.emplace(wg.id(), wg.cpu_runtime_ns()); } else { TResourceGroupUsage& group_usage = it->second; group_usage.__set_mem_used_bytes(group_usage.mem_used_bytes + wg.mem_consumption_bytes()); group_usage.__set_num_running_queries(group_usage.num_running_queries + wg.num_running_queries()); - + if (wg.version() >= group_usage.group_version) { + group_usage.__set_group_version(wg.version()); + group_usage.__set_mem_pool(wg.mem_pool()); + group_usage.__set_mem_limit_bytes(wg.mem_limit_bytes()); + group_usage.__set_mem_pool_mem_limit_bytes(wg.parent_memory_limit_bytes().value_or(0)); + group_usage.__set_mem_pool_mem_used_bytes(wg.parent_memory_usage_bytes().value_or(0)); + } curr_group_to_cpu_runtime_ns[wg.id()] += wg.cpu_runtime_ns(); } }); diff --git a/be/src/exec/workgroup/work_group.h b/be/src/exec/workgroup/work_group.h index 7c297ac01d7cbf..d54e2426c21cb3 100644 --- a/be/src/exec/workgroup/work_group.h +++ b/be/src/exec/workgroup/work_group.h @@ -191,6 +191,15 @@ class WorkGroup : public std::enable_shared_from_this { int64_t num_total_queries() const { return _num_total_queries; } int64_t concurrency_overflow_count() const { return _concurrency_overflow_count; } int64_t bigquery_count() const { return _bigquery_count; } + std::optional parent_memory_limit_bytes() const { + return _mem_tracker != nullptr && _mem_tracker->parent() ? std::make_optional(_mem_tracker->parent()->limit()) + : std::nullopt; + } + std::optional parent_memory_usage_bytes() const { + return _mem_tracker != nullptr && _mem_tracker->parent() + ? std::make_optional(_mem_tracker->parent()->consumption()) + : std::nullopt; + } int64_t big_query_mem_limit() const { return _big_query_mem_limit; } bool use_big_query_mem_limit() const { diff --git a/be/test/agent/resource_group_usage_recorder_test.cpp b/be/test/agent/resource_group_usage_recorder_test.cpp index 2beb3368a560c5..0d2dbf810bae44 100644 --- a/be/test/agent/resource_group_usage_recorder_test.cpp +++ b/be/test/agent/resource_group_usage_recorder_test.cpp @@ -40,6 +40,9 @@ TEST(ResourceGroupUsageRecorderTest, test_get_resource_group_usages) { ASSERT_EQ(group_usages.size(), 1); ASSERT_EQ(group_usages[0].group_id, default_wg->id()); ASSERT_EQ(group_usages[0].cpu_core_used_permille, num_cores * 1000); + ASSERT_EQ(group_usages[0].mem_pool, workgroup::WorkGroup::DEFAULT_MEM_POOL); + ASSERT_EQ(group_usages[0].mem_limit_bytes, default_wg->mem_limit_bytes()); + ASSERT_EQ(group_usages[0].mem_pool_mem_limit_bytes, default_wg->mem_limit_bytes()); } } // namespace starrocks \ No newline at end of file diff --git a/fe/fe-core/src/main/java/com/starrocks/qe/ShowResultMetaFactory.java b/fe/fe-core/src/main/java/com/starrocks/qe/ShowResultMetaFactory.java index 96fd41171f840e..626a50f8064c77 100644 --- a/fe/fe-core/src/main/java/com/starrocks/qe/ShowResultMetaFactory.java +++ b/fe/fe-core/src/main/java/com/starrocks/qe/ShowResultMetaFactory.java @@ -653,12 +653,25 @@ public ShowResultSetMetaData visitShowDataStatement(ShowDataStmt statement, Void @Override public ShowResultSetMetaData visitShowResourceGroupUsageStatement(ShowResourceGroupUsageStmt statement, Void context) { return ShowResultSetMetaData.builder() +<<<<<<< HEAD .addColumn(new Column("Name", ScalarType.createVarchar(64))) .addColumn(new Column("Id", ScalarType.createVarchar(64))) .addColumn(new Column("Backend", ScalarType.createVarchar(64))) .addColumn(new Column("BEInUseCpuCores", ScalarType.createVarchar(64))) .addColumn(new Column("BEInUseMemBytes", ScalarType.createVarchar(64))) .addColumn(new Column("BERunningQueries", ScalarType.createVarchar(64))) +======= + .addColumn(new Column("Name", TypeFactory.createVarcharType(64))) + .addColumn(new Column("Id", TypeFactory.createVarcharType(64))) + .addColumn(new Column("Backend", TypeFactory.createVarcharType(64))) + .addColumn(new Column("BEInUseCpuCores", TypeFactory.createVarcharType(64))) + .addColumn(new Column("BEInUseMemBytes", TypeFactory.createVarcharType(64))) + .addColumn(new Column("BERunningQueries", TypeFactory.createVarcharType(64))) + .addColumn(new Column("BEMemLimitBytes", TypeFactory.createVarcharType(64))) + .addColumn(new Column("BEMemPool", TypeFactory.createVarcharType(64))) + .addColumn(new Column("BEMemPoolInUseMemBytes", TypeFactory.createVarcharType(64))) + .addColumn(new Column("BEMemPoolMemLimitBytes", TypeFactory.createVarcharType(64))) +>>>>>>> f4a8df573a ([Enhancement] Extend 'show usage resource groups;' with mem_pool metrics (#66690)) .build(); } diff --git a/fe/fe-core/src/main/java/com/starrocks/sql/ast/ShowResourceGroupUsageStmt.java b/fe/fe-core/src/main/java/com/starrocks/sql/ast/ShowResourceGroupUsageStmt.java index 3cb2d78e416c71..be85f10b2d40a2 100644 --- a/fe/fe-core/src/main/java/com/starrocks/sql/ast/ShowResourceGroupUsageStmt.java +++ b/fe/fe-core/src/main/java/com/starrocks/sql/ast/ShowResourceGroupUsageStmt.java @@ -41,8 +41,21 @@ public class ShowResourceGroupUsageStmt extends ShowStmt { item -> Double.toString(item.usage.getCpuCoreUsagePermille() / 1000.0D)), Pair.create(new Column("BEInUseMemBytes", ScalarType.createVarchar(64)), item -> Long.toString(item.usage.getMemUsageBytes())), +<<<<<<< HEAD Pair.create(new Column("BERunningQueries", ScalarType.createVarchar(64)), item -> Integer.toString(item.usage.getNumRunningQueries())) +======= + Pair.create(new Column("BERunningQueries", TypeFactory.createVarcharType(64)), + item -> Integer.toString(item.usage.getNumRunningQueries())), + Pair.create(new Column("BEMemLimitBytes", TypeFactory.createVarcharType(64)), + item -> Long.toString(item.usage.getMemLimitBytes())), + Pair.create(new Column("BEMemPool", TypeFactory.createVarcharType(64)), + item -> item.usage.getMemPool()), + Pair.create(new Column("BEMemPoolInUseMemBytes", TypeFactory.createVarcharType(64)), + item -> Long.toString(item.usage.getMemPoolMemUsageBytes())), + Pair.create(new Column("BEMemPoolMemLimitBytes", TypeFactory.createVarcharType(64)), + item -> Long.toString(item.usage.getMemPoolMemLimitBytes())) +>>>>>>> f4a8df573a ([Enhancement] Extend 'show usage resource groups;' with mem_pool metrics (#66690)) ); private static final List> COLUMN_SUPPLIERS = META_DATA.stream() diff --git a/fe/fe-core/src/main/java/com/starrocks/system/ComputeNode.java b/fe/fe-core/src/main/java/com/starrocks/system/ComputeNode.java index dc16203141a221..0ad527e1519070 100644 --- a/fe/fe-core/src/main/java/com/starrocks/system/ComputeNode.java +++ b/fe/fe-core/src/main/java/com/starrocks/system/ComputeNode.java @@ -771,17 +771,33 @@ public static class ResourceGroupUsage { private final int cpuCoreUsagePermille; private final long memUsageBytes; private final int numRunningQueries; - - private ResourceGroupUsage(ResourceGroup group, int cpuCoreUsagePermille, long memUsageBytes, int numRunningQueries) { + private final long memLimitBytes; + private final String memPool; + private final long memPoolMemUsageBytes; + private final long memPoolMemLimitBytes; + + private ResourceGroupUsage(ResourceGroup group, + int cpuCoreUsagePermille, + long memUsageBytes, + int numRunningQueries, + long memLimitBytes, + String memPool, + long memPoolMemUsageBytes, + long memPoolMemLimitBytes) { this.group = group; this.cpuCoreUsagePermille = cpuCoreUsagePermille; this.memUsageBytes = memUsageBytes; this.numRunningQueries = numRunningQueries; + this.memLimitBytes = memLimitBytes; + this.memPool = memPool; + this.memPoolMemUsageBytes = memPoolMemUsageBytes; + this.memPoolMemLimitBytes = memPoolMemLimitBytes; } private static ResourceGroupUsage fromThrift(TResourceGroupUsage tUsage, ResourceGroup group) { return new ResourceGroupUsage(group, tUsage.getCpu_core_used_permille(), tUsage.getMem_used_bytes(), - tUsage.getNum_running_queries()); + tUsage.getNum_running_queries(), tUsage.getMem_limit_bytes(), tUsage.getMem_pool(), + tUsage.getMem_pool_mem_used_bytes(), tUsage.getMem_pool_mem_limit_bytes()); } public boolean isCpuCoreUsagePermilleEffective() { @@ -803,5 +819,22 @@ public long getMemUsageBytes() { public int getNumRunningQueries() { return numRunningQueries; } + + public long getMemLimitBytes() { + return memLimitBytes; + } + + public String getMemPool() { + return memPool; + } + + public long getMemPoolMemUsageBytes() { + return memPoolMemUsageBytes; + } + + public long getMemPoolMemLimitBytes() { + return memPoolMemLimitBytes; + } + } } diff --git a/fe/fe-core/src/test/java/com/starrocks/qe/ShowStmtMetaTest.java b/fe/fe-core/src/test/java/com/starrocks/qe/ShowStmtMetaTest.java index 343906f2c944c0..bf56ed52e63c54 100644 --- a/fe/fe-core/src/test/java/com/starrocks/qe/ShowStmtMetaTest.java +++ b/fe/fe-core/src/test/java/com/starrocks/qe/ShowStmtMetaTest.java @@ -843,13 +843,17 @@ public void testShowRoutineLoadTaskStmt() { public void testShowResourceGroupUsageStmt() { ShowResourceGroupUsageStmt stmt = new ShowResourceGroupUsageStmt("test_group", null); ShowResultSetMetaData metaData = new ShowResultMetaFactory().getMetadata(stmt); - Assertions.assertEquals(6, metaData.getColumnCount()); + Assertions.assertEquals(10, metaData.getColumnCount()); Assertions.assertEquals("Name", metaData.getColumn(0).getName()); Assertions.assertEquals("Id", metaData.getColumn(1).getName()); Assertions.assertEquals("Backend", metaData.getColumn(2).getName()); Assertions.assertEquals("BEInUseCpuCores", metaData.getColumn(3).getName()); Assertions.assertEquals("BEInUseMemBytes", metaData.getColumn(4).getName()); Assertions.assertEquals("BERunningQueries", metaData.getColumn(5).getName()); + Assertions.assertEquals("BEMemLimitBytes", metaData.getColumn(6).getName()); + Assertions.assertEquals("BEMemPool", metaData.getColumn(7).getName()); + Assertions.assertEquals("BEMemPoolInUseMemBytes", metaData.getColumn(8).getName()); + Assertions.assertEquals("BEMemPoolMemLimitBytes", metaData.getColumn(9).getName()); } @Test diff --git a/fe/fe-core/src/test/java/com/starrocks/qe/scheduler/QueryQueueManagerTest.java b/fe/fe-core/src/test/java/com/starrocks/qe/scheduler/QueryQueueManagerTest.java index 3fb35868718ff1..f6fad3b7b47c1d 100644 --- a/fe/fe-core/src/test/java/com/starrocks/qe/scheduler/QueryQueueManagerTest.java +++ b/fe/fe-core/src/test/java/com/starrocks/qe/scheduler/QueryQueueManagerTest.java @@ -1559,68 +1559,170 @@ public void testShowResourceGroupUsage() throws Exception { { String res = starRocksAssert.executeShowResourceUsageSql("SHOW USAGE RESOURCE GROUPS;"); - assertThat(res).isEqualTo("Name|Id|Backend|BEInUseCpuCores|BEInUseMemBytes|BERunningQueries\n"); + assertThat(res).isEqualTo("Name|Id|Backend|BEInUseCpuCores|BEInUseMemBytes|BERunningQueries" + + "|BEMemLimitBytes|BEMemPool|BEMemPoolInUseMemBytes|BEMemPoolMemLimitBytes\n"); } - List groupUsages = ImmutableList.of( - new TResourceGroupUsage().setGroup_id(ResourceGroup.DEFAULT_WG_ID).setCpu_core_used_permille(3112) - .setMem_used_bytes(39).setNum_running_queries(38), - new TResourceGroupUsage().setGroup_id(10L).setCpu_core_used_permille(112).setMem_used_bytes(9) - .setNum_running_queries(8), - new TResourceGroupUsage().setGroup_id(11L).setCpu_core_used_permille(100), - new TResourceGroupUsage().setGroup_id(12L).setCpu_core_used_permille(120).setMem_used_bytes(7) - .setNum_running_queries(6), - new TResourceGroupUsage().setGroup_id(13L).setCpu_core_used_permille(30) - ); - backends.get(0).setMemLimitBytes(100L); - GlobalStateMgr.getCurrentState().getNodeMgr().getClusterInfo().updateResourceUsage(0L, 0, 30, 0, groupUsages); - groupUsages = ImmutableList.of( - new TResourceGroupUsage().setGroup_id(ResourceGroup.DEFAULT_MV_WG_ID).setCpu_core_used_permille(4110) - .setMem_used_bytes(49).setNum_running_queries(48), - new TResourceGroupUsage().setGroup_id(10L).setCpu_core_used_permille(1110).setMem_used_bytes(19) - .setNum_running_queries(18), - new TResourceGroupUsage().setGroup_id(11L).setCpu_core_used_permille(1100), - new TResourceGroupUsage().setGroup_id(12L).setCpu_core_used_permille(1120).setMem_used_bytes(17) - .setNum_running_queries(16), - new TResourceGroupUsage().setGroup_id(13L).setCpu_core_used_permille(130) - ); - GlobalStateMgr.getCurrentState().getNodeMgr().getClusterInfo().updateResourceUsage(1L, 0, 30, 0, groupUsages); - { - String res = starRocksAssert.executeShowResourceUsageSql("SHOW USAGE RESOURCE GROUPS;"); - assertThat(res).isEqualTo("Name|Id|Backend|BEInUseCpuCores|BEInUseMemBytes|BERunningQueries\n" + - "default_wg|2|be0-host|3.112|39|38\n" + - "default_mv_wg|3|be1-host|4.11|49|48\n" + - "wg0|10|be0-host|0.112|9|8\n" + - "wg0|10|be1-host|1.11|19|18\n" + - "wg1|11|be0-host|0.1|0|0\n" + - "wg1|11|be1-host|1.1|0|0\n" + - "wg2|12|be0-host|0.12|7|6\n" + - "wg2|12|be1-host|1.12|17|16\n" + - "wg3|13|be0-host|0.03|0|0\n" + - "wg3|13|be1-host|0.13|0|0"); - } + { + final List groupUsages = ImmutableList.of( + new TResourceGroupUsage() + .setGroup_id(ResourceGroup.DEFAULT_WG_ID) + .setMem_pool(ResourceGroup.DEFAULT_MEM_POOL) + .setCpu_core_used_permille(3112) + .setMem_used_bytes(39) + .setMem_limit_bytes(40) + .setNum_running_queries(38), + new TResourceGroupUsage() + .setGroup_id(10L) + .setMem_pool(ResourceGroup.DEFAULT_MEM_POOL) + .setCpu_core_used_permille(112) + .setMem_used_bytes(9) + .setMem_limit_bytes(10) + .setNum_running_queries(8), + new TResourceGroupUsage() + .setGroup_id(11L) + .setMem_pool(ResourceGroup.DEFAULT_MEM_POOL) + .setCpu_core_used_permille(100), + new TResourceGroupUsage() + .setGroup_id(12L) + .setMem_pool(ResourceGroup.DEFAULT_MEM_POOL) + .setCpu_core_used_permille(120) + .setMem_used_bytes(7) + .setMem_limit_bytes(10) + .setNum_running_queries(6), + new TResourceGroupUsage() + .setGroup_id(13L) + .setMem_pool(ResourceGroup.DEFAULT_MEM_POOL) + .setCpu_core_used_permille(30) + ); + + backends.get(0).setMemLimitBytes(100L); + final long memPoolMemLimitBytes = 100; + final long memPoolMemUsedBytes = groupUsages.stream().mapToLong(TResourceGroupUsage::getMem_used_bytes).sum(); + groupUsages.forEach(usage -> { + usage.setMem_pool_mem_used_bytes(memPoolMemUsedBytes); + usage.setMem_pool_mem_limit_bytes(memPoolMemLimitBytes); + }); + GlobalStateMgr.getCurrentState().getNodeMgr().getClusterInfo().updateResourceUsage(0L, 0, 30, 0, groupUsages); + } + { + final List groupUsages = ImmutableList.of( + new TResourceGroupUsage() + .setGroup_id(ResourceGroup.DEFAULT_MV_WG_ID) + .setMem_pool(ResourceGroup.DEFAULT_MEM_POOL) + .setCpu_core_used_permille(4110) + .setMem_used_bytes(49) + .setMem_limit_bytes(50) + .setNum_running_queries(48), + new TResourceGroupUsage() + .setGroup_id(10L) + .setMem_pool(ResourceGroup.DEFAULT_MEM_POOL) + .setCpu_core_used_permille(1110) + .setMem_used_bytes(19) + .setMem_limit_bytes(20) + .setNum_running_queries(18), + new TResourceGroupUsage() + .setGroup_id(11L) + .setMem_pool(ResourceGroup.DEFAULT_MEM_POOL) + .setCpu_core_used_permille(1100), + new TResourceGroupUsage() + .setGroup_id(12L) + .setMem_pool(ResourceGroup.DEFAULT_MEM_POOL) + .setCpu_core_used_permille(1120) + .setMem_used_bytes(17) + .setMem_limit_bytes(20) + .setNum_running_queries(16), + new TResourceGroupUsage() + .setGroup_id(13L) + .setMem_pool(ResourceGroup.DEFAULT_MEM_POOL) + .setCpu_core_used_permille(130) + ); + + backends.get(1).setMemLimitBytes(200L); + final long memPoolMemLimitBytes = 200; + final long memPoolMemUsedBytes = groupUsages.stream().mapToLong(TResourceGroupUsage::getMem_used_bytes).sum(); + groupUsages.forEach(usage -> { + usage.setMem_pool_mem_used_bytes(memPoolMemUsedBytes); + usage.setMem_pool_mem_limit_bytes(memPoolMemLimitBytes); + }); + GlobalStateMgr.getCurrentState().getNodeMgr().getClusterInfo().updateResourceUsage(1L, 0, 30, 0, groupUsages); + } - groupUsages = ImmutableList.of( - new TResourceGroupUsage().setGroup_id(10L).setCpu_core_used_permille(210).setMem_used_bytes(29) - .setNum_running_queries(28), - new TResourceGroupUsage().setGroup_id(11L).setCpu_core_used_permille(200) - ); - GlobalStateMgr.getCurrentState().getNodeMgr().getClusterInfo().updateResourceUsage(0L, 0, 30, 0, groupUsages); - groupUsages = ImmutableList.of( - new TResourceGroupUsage().setGroup_id(12L).setCpu_core_used_permille(1220).setMem_used_bytes(27) - .setNum_running_queries(26), - new TResourceGroupUsage().setGroup_id(13L).setCpu_core_used_permille(230) - ); - GlobalStateMgr.getCurrentState().getNodeMgr().getClusterInfo().updateResourceUsage(1L, 0, 30, 0, groupUsages); + final String result = starRocksAssert.executeShowResourceUsageSql("SHOW USAGE RESOURCE GROUPS;"); + assertThat(result).isEqualTo("Name|Id|Backend|BEInUseCpuCores|BEInUseMemBytes|BERunningQueries" + + "|BEMemLimitBytes|BEMemPool|BEMemPoolInUseMemBytes|BEMemPoolMemLimitBytes\n" + + "default_wg|2|be0-host|3.112|39|38|40|default_mem_pool|55|100\n" + + "default_mv_wg|3|be1-host|4.11|49|48|50|default_mem_pool|85|200\n" + + "wg0|10|be0-host|0.112|9|8|10|default_mem_pool|55|100\n" + + "wg0|10|be1-host|1.11|19|18|20|default_mem_pool|85|200\n" + + "wg1|11|be0-host|0.1|0|0|0|default_mem_pool|55|100\n" + + "wg1|11|be1-host|1.1|0|0|0|default_mem_pool|85|200\n" + + "wg2|12|be0-host|0.12|7|6|10|default_mem_pool|55|100\n" + + "wg2|12|be1-host|1.12|17|16|20|default_mem_pool|85|200\n" + + "wg3|13|be0-host|0.03|0|0|0|default_mem_pool|55|100\n" + + "wg3|13|be1-host|0.13|0|0|0|default_mem_pool|85|200" + ); + } { - String res = starRocksAssert.executeShowResourceUsageSql("SHOW USAGE RESOURCE GROUPS;"); - assertThat(res).isEqualTo("Name|Id|Backend|BEInUseCpuCores|BEInUseMemBytes|BERunningQueries\n" + - "wg0|10|be0-host|0.21|29|28\n" + - "wg1|11|be0-host|0.2|0|0\n" + - "wg2|12|be1-host|1.22|27|26\n" + - "wg3|13|be1-host|0.23|0|0"); + { + final List groupUsages = ImmutableList.of( + new TResourceGroupUsage() + .setGroup_id(10L) + .setMem_pool("mem_pool_0") + .setCpu_core_used_permille(210) + .setMem_used_bytes(29) + .setMem_limit_bytes(30) + .setNum_running_queries(28), + new TResourceGroupUsage() + .setGroup_id(11L) + .setMem_pool("mem_pool_0") + .setMem_limit_bytes(30) + .setCpu_core_used_permille(200) + ); + backends.get(0).setMemLimitBytes(100L); + final long memPoolMemLimitBytes = 100; + final long memPoolMemUsedBytes = groupUsages.stream().mapToLong(TResourceGroupUsage::getMem_used_bytes).sum(); + groupUsages.forEach(usage -> { + usage.setMem_pool_mem_used_bytes(memPoolMemUsedBytes); + usage.setMem_pool_mem_limit_bytes(memPoolMemLimitBytes); + }); + GlobalStateMgr.getCurrentState().getNodeMgr().getClusterInfo().updateResourceUsage(0L, 0, 30, 0, groupUsages); + } + { + final List groupUsages = ImmutableList.of( + new TResourceGroupUsage() + .setGroup_id(12L) + .setMem_pool("mem_pool_1") + .setCpu_core_used_permille(1220) + .setMem_used_bytes(27) + .setMem_limit_bytes(50) + .setNum_running_queries(26), + new TResourceGroupUsage() + .setGroup_id(13L) + .setMem_pool("mem_pool_1") + .setMem_limit_bytes(50) + .setCpu_core_used_permille(230) + ); + backends.get(1).setMemLimitBytes(200L); + final long memPoolMemLimitBytes = 200; + final long memPoolMemUsedBytes = groupUsages.stream().mapToLong(TResourceGroupUsage::getMem_used_bytes).sum(); + groupUsages.forEach(usage -> { + usage.setMem_pool_mem_used_bytes(memPoolMemUsedBytes); + usage.setMem_pool_mem_limit_bytes(memPoolMemLimitBytes); + }); + GlobalStateMgr.getCurrentState().getNodeMgr().getClusterInfo().updateResourceUsage(1L, 0, 30, 0, groupUsages); + } + + final String res = starRocksAssert.executeShowResourceUsageSql("SHOW USAGE RESOURCE GROUPS;"); + assertThat(res).isEqualTo("Name|Id|Backend|BEInUseCpuCores|BEInUseMemBytes|BERunningQueries" + + "|BEMemLimitBytes|BEMemPool|BEMemPoolInUseMemBytes|BEMemPoolMemLimitBytes\n" + + "wg0|10|be0-host|0.21|29|28|30|mem_pool_0|29|100\n" + + "wg1|11|be0-host|0.2|0|0|30|mem_pool_0|29|100\n" + + "wg2|12|be1-host|1.22|27|26|50|mem_pool_1|27|200\n" + + "wg3|13|be1-host|0.23|0|0|50|mem_pool_1|27|200" + ); } } diff --git a/gensrc/thrift/ResourceUsage.thrift b/gensrc/thrift/ResourceUsage.thrift index bb6e193612f9ac..9db15dd5cea3dd 100644 --- a/gensrc/thrift/ResourceUsage.thrift +++ b/gensrc/thrift/ResourceUsage.thrift @@ -22,6 +22,11 @@ struct TResourceGroupUsage { 2: optional i32 cpu_core_used_permille 3: optional i64 mem_used_bytes; 4: optional i32 num_running_queries; + 5: optional i64 mem_limit_bytes + 6: optional string mem_pool + 7: optional i64 mem_pool_mem_limit_bytes + 8: optional i64 mem_pool_mem_used_bytes + 9: optional i64 group_version } struct TResourceUsage {