You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hawq.apache.org by zt...@apache.org on 2022/07/03 01:36:11 UTC

[hawq] 01/01: HAWQ-1842. add session_state.session_level_memory_consumption

This is an automated email from the ASF dual-hosted git repository.

ztao1987 pushed a commit to branch ztao
in repository https://gitbox.apache.org/repos/asf/hawq.git

commit de18899bebbeb68bb9547fdee89272e1b5904945
Author: ztao1987 <zh...@gmail.com>
AuthorDate: Sun Jul 3 09:35:16 2022 +0800

    HAWQ-1842. add session_state.session_level_memory_consumption
---
 src/backend/utils/mmgr/memprot.c                   |  2 +-
 src/bin/Makefile                                   |  2 +-
 src/bin/gp_session_state/gp_session_state.sql.in   | 31 ++++++++++++----------
 .../gp_session_state_memory_stats.c                |  2 +-
 .../uninstall_gp_session_state.sql                 |  4 +--
 5 files changed, 21 insertions(+), 20 deletions(-)

diff --git a/src/backend/utils/mmgr/memprot.c b/src/backend/utils/mmgr/memprot.c
index 24809f7f9..7ae67b918 100644
--- a/src/backend/utils/mmgr/memprot.c
+++ b/src/backend/utils/mmgr/memprot.c
@@ -454,7 +454,7 @@ void *gp_realloc(void *ptr, int64 sz, int64 newsz)
 		}
 #endif
 
-		if(!ret)
+		if(newsz && !ret)
 		{
 			Assert(0 < size_diff);
 			VmemTracker_ReleaseVmem(size_diff);
diff --git a/src/bin/Makefile b/src/bin/Makefile
index 9e7c9e9cb..ca0faa6e4 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -16,7 +16,7 @@ include $(top_builddir)/src/Makefile.global
 DIRS =  initdb ipcclean pg_ctl pg_dump pgbench \
 	psql scripts pg_config pg_controldata pg_resetxlog \
 	gpfilesystem/hdfs gpmirrortransition gpupgrade \
-	gpfusion gp_workfile_mgr gpcheckhdfs gpfdist gpoptutils
+	gpfusion gp_workfile_mgr gpcheckhdfs gpfdist gpoptutils gp_session_state
 
 all install installdirs uninstall distprep clean distclean maintainer-clean:
 	@for dir in $(DIRS); do echo "build $$dir"; $(MAKE) -C $$dir $@ || exit; done
diff --git a/src/bin/gp_session_state/gp_session_state.sql.in b/src/bin/gp_session_state/gp_session_state.sql.in
index c96284eca..ab8f463c7 100644
--- a/src/bin/gp_session_state/gp_session_state.sql.in
+++ b/src/bin/gp_session_state/gp_session_state.sql.in
@@ -62,24 +62,27 @@ GRANT EXECUTE ON FUNCTION session_state_memory_entries_f() TO public;
 --        List of memory usage entries for sessions
 --        
 --------------------------------------------------------------------------------
+CREATE OR REPLACE FUNCTION create_segment_proxy() RETURNS text AS
+$$
+DECLARE
+    segCount   int;
+    cmd       text;
+BEGIN
+    SELECT count(*) from gp_segment_configuration where role = 'p' and status = 'u'
+           into segCount;
+    cmd := 'create readable external web table segments(t int)
+            execute ''echo $GP_SEGMENT_ID'' on ' || segCount || ' format ''text''';
+    EXECUTE cmd;
+    RETURN cmd;
+END;
+$$ LANGUAGE PLPGSQL;
+SELECT create_segment_proxy();
+
 
 CREATE VIEW session_level_memory_consumption AS
 WITH all_entries AS (
-   SELECT C.*
-          FROM gp_toolkit.__gp_localid, session_state_memory_entries_f() AS C (
-            segid int,
-            sessionid int,
-            vmem_mb int,
-            runaway_status int,
-            qe_count int, 
-            active_qe_count int, 
-            dirty_qe_count int,
-            runaway_vmem_mb int, 
-            runaway_command_cnt int
-          )
-    UNION ALL
     SELECT C.*
-          FROM gp_toolkit.__gp_masterid, session_state_memory_entries_f() AS C (
+          FROM session_state.segments, session_state_memory_entries_f() AS C (
             segid int,
             sessionid int,
             vmem_mb int,
diff --git a/src/bin/gp_session_state/gp_session_state_memory_stats.c b/src/bin/gp_session_state/gp_session_state_memory_stats.c
index 0c902c2f7..8f5d49b15 100644
--- a/src/bin/gp_session_state/gp_session_state_memory_stats.c
+++ b/src/bin/gp_session_state/gp_session_state_memory_stats.c
@@ -125,7 +125,7 @@ gp_session_state_memory_entries(PG_FUNCTION_ARGS)
 			bool		nulls[NUM_SESSION_STATE_MEMORY_ELEM];
 			MemSet(nulls, 0, sizeof(nulls));
 
-			values[0] = Int32GetDatum(Gp_segment);
+			values[0] = Int32GetDatum(GpIdentity.segindex);
 			values[1] = Int32GetDatum(sessionState.sessionId);
 			values[2] = Int32GetDatum(VmemTracker_ConvertVmemChunksToMB(sessionState.sessionVmem));
 			values[3] = Int32GetDatum(sessionState.runawayStatus);
diff --git a/src/bin/gp_session_state/uninstall_gp_session_state.sql b/src/bin/gp_session_state/uninstall_gp_session_state.sql
index cda946733..ea94214ad 100644
--- a/src/bin/gp_session_state/uninstall_gp_session_state.sql
+++ b/src/bin/gp_session_state/uninstall_gp_session_state.sql
@@ -3,8 +3,6 @@ SET search_path = session_state;
 
 BEGIN;
 
-DROP VIEW session_state_memory_entries; 
-DROP FUNCTION session_state_memory_entries_f();
-DROP SCHEMA session_state;
+DROP SCHEMA session_state CASCADE;
 
 COMMIT;