From fe5783ebb49e432dc3f8d0ad8a0ea18ea95e598d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Mon, 26 Jun 2017 22:29:26 +0200 Subject: [PATCH] Better memory metrics --- include/gen_utils.h | 14 +++++++++++++- lib/MySQL_Session.cpp | 11 +++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/include/gen_utils.h b/include/gen_utils.h index 3b2f0384a..aa3f59fcf 100644 --- a/include/gen_utils.h +++ b/include/gen_utils.h @@ -164,7 +164,19 @@ class PtrSizeArray { PtrSize_t * index(unsigned int i) { return &pdata[i]; } - + unsigned int total_size(unsigned int _min_size=0) { + unsigned int intsize=0; + unsigned int i=0; + for (i = 0 ; i < len ; i++) { + PtrSize_t *pts = index(i); + if (pts->size > _min_size) { + intsize += pts->size; + } else { + intsize += _min_size; + } + } + return intsize; + } }; #endif /* __CLASS_PTR_ARRAY_H */ diff --git a/lib/MySQL_Session.cpp b/lib/MySQL_Session.cpp index 794885489..581be5dbf 100644 --- a/lib/MySQL_Session.cpp +++ b/lib/MySQL_Session.cpp @@ -3826,6 +3826,17 @@ void MySQL_Session::Memory_Stats() { if (client_myds->myconn) { internal+=sizeof(MySQL_Connection); } + if (client_myds->PSarrayIN) { + internal += client_myds->PSarrayIN->total_size(); + } + if (client_myds->PSarrayIN) { + if (session_fast_forward==true) { + internal += client_myds->PSarrayOUT->total_size(); + } else { + internal += client_myds->PSarrayOUT->total_size(RESULTSET_BUFLEN); + internal += client_myds->resultset->total_size(RESULTSET_BUFLEN); + } + } } for (i=0; i < mybes->len; i++) { MySQL_Backend *_mybe=(MySQL_Backend *)mybes->index(i);