All of lore.kernel.org
 help / color / mirror / Atom feed
* [LTP] [PATCH v2 1/2] syscalls/ioctl: ioctl_sg01.c: ioctl_sg01 invoked oom-killer
@ 2021-01-25 13:18 Xinpeng Liu
  2021-01-25 13:18 ` [LTP] [PATCH v2 2/2] syscalls/ioctl: ioctl_sg01.c:TBROK: Test killed! Xinpeng Liu
  2021-01-27  6:20 ` [LTP] [PATCH v2 1/2] syscalls/ioctl: ioctl_sg01.c: ioctl_sg01 invoked oom-killer liuxp11
  0 siblings, 2 replies; 3+ messages in thread
From: Xinpeng Liu @ 2021-01-25 13:18 UTC (permalink / raw)
  To: ltp

Kernel version is 5.4.81+,the available RAM is less than free,as follow:
[root@liuxp mywork]# head /proc/meminfo
MemTotal:       198101744 kB
MemFree:        189303148 kB
MemAvailable:   188566732 kB

So use available RAM to avoid OOM killer.
---
 lib/tst_memutils.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/lib/tst_memutils.c b/lib/tst_memutils.c
index dd09db4..8596005 100644
--- a/lib/tst_memutils.c
+++ b/lib/tst_memutils.c
@@ -18,6 +18,7 @@ void tst_pollute_memory(size_t maxsize, int fillchar)
 	size_t i, map_count = 0, safety = 0, blocksize = BLOCKSIZE;
 	void **map_blocks;
 	struct sysinfo info;
+	unsigned long available_ram = SAFE_READ_MEMINFO("MemAvailable:");
 
 	SAFE_SYSINFO(&info);
 	safety = MAX(4096 * SAFE_SYSCONF(_SC_PAGESIZE), 128 * 1024 * 1024);
@@ -26,15 +27,19 @@ void tst_pollute_memory(size_t maxsize, int fillchar)
 	if (info.freeswap > safety)
 		safety = 0;
 
+	/*"MemAvailable" field maybe not exist, or freeram less than available_ram*/
+	if(available_ram == 0 || info.freeram < available_ram)
+		available_ram = info.freeram;
+
 	/* Not enough free memory to avoid invoking OOM killer */
-	if (info.freeram <= safety)
+	if (available_ram <= safety)
 		return;
 
 	if (!maxsize)
 		maxsize = SIZE_MAX;
 
-	if (info.freeram - safety < maxsize / info.mem_unit)
-		maxsize = (info.freeram - safety) * info.mem_unit;
+	if (available_ram - safety < maxsize / info.mem_unit)
+		maxsize = (available_ram - safety) * info.mem_unit;
 
 	blocksize = MIN(maxsize, blocksize);
 	map_count = maxsize / blocksize;
-- 
1.8.3.1


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

* [LTP] [PATCH v2 2/2] syscalls/ioctl: ioctl_sg01.c:TBROK: Test killed!
  2021-01-25 13:18 [LTP] [PATCH v2 1/2] syscalls/ioctl: ioctl_sg01.c: ioctl_sg01 invoked oom-killer Xinpeng Liu
@ 2021-01-25 13:18 ` Xinpeng Liu
  2021-01-27  6:20 ` [LTP] [PATCH v2 1/2] syscalls/ioctl: ioctl_sg01.c: ioctl_sg01 invoked oom-killer liuxp11
  1 sibling, 0 replies; 3+ messages in thread
From: Xinpeng Liu @ 2021-01-25 13:18 UTC (permalink / raw)
  To: ltp

[root@test ioctl]# ./ioctl_sg01
tst_test.c:1263: TINFO: Timeout per run is 0h 05m 00s
ioctl_sg01.c:81: TINFO: Found SCSI device /dev/sg2
Test timeouted, sending SIGKILL!
Test timeouted, sending SIGKILL!
Test timeouted, sending SIGKILL!
Test timeouted, sending SIGKILL!
tst_test.c:1308: TINFO: If you are running on slow machine, try exporting
LTP_TIMEOUT_MUL > 1
tst_test.c:1309: TBROK: Test killed! (timeout?)

[root@test ioctl]# lscpu |grep Model
Model:                 85
Model name:            Intel(R) Xeon(R) Gold 5218 CPU @ 2.30GHz

[root@test ioctl]# free -h
      total   used    free   shared  buff/cache   available
      Mem:   502G    2.7G    499G    82M      820M        497G
      Swap:  0B      0B      0B

>512G RAM is too common,so setting .timeout -1, result is TPASS.
---
 testcases/kernel/syscalls/ioctl/ioctl_sg01.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/testcases/kernel/syscalls/ioctl/ioctl_sg01.c b/testcases/kernel/syscalls/ioctl/ioctl_sg01.c
index 94b30dc..da0b074 100644
--- a/testcases/kernel/syscalls/ioctl/ioctl_sg01.c
+++ b/testcases/kernel/syscalls/ioctl/ioctl_sg01.c
@@ -123,6 +123,7 @@ static void run(void)
 }
 
 static struct tst_test test = {
+	.timeout = -1,
 	.test_all = run,
 	.setup = setup,
 	.cleanup = cleanup,
-- 
1.8.3.1


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

* [LTP] [PATCH v2 1/2] syscalls/ioctl: ioctl_sg01.c: ioctl_sg01 invoked oom-killer
  2021-01-25 13:18 [LTP] [PATCH v2 1/2] syscalls/ioctl: ioctl_sg01.c: ioctl_sg01 invoked oom-killer Xinpeng Liu
  2021-01-25 13:18 ` [LTP] [PATCH v2 2/2] syscalls/ioctl: ioctl_sg01.c:TBROK: Test killed! Xinpeng Liu
@ 2021-01-27  6:20 ` liuxp11
  1 sibling, 0 replies; 3+ messages in thread
From: liuxp11 @ 2021-01-27  6:20 UTC (permalink / raw)
  To: ltp

sorry,
unsigned long available_ram = SAFE_READ_MEMINFO("MemAvailable:"); 
--->unsigned long available_ram = 1024 * SAFE_READ_MEMINFO("MemAvailable:"); 
From: Xinpeng Liu
Date: 2021-01-25 21:18
To: ltp
CC: Xinpeng Liu
Subject: [PATCH v2 1/2] syscalls/ioctl: ioctl_sg01.c: ioctl_sg01 invoked oom-killer
Kernel version is 5.4.81+,the available RAM is less than free,as follow:
[root@liuxp mywork]# head /proc/meminfo
MemTotal:       198101744 kB
MemFree:        189303148 kB
MemAvailable:   188566732 kB
 
So use available RAM to avoid OOM killer.
---
lib/tst_memutils.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
 
diff --git a/lib/tst_memutils.c b/lib/tst_memutils.c
index dd09db4..8596005 100644
--- a/lib/tst_memutils.c
+++ b/lib/tst_memutils.c
@@ -18,6 +18,7 @@ void tst_pollute_memory(size_t maxsize, int fillchar)
size_t i, map_count = 0, safety = 0, blocksize = BLOCKSIZE;
void **map_blocks;
struct sysinfo info;
+ unsigned long available_ram = SAFE_READ_MEMINFO("MemAvailable:");
SAFE_SYSINFO(&info);
safety = MAX(4096 * SAFE_SYSCONF(_SC_PAGESIZE), 128 * 1024 * 1024);
@@ -26,15 +27,19 @@ void tst_pollute_memory(size_t maxsize, int fillchar)
if (info.freeswap > safety)
safety = 0;
+ /*"MemAvailable" field maybe not exist, or freeram less than available_ram*/
+ if(available_ram == 0 || info.freeram < available_ram)
+ available_ram = info.freeram;
+
/* Not enough free memory to avoid invoking OOM killer */
- if (info.freeram <= safety)
+ if (available_ram <= safety)
return;
if (!maxsize)
maxsize = SIZE_MAX;
- if (info.freeram - safety < maxsize / info.mem_unit)
- maxsize = (info.freeram - safety) * info.mem_unit;
+ if (available_ram - safety < maxsize / info.mem_unit)
+ maxsize = (available_ram - safety) * info.mem_unit;
blocksize = MIN(maxsize, blocksize);
map_count = maxsize / blocksize;
-- 
1.8.3.1
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.linux.it/pipermail/ltp/attachments/20210127/85153326/attachment.htm>

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

end of thread, other threads:[~2021-01-27  6:20 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-25 13:18 [LTP] [PATCH v2 1/2] syscalls/ioctl: ioctl_sg01.c: ioctl_sg01 invoked oom-killer Xinpeng Liu
2021-01-25 13:18 ` [LTP] [PATCH v2 2/2] syscalls/ioctl: ioctl_sg01.c:TBROK: Test killed! Xinpeng Liu
2021-01-27  6:20 ` [LTP] [PATCH v2 1/2] syscalls/ioctl: ioctl_sg01.c: ioctl_sg01 invoked oom-killer liuxp11

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.