lkml.org 
[lkml]   [2012]   [Jan]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 3/3] mm: adjust rss counters for migration entiries
This bug can be easily triggered by test-tool in attachment.
I run it with with this arguments: ./mm-thp-torture 100 100
/*
* torture-test for transparent huge pages,
* memory migration and memory compaction =)
*
* usage: ./mm-thp-tortire <threads> <pages>
*
* to eat all avaliable huge pages:
* threads * pages >= ram[mb] / 2[mb]
*
*/

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <sys/mman.h>


#define PAGE_SIZE (4096)
#define HPAGE_SIZE (4096*512)

int main(int argc, char **argv)
{
long pages, threads;
char *buf, *ptr;

if (argc < 3)
return 2;

signal(SIGCHLD, SIG_IGN);

threads = atol(argv[1]);
pages = atol(argv[2]);

buf = mmap(NULL, (pages + 1) * HPAGE_SIZE, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0);
if (buf == MAP_FAILED)
return 3;

buf += HPAGE_SIZE - ((long)buf & (HPAGE_SIZE-1));

while (--threads > 0 && !fork());

while (1) {
for ( ptr = buf ; ptr < buf + pages * HPAGE_SIZE ;
ptr += HPAGE_SIZE ) {
if (mmap(ptr, HPAGE_SIZE, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE|MAP_FIXED,
-1, 0) != ptr)
return 4;
*ptr = 0;
munmap(ptr + PAGE_SIZE, HPAGE_SIZE - PAGE_SIZE);
}
if (!fork())
exit(0);
munmap(buf, pages * HPAGE_SIZE);
}
return 0;
}
\
 
 \ /
  Last update: 2012-01-06 18:47    [W:0.065 / U:0.192 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site