Changeset: ae03b3295b7d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ae03b3295b7d
Added Files:
        sql/backends/monet5/config_rss/Makefile.ag
        sql/backends/monet5/config_rss/test_rss.c
        sql/backends/monet5/config_rss/test_rss.mal
Removed Files:
        sql/test/configurable_rss/Tests/cap_rss_32.py.src
        sql/test/configurable_rss/Tests/cap_rss_32.stable.err
        sql/test/configurable_rss/Tests/cap_rss_32.stable.out
        sql/test/configurable_rss/Tests/cap_rss_64.py.src
        sql/test/configurable_rss/Tests/cap_rss_64.stable.err
        sql/test/configurable_rss/Tests/cap_rss_64.stable.out
        sql/test/configurable_rss/Tests/no_cap_rss_32.py.src
        sql/test/configurable_rss/Tests/no_cap_rss_32.stable.err
        sql/test/configurable_rss/Tests/no_cap_rss_32.stable.out
        sql/test/configurable_rss/Tests/no_cap_rss_64.py.src
        sql/test/configurable_rss/Tests/no_cap_rss_64.stable.err
        sql/test/configurable_rss/Tests/no_cap_rss_64.stable.out
Modified Files:
        sql/backends/monet5/Makefile.ag
        sql/test/configurable_rss/Tests/All
        sql/test/configurable_rss/Tests/rss.py
Branch: config_rss
Log Message:

Use custom c code to test configurable rss.


diffs (truncated from 639 to 300 lines):

diff --git a/sql/backends/monet5/Makefile.ag b/sql/backends/monet5/Makefile.ag
--- a/sql/backends/monet5/Makefile.ag
+++ b/sql/backends/monet5/Makefile.ag
@@ -4,7 +4,7 @@
 #
 # Copyright 1997 - July 2008 CWI, August 2008 - 2018 MonetDB B.V.
 
-SUBDIRS = NOT_WIN32?vaults UDF generator
+SUBDIRS = NOT_WIN32?vaults UDF generator HAVE_TESTING&WIN32?config_rss
 
 INCLUDES = ../../include ../../common ../../storage ../../server \
                   ../../../monetdb5/modules/atoms \
diff --git a/sql/backends/monet5/config_rss/Makefile.ag 
b/sql/backends/monet5/config_rss/Makefile.ag
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/config_rss/Makefile.ag
@@ -0,0 +1,25 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0.  If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Copyright 1997 - July 2008 CWI, August 2008 - 2018 MonetDB B.V.
+
+INCLUDES = ../../../include \
+          ../../../common \
+          ../../../../monetdb5/mal \
+          ../../../../monetdb5/modules/mal
+
+lib__test_rss = {
+       MODULE
+       CONDINST = HAVE_TESTING WIN32
+       DIR = libdir/monetdb5
+       SOURCES = test_rss.c
+       LIBS = WIN32?../../../../monetdb5/tools/libmonetdb5 \
+              WIN32?../../../../gdk/libbat
+}
+
+headers_mal = {
+       HEADERS = mal
+       DIR = libdir/monetdb5
+       SOURCES = test_rss.mal
+}
diff --git a/sql/backends/monet5/config_rss/test_rss.c 
b/sql/backends/monet5/config_rss/test_rss.c
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/config_rss/test_rss.c
@@ -0,0 +1,64 @@
+#include<stdio.h>
+#include<stdlib.h>
+
+#include<Psapi.h>
+#include<Windows.h>
+
+#include<mal.h>
+#include<mal_exception.h>
+
+#define MB(x) ((SIZE_T) (x) << 20)
+#define GB(x) ((SIZE_T) (x) << 30)
+
+#define ALLOC_CHUNK_SIZE (MB(10))
+#define MIN_WORKING_SET MB(100)
+#define MAX_WORKING_SET MB(200)
+#define MAX_VIRTUAL_MEMORY MB(400)
+
+#define TEST_FILE "test_file"
+
+mal_export str TESTrestricted_rss(lng* GDK_mem_maxsize /*in bytes*/)
+{
+       // We are going to try to allocate twice the maximum configured rss 
bound.
+       size_t rss_bound = (size_t) *GDK_mem_maxsize, to_be_allocated = 2 * 
rss_bound, allocated = 0;
+
+       // A test file is going to be (re)created in the current directory.
+       FILE* const pfile = fopen(TEST_FILE, "w");
+
+       char* committedMemory = NULL;
+
+       while(allocated < to_be_allocated)
+       {
+               if(!(committedMemory = (char*) malloc(ALLOC_CHUNK_SIZE)))
+               {
+                       break;
+               }
+
+               // Write something to newly committed memory.
+               for (int i = 0; i < ALLOC_CHUNK_SIZE - 1; i++)
+               {
+                       committedMemory[i] = rand()%26+'a';
+               }
+                       committedMemory[ALLOC_CHUNK_SIZE] = '\0';
+
+               // Perform some I/O to make sure the OS is actually doing 
something with these dirty pages.
+
+               fputs(committedMemory, pfile);
+
+               // Query process memory counters from OS.
+               PROCESS_MEMORY_COUNTERS_EX psmemCounters;
+               GetProcessMemoryInfo(GetCurrentProcess(), &psmemCounters, 
sizeof(PROCESS_MEMORY_COUNTERS_EX));
+               
+               printf("Working Set:\t%lld MB\t", psmemCounters.WorkingSetSize 
>> 20);
+               printf("Total Memory:\t%lld MB\n", psmemCounters.PrivateUsage 
>> 20);
+
+               if (psmemCounters.WorkingSetSize > rss_bound) {
+                       fclose(pfile);
+                       throw(MAL, "test_config_rss.run_test_config_rss", 
"physical memory allocation violates configured working set size limit" );
+               }
+       }
+
+       fclose(pfile);
+
+       return MAL_SUCCEED;
+}
diff --git a/sql/backends/monet5/config_rss/test_rss.mal 
b/sql/backends/monet5/config_rss/test_rss.mal
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/config_rss/test_rss.mal
@@ -0,0 +1,5 @@
+module test_config_rss;
+
+command run_test_config_rss(GDK_mem_maxsize:lng):void 
+address TESTrestricted_rss
+comment "C code will allocate memory and test whether the configured rss limit 
is violated.";
diff --git a/sql/test/configurable_rss/Tests/All 
b/sql/test/configurable_rss/Tests/All
--- a/sql/test/configurable_rss/Tests/All
+++ b/sql/test/configurable_rss/Tests/All
@@ -1,4 +1,1 @@
-BITS64&NATIVE_WIN32?cap_rss_64
-BITS64&NATIVE_WIN32?no_cap_rss_64
-BITS32&NATIVE_WIN32?cap_rss_32
-BITS32&NATIVE_WIN32?no_cap_rss_32
+NATIVE_WIN32?rss
diff --git a/sql/test/configurable_rss/Tests/cap_rss_32.py.src 
b/sql/test/configurable_rss/Tests/cap_rss_32.py.src
deleted file mode 100644
--- a/sql/test/configurable_rss/Tests/cap_rss_32.py.src
+++ /dev/null
@@ -1,1 +0,0 @@
-$RELSRCDIR/rss.py
diff --git a/sql/test/configurable_rss/Tests/cap_rss_32.stable.err 
b/sql/test/configurable_rss/Tests/cap_rss_32.stable.err
deleted file mode 100644
--- a/sql/test/configurable_rss/Tests/cap_rss_32.stable.err
+++ /dev/null
@@ -1,31 +0,0 @@
-stderr of test 'cap_rss_64` in directory 'sql/test/configurable_rss` itself:
-
-
-# 16:57:17 >  
-# 16:57:17 >  "C:\Python27\python.exe" "cap_rss_64.py" "cap_rss_64"
-# 16:57:17 >  
-
-#mserver: "--set gdk_mem_maxsize=20000000"
-#client: 
"..\..\..\..\..\Sources\monetdb\sql\test\configurable_rss\Tests\push_and_check_rss.sql"
-# builtin opt  gdk_dbpath = 
C:\Users\aris\monetdb-installation\var\monetdb5\dbfarm\demo
-# builtin opt  gdk_debug = 0
-# builtin opt  gdk_vmtrim = no
-# builtin opt  monet_prompt = >
-# builtin opt  monet_daemon = no
-# builtin opt  mapi_port = 50000
-# builtin opt  mapi_open = false
-# builtin opt  mapi_autosense = false
-# builtin opt  sql_optimizer = default_pipe
-# builtin opt  sql_debug = 0
-# cmdline opt  gdk_nr_threads = 0
-# cmdline opt  mapi_open = true
-# cmdline opt  mapi_port = 32503
-# cmdline opt  monet_prompt = 
-# cmdline opt  gdk_dbpath = 
C:\Users\aris\monetdb-installation\var\MonetDB\mTests_sql_test_configurable_rss
-# cmdline opt  gdk_mem_maxsize = 20000000
-# cmdline opt  gdk_debug = 553648138
-
-# 16:57:24 >  
-# 16:57:24 >  "Done."
-# 16:57:24 >  
-
diff --git a/sql/test/configurable_rss/Tests/cap_rss_32.stable.out 
b/sql/test/configurable_rss/Tests/cap_rss_32.stable.out
deleted file mode 100644
--- a/sql/test/configurable_rss/Tests/cap_rss_32.stable.out
+++ /dev/null
@@ -1,79 +0,0 @@
-stdout of test 'cap_rss_64` in directory 'sql/test/configurable_rss` itself:
-
-
-# 16:57:17 >  
-# 16:57:17 >  "C:\Python27\python.exe" "cap_rss_64.py" "cap_rss_64"
-# 16:57:17 >  
-
-#create function getrss() 
-#returns bigint external name status.rss_cursize;
-#create table test(a int, b int, c double);
-#insert into test values (1, 0, 1);
-[ 1    ]
-#create procedure loop_insert(maximum_size bigint)
-#begin
-#    declare size bigint;
-#    set size = (select count(*) from test);
-#
-#    while size < maximum_size do
-#        insert into test (select a+1, b+2, rand()*c from test);
-#
-#        set size = (select count(*) from test);
-#    end while;
-#end;
-#select getrss() < 25000 as resident_set_size_is_less_then_25kbytes, 
quantile(c/a, 0.8) * 0  from test;
-% .L2, sys.L6 # table_name
-% resident_set_size_is_less_then_25000_kb,     L6 # name
-% boolean,     double # type
-% 5,   24 # length
-[ true,        0       ]
-#drop table test cascade;
-#drop function getrss;
-# MonetDB 5 server v11.29.4
-# This is an unreleased version
-# Serving database 'mTests_sql_test_configurable_rss', using 2 threads
-# Compiled for x86_64-pc-winnt/64bit
-# Found 8.000 GiB available main-memory.
-# Copyright (c) 1993 - July 2008 CWI.
-# Copyright (c) August 2008 - 2018 MonetDB B.V., all rights reserved
-# Visit https://www.monetdb.org/ for further information
-# Listening for connection requests on mapi:monetdb://DESKTOP-J5OE0E3:32503/
-# MonetDB/GIS module loaded
-# MonetDB/SQL module loaded
-# SQL catalog created, loading sql scripts once
-# loading sql script: 09_like.sql
-# loading sql script: 10_math.sql
-# loading sql script: 11_times.sql
-# loading sql script: 12_url.sql
-# loading sql script: 13_date.sql
-# loading sql script: 14_inet.sql
-# loading sql script: 15_querylog.sql
-# loading sql script: 16_tracelog.sql
-# loading sql script: 17_temporal.sql
-# loading sql script: 18_index.sql
-# loading sql script: 20_vacuum.sql
-# loading sql script: 21_dependency_functions.sql
-# loading sql script: 21_dependency_views.sql
-# loading sql script: 22_clients.sql
-# loading sql script: 23_skyserver.sql
-# loading sql script: 25_debug.sql
-# loading sql script: 26_sysmon.sql
-# loading sql script: 27_rejects.sql
-# loading sql script: 39_analytics.sql
-# loading sql script: 40_geom.sql
-# loading sql script: 40_json.sql
-# loading sql script: 41_md5sum.sql
-# loading sql script: 45_uuid.sql
-# loading sql script: 46_profiler.sql
-# loading sql script: 51_sys_schema_extension.sql
-# loading sql script: 60_wlcr.sql
-# loading sql script: 75_storagemodel.sql
-# loading sql script: 80_statistics.sql
-# loading sql script: 80_udf.sql
-# loading sql script: 90_generator.sql
-# loading sql script: 99_system.sql
-
-# 16:57:24 >  
-# 16:57:24 >  "Done."
-# 16:57:24 >  
-
diff --git a/sql/test/configurable_rss/Tests/cap_rss_64.py.src 
b/sql/test/configurable_rss/Tests/cap_rss_64.py.src
deleted file mode 100644
--- a/sql/test/configurable_rss/Tests/cap_rss_64.py.src
+++ /dev/null
@@ -1,1 +0,0 @@
-$RELSRCDIR/rss.py
diff --git a/sql/test/configurable_rss/Tests/cap_rss_64.stable.err 
b/sql/test/configurable_rss/Tests/cap_rss_64.stable.err
deleted file mode 100644
--- a/sql/test/configurable_rss/Tests/cap_rss_64.stable.err
+++ /dev/null
@@ -1,31 +0,0 @@
-stderr of test 'cap_rss_64` in directory 'sql/test/configurable_rss` itself:
-
-
-# 16:57:17 >  
-# 16:57:17 >  "C:\Python27\python.exe" "cap_rss_64.py" "cap_rss_64"
-# 16:57:17 >  
-
-#mserver: "--set gdk_mem_maxsize=20000000"
-#client: 
"..\..\..\..\..\Sources\monetdb\sql\test\configurable_rss\Tests\push_and_check_rss.sql"
-# builtin opt  gdk_dbpath = 
C:\Users\aris\monetdb-installation\var\monetdb5\dbfarm\demo
-# builtin opt  gdk_debug = 0
-# builtin opt  gdk_vmtrim = no
-# builtin opt  monet_prompt = >
-# builtin opt  monet_daemon = no
-# builtin opt  mapi_port = 50000
-# builtin opt  mapi_open = false
-# builtin opt  mapi_autosense = false
-# builtin opt  sql_optimizer = default_pipe
-# builtin opt  sql_debug = 0
-# cmdline opt  gdk_nr_threads = 0
-# cmdline opt  mapi_open = true
-# cmdline opt  mapi_port = 32503
-# cmdline opt  monet_prompt = 
-# cmdline opt  gdk_dbpath = 
C:\Users\aris\monetdb-installation\var\MonetDB\mTests_sql_test_configurable_rss
-# cmdline opt  gdk_mem_maxsize = 20000000
-# cmdline opt  gdk_debug = 553648138
-
-# 16:57:24 >  
-# 16:57:24 >  "Done."
-# 16:57:24 >  
-
diff --git a/sql/test/configurable_rss/Tests/cap_rss_64.stable.out 
b/sql/test/configurable_rss/Tests/cap_rss_64.stable.out
deleted file mode 100644
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to