public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
* [LTP] [PATCH/RFC] mtest01: add option to limit max swap usage
@ 2012-03-13 16:27 Jan Stancek
  2012-03-13 16:45 ` Caspar Zhang
  0 siblings, 1 reply; 2+ messages in thread
From: Jan Stancek @ 2012-03-13 16:27 UTC (permalink / raw)
  To: ltp-list

[-- Attachment #1: Type: text/plain, Size: 1009 bytes --]


On large machines (with dozens of gigabytes of swap)
it can take significant time until it completes,
unless you specify "-p" parameter to set percent of total
memory to use. It is difficult to find value, that would fit
all setups. If the value is low, it won't exercise
conditions when memory is low. If the value is high it turns
into stress test, which can be swapping memory for hours.

This patch adds new option '-s', which stops test if swap
usage goes beyoned <s> MBytes. By default it is 0 - no limit.

For example:
     mtest01 -p 95 -w -s 4096
will keep allocating memory until 95% of total memory is used,
or swap usage is > 4GB.

This parameter is meant to be used in sanity tests, so that
malloc is exercised in situations with high/low memory
until system resorts to swapping, but ends when swap usage
is high enough.

Signed-off-by: Jan Stancek <jstancek@redhat.com>
---
  testcases/kernel/mem/mtest01/mtest01.c |   17 +++++++++++++++--
  1 files changed, 15 insertions(+), 2 deletions(-)



[-- Attachment #2: 0001-mtest01-add-option-to-limit-max-swap-usage.patch --]
[-- Type: text/x-patch, Size: 2370 bytes --]

diff --git a/testcases/kernel/mem/mtest01/mtest01.c b/testcases/kernel/mem/mtest01/mtest01.c
index dc960a8..54bda70 100644
--- a/testcases/kernel/mem/mtest01/mtest01.c
+++ b/testcases/kernel/mem/mtest01/mtest01.c
@@ -67,6 +67,7 @@ int main(int argc, char* argv[])
 	unsigned long long original_maxbytes, maxbytes = 0;
 	unsigned long long pre_mem = 0, post_mem = 0;
 	unsigned long long total_ram, total_free, D, C;
+	unsigned long long used_swap, swap_max = 0;
 	int chunksize = 1024*1024; /* one meg at a time by default */
 	struct sysinfo sstats;
 	int i, pid_cntr;
@@ -78,7 +79,7 @@ int main(int argc, char* argv[])
 	sigemptyset(&act.sa_mask);
 	sigaction(SIGRTMIN,  &act, 0);
 	
-	while ((c = getopt(argc, argv, "c:b:p:wvh")) != -1) {
+	while ((c = getopt(argc, argv, "c:b:p:s:wvh")) != -1) {
 		switch(c) {
 		case 'c':
 			chunksize = atoi(optarg);
@@ -105,6 +106,10 @@ int main(int argc, char* argv[])
 				    "ERROR: -p option cannot be greater than "
 				    "99");
 			break;
+		case 's':
+			swap_max = atoi(optarg);
+			swap_max = swap_max * 1024 * 1024;
+			break;
 		case 'w':
 			dowrite = 1;
 			break;
@@ -116,7 +121,8 @@ int main(int argc, char* argv[])
 			printf("usage: %s [-c <bytes>] [-b <bytes>|-p <percent>] [-v]\n", argv[0]);
 			printf("\t-c <num>\tsize of chunk in bytes to malloc on each pass\n");
 			printf("\t-b <bytes>\tmaximum number of bytes to allocate before stopping\n");
-			printf("\t-p <bytes>\tpercent of total memory used at which the program stops\n");
+			printf("\t-p <percent>\tpercent of total memory used at which the program stops\n");
+			printf("\t-s <MBytes>\tstop when used swap is higher than <s> MB, default: 0 - no limit\n");
 			printf("\t-w\t\twrite to the memory after allocating\n");
 			printf("\t-v\t\tverbose\n");
 			printf("\t-h\t\tdisplay usage\n");
@@ -262,6 +268,13 @@ int main(int argc, char* argv[])
 				sysinfo(&sstats);
 				post_mem = (unsigned long long)sstats.mem_unit * sstats.freeram;
 				post_mem = post_mem + (unsigned long long)sstats.mem_unit * sstats.freeswap;
+
+				used_swap = sstats.mem_unit * (sstats.totalswap - sstats.freeswap);
+				if (swap_max > 0 && used_swap > swap_max) {
+					tst_resm(TINFO, "Reached max swap usage: %llu Mbytes > %llu MBytes",
+							used_swap / 1024 / 1024, swap_max / 1024 / 1024);
+					break;
+				}
 			}
 		}
 		while (pid_list[i] != 0) {


[-- Attachment #3: Type: text/plain, Size: 381 bytes --]

------------------------------------------------------------------------------
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d

[-- Attachment #4: Type: text/plain, Size: 155 bytes --]

_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2012-03-13 16:46 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-03-13 16:27 [LTP] [PATCH/RFC] mtest01: add option to limit max swap usage Jan Stancek
2012-03-13 16:45 ` Caspar Zhang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox