* [LTP] [PATCH v2 0/2] updated create_same_memory() inside lib/mem.c
@ 2013-01-04 6:12 Zhouping Liu
2013-01-04 6:12 ` [LTP] [PATCH v2 1/2] mm/lib: rewrote create_same_memory() Zhouping Liu
` (2 more replies)
0 siblings, 3 replies; 11+ messages in thread
From: Zhouping Liu @ 2013-01-04 6:12 UTC (permalink / raw)
To: LTP List
changed in v2:
- modified '_function_name' as 'function_name'
- added 'static' key word for internal function
- updated a little commit log
Zhouping Liu (2):
mm/lib: rewrote create_same_memory()
mm/include: removed the global var 'memory'
testcases/kernel/mem/include/_private.h | 2 +-
testcases/kernel/mem/include/mem.h | 5 -
testcases/kernel/mem/lib/mem.c | 425 +++++++++++++-------------------
3 files changed, 170 insertions(+), 262 deletions(-)
--
1.7.11.7
------------------------------------------------------------------------------
Master HTML5, CSS3, ASP.NET, MVC, AJAX, Knockout.js, Web API and
much more. Get web development skills now with LearnDevNow -
350+ hours of step-by-step video tutorials by Microsoft MVPs and experts.
SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122812
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
^ permalink raw reply [flat|nested] 11+ messages in thread
* [LTP] [PATCH v2 1/2] mm/lib: rewrote create_same_memory()
2013-01-04 6:12 [LTP] [PATCH v2 0/2] updated create_same_memory() inside lib/mem.c Zhouping Liu
@ 2013-01-04 6:12 ` Zhouping Liu
2013-01-08 5:57 ` Wanlong Gao
2013-01-14 1:45 ` Wanlong Gao
2013-01-04 6:12 ` [LTP] [PATCH v3 2/2] mm/include: removed the global var 'memory' Zhouping Liu
2013-01-04 7:06 ` [LTP] [PATCH v2 0/2] updated create_same_memory() inside lib/mem.c Caspar Zhang
2 siblings, 2 replies; 11+ messages in thread
From: Zhouping Liu @ 2013-01-04 6:12 UTC (permalink / raw)
To: LTP List
create_same_memory() was too large and contained lots of duplicated codes,
and it's a little hard-coding, so that it's not easy to read and
extend it for new case.
I splited it for five sub-functions:
ksm_child_memset();
create_ksm_child();
stop_ksm_children();
resume_ksm_children();
create_smae_memory();
Also I intruduced a data struct to control the mergeable data:
struct ksm_merge_data {
char data;
int mergeable_size;
};
Signed-off-by: Zhouping Liu <zliu@redhat.com>
---
testcases/kernel/mem/include/_private.h | 2 +-
testcases/kernel/mem/lib/mem.c | 425 +++++++++++++-------------------
2 files changed, 170 insertions(+), 257 deletions(-)
diff --git a/testcases/kernel/mem/include/_private.h b/testcases/kernel/mem/include/_private.h
index 71164f5..43eda0e 100644
--- a/testcases/kernel/mem/include/_private.h
+++ b/testcases/kernel/mem/include/_private.h
@@ -11,7 +11,7 @@ static void _check(char *path, long int value);
static void _group_check(int run, int pages_shared, int pages_sharing,
int pages_volatile, int pages_unshared,
int sleep_millisecs, int pages_to_scan);
-static void _verify(char value, int proc, int start, int end,
+static void _verify(char **memory_new, char value, int proc, int start, int end,
int start2, int end2);
/* cpuset/memcg */
diff --git a/testcases/kernel/mem/lib/mem.c b/testcases/kernel/mem/lib/mem.c
index f095fe1..87d47a8 100644
--- a/testcases/kernel/mem/lib/mem.c
+++ b/testcases/kernel/mem/lib/mem.c
@@ -200,8 +200,8 @@ static void _group_check(int run, int pages_shared, int pages_sharing,
_check("pages_to_scan", pages_to_scan);
}
-static void _verify(char value, int proc, int start, int end,
- int start2, int end2)
+static void _verify(char **memory_new, char value, int proc,
+ int start, int end, int start2, int end2)
{
int i, j;
void *s = NULL;
@@ -212,14 +212,14 @@ static void _verify(char value, int proc, int start, int end,
tst_resm(TINFO, "child %d verifies memory content.", proc);
memset(s, value, (end - start) * (end2 - start2));
- if (memcmp(memory[proc][start], s, (end - start) * (end2 - start2))
+ if (memcmp(memory_new[start], s, (end - start) * (end2 - start2))
!= 0)
for (j = start; j < end; j++)
for (i = start2; i < end2; i++)
- if (memory[proc][j][i] != value)
+ if (memory_new[j][i] != value)
tst_resm(TFAIL, "child %d has %c at "
"%d,%d,%d.",
- proc, memory[proc][j][i], proc,
+ proc, memory_new[j][i], proc,
j, i);
free(s);
}
@@ -235,299 +235,212 @@ void write_memcg(void)
write_file(MEMCG_PATH_NEW "/tasks", buf);
}
-void create_same_memory(int size, int num, int unit)
+static struct ksm_merge_data {
+ char data;
+ int mergeable_size;
+};
+
+static void ksm_child_memset(int child_num, int size, int total_unit,
+ struct ksm_merge_data ksm_merge_data, char **memory_new)
{
- char buf[BUFSIZ];
- int i, j, k;
- int status;
- int *child;
- long ps, pages;
+ int i, j;
+ int unit = size / total_unit;
- ps = sysconf(_SC_PAGE_SIZE);
- pages = 1024 * 1024 / ps;
+ tst_resm(TINFO, "child %d continues...", child_num);
- child = malloc(num);
- if (child == NULL)
- tst_brkm(TBROK | TERRNO, cleanup, "malloc");
+ if (ksm_merge_data.mergeable_size == size * MB) {
+ tst_resm(TINFO, "child %d allocates %d MB filled with '%c'",
+ child_num, size, ksm_merge_data.data);
- memory = malloc(num * sizeof(**memory));
- if (memory == NULL)
- tst_brkm(TBROK | TERRNO, cleanup, "malloc");
+ } else {
+ tst_resm(TINFO, "child %d allocates %d MB filled with '%c'"
+ " except one page with 'e'",
+ child_num, size, ksm_merge_data.data);
+ }
- /* Don't call cleanup in those children. Instead, do a cleanup from the
- parent after fetched children's status. */
- switch (child[0] = fork()) {
- case -1:
- tst_brkm(TBROK | TERRNO, cleanup, "fork");
- case 0:
- tst_resm(TINFO, "child 0 stops.");
- if (raise(SIGSTOP) == -1)
- tst_brkm(TBROK | TERRNO, tst_exit, "kill");
-
- tst_resm(TINFO, "child 0 continues...");
- tst_resm(TINFO, "child 0 allocates %d MB filled with 'c'.",
- size);
- memory[0] = malloc(size / unit * sizeof(*memory));
- if (memory[0] == NULL)
- tst_brkm(TBROK | TERRNO, tst_exit, "malloc");
- for (j = 0; j * unit < size; j++) {
- memory[0][j] = mmap(NULL, unit * MB,
- PROT_READ | PROT_WRITE,
- MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
- if (memory[0][j] == MAP_FAILED)
- tst_brkm(TBROK | TERRNO, tst_exit, "mmap");
+ for (j = 0; j < total_unit; j++) {
+ for (i = 0; i < unit * MB; i++)
+ memory_new[j][i] = ksm_merge_data.data;
+ }
+
+ /* if it contains unshared page, then set 'e' char
+ * at the end of the last page
+ */
+ if (ksm_merge_data.mergeable_size < size * MB)
+ memory_new[j-1][i-1] = 'e';
+}
+static void create_ksm_child(int child_num, int size, int unit,
+ struct ksm_merge_data *ksm_merge_data)
+{
+ int j, total_unit;
+ char **memory_new;
+
+ /* The total units in all */
+ total_unit = size / unit;
+
+ /* Apply for the space for memory_new */
+ memory_new = (char **)malloc(total_unit * sizeof(char *));
+ for (j = 0; j < total_unit; j++) {
+ memory_new[j] = mmap(NULL, unit * MB, PROT_READ|PROT_WRITE,
+ MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
+ if (memory_new[j] == MAP_FAILED)
+ tst_brkm(TBROK|TERRNO, tst_exit, "mmap");
#ifdef HAVE_MADV_MERGEABLE
- if (madvise(memory[0][j], unit * MB, MADV_MERGEABLE)
- == -1)
- tst_brkm(TBROK | TERRNO, tst_exit, "madvise");
+ if (madvise(memory_new[j], unit * MB, MADV_MERGEABLE) == -1)
+ tst_brkm(TBROK|TERRNO, tst_exit, "madvise");
#endif
- for (i = 0; i < unit * MB; i++)
- memory[0][j][i] = 'c';
- }
- tst_resm(TINFO, "child 0 stops.");
+ }
+
+ tst_resm(TINFO, "child %d stops.", child_num);
+ if (raise(SIGSTOP) == -1)
+ tst_brkm(TBROK|TERRNO, tst_exit, "kill");
+ fflush(stdout);
+
+ for (j = 0; j < 4; j++) {
+
+ ksm_child_memset(child_num, size, total_unit,
+ ksm_merge_data[j], memory_new);
+
+ fflush(stdout);
+
+ tst_resm(TINFO, "child %d stops.", child_num);
if (raise(SIGSTOP) == -1)
- tst_brkm(TBROK | TERRNO, tst_exit, "kill");
-
- tst_resm(TINFO, "child 0 continues...");
- _verify('c', 0, 0, size / unit, 0, unit * MB);
- tst_resm(TINFO, "child 0 changes memory content to 'd'.");
- for (j = 0; j < size / unit; j++) {
- for (i = 0; i < unit * MB; i++)
- memory[0][j][i] = 'd';
+ tst_brkm(TBROK|TERRNO, tst_exit, "kill");
+
+ if (ksm_merge_data[j].mergeable_size < size * MB) {
+ _verify(memory_new, 'e', child_num, total_unit - 1,
+ total_unit, unit * MB - 1, unit * MB);
+ _verify(memory_new, ksm_merge_data[j].data, child_num,
+ 0, total_unit, 0, unit * MB - 1);
+ } else {
+ _verify(memory_new, ksm_merge_data[j].data, child_num,
+ 0, total_unit, 0, unit * MB);
}
- /* Unmerge. */
- tst_resm(TINFO, "child 0 stops.");
- if (raise(SIGSTOP) == -1)
- tst_brkm(TBROK | TERRNO, tst_exit, "kill");
+ }
- tst_resm(TINFO, "child 0 continues...");
- _verify('d', 0, 0, size / unit, 0, unit * MB);
- /* Stop. */
- tst_resm(TINFO, "child 0 stops.");
- if (raise(SIGSTOP) == -1)
- tst_brkm(TBROK | TERRNO, tst_exit, "kill");
- tst_resm(TINFO, "child 0 continues...");
- exit(0);
+ tst_resm(TINFO, "child %d finished.", child_num);
+}
+
+static void stop_ksm_children(int *child, int num)
+{
+ int k, status;
+
+ tst_resm(TINFO, "wait for all children to stop.");
+ for (k = 0; k < num; k++) {
+ if (waitpid(child[k], &status, WUNTRACED) == -1)
+ tst_brkm(TBROK|TERRNO, cleanup, "waitpid");
+ if (!WIFSTOPPED(status))
+ tst_brkm(TBROK, cleanup, "child %d was not stopped", k);
}
- switch (child[1] = fork()) {
- case -1:
- tst_brkm(TBROK | TERRNO, cleanup, "fork");
- case 0:
- tst_resm(TINFO, "child 1 stops.");
- if (raise(SIGSTOP) == -1)
- tst_brkm(TBROK | TERRNO, tst_exit, "kill");
- tst_resm(TINFO, "child 1 continues...");
- tst_resm(TINFO, "child 1 allocates %d MB filled with 'a'.",
- size);
- memory[1] = malloc(size / unit * sizeof(*memory));
- if (memory[1] == NULL)
- tst_brkm(TBROK | TERRNO, tst_exit, "malloc");
- for (j = 0; j < size / unit; j++) {
- memory[1][j] = mmap(NULL, unit * MB,
- PROT_READ | PROT_WRITE,
- MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
- if (memory[1][j] == MAP_FAILED)
- tst_brkm(TBROK | TERRNO, tst_exit, "mmap");
-#ifdef HAVE_MADV_MERGEABLE
- if (madvise(memory[1][j], unit * MB, MADV_MERGEABLE)
- == -1)
- tst_brkm(TBROK | TERRNO, tst_exit, "madvise");
-#endif
- for (i = 0; i < unit * MB; i++)
- memory[1][j][i] = 'a';
- }
- tst_resm(TINFO, "child 1 stops.");
- if (raise(SIGSTOP) == -1)
- tst_brkm(TBROK | TERRNO, tst_exit, "kill");
- tst_resm(TINFO, "child 1 continues...");
- _verify('a', 1, 0, size / unit, 0, unit * MB);
- tst_resm(TINFO, "child 1 changes memory content to 'b'.");
- for (j = 0; j < size / unit; j++) {
- for (i = 0; i < unit * MB; i++)
- memory[1][j][i] = 'b';
- }
- tst_resm(TINFO, "child 1 stops.");
- if (raise(SIGSTOP) == -1)
- tst_brkm(TBROK | TERRNO, tst_exit, "kill");
- tst_resm(TINFO, "child 1 continues...");
- _verify('b', 1, 0, size / unit, 0, unit * MB);
- tst_resm(TINFO, "child 1 changes memory content to 'd'");
- for (j = 0; j < size / unit; j++) {
- for (i = 0; i < unit * MB; i++)
- memory[1][j][i] = 'd';
- }
- if (raise(SIGSTOP) == -1)
- tst_brkm(TBROK | TERRNO, tst_exit, "kill");
+}
- tst_resm(TINFO, "child 1 continues...");
- _verify('d', 1, 0, size / unit, 0, unit * MB);
- tst_resm(TINFO, "child 1 changes one page to 'e'.");
- memory[1][size / unit - 1][unit * MB - 1] = 'e';
+static void resume_ksm_children(int *child, int num)
+{
+ int k, status;
- /* Unmerge. */
- tst_resm(TINFO, "child 1 stops.");
- if (raise(SIGSTOP) == -1)
- tst_brkm(TBROK | TERRNO, tst_exit, "kill");
- tst_resm(TINFO, "child 1 continues...");
- _verify('e', 1, size / unit - 1, size / unit,
- unit * MB - 1, unit * MB);
- _verify('d', 1, 0, size / unit - 1, 0, unit * MB - 1);
-
- /* Stop. */
- tst_resm(TINFO, "child 1 stops.");
- if (raise(SIGSTOP) == -1)
- tst_brkm(TBROK | TERRNO, tst_exit, "kill");
- tst_resm(TINFO, "child 1 continues...");
- exit(0);
+ tst_resm(TINFO, "resume all children.");
+ for (k = 0; k < num; k++) {
+ if (kill(child[k], SIGCONT) == -1)
+ tst_brkm(TBROK|TERRNO, cleanup, "kill child[%d]", k);
}
- for (k = 2; k < num; k++) {
- switch (child[k] = fork()) {
+ fflush(stdout);
+}
+
+void create_same_memory(int size, int num, int unit)
+{
+ char buf[BUFSIZ];
+ int i, j, status, *child;
+ unsigned long ps, pages;
+ struct ksm_merge_data **ksm_data;
+
+ struct ksm_merge_data ksm_data0[] = {
+ {'c', size*MB}, {'c', size*MB}, {'d', size*MB}, {'d', size*MB},
+ };
+ struct ksm_merge_data ksm_data1[] = {
+ {'a', size*MB}, {'b', size*MB}, {'d', size*MB}, {'d', size*MB-1},
+ };
+ struct ksm_merge_data ksm_data2[] = {
+ {'a', size*MB}, {'a', size*MB}, {'d', size*MB}, {'d', size*MB},
+ };
+
+ ps = sysconf(_SC_PAGE_SIZE);
+ pages = MB / ps;
+
+ ksm_data = (struct ksm_merge_data **)malloc
+ ((num - 3) * sizeof(struct ksm_merge_data *));
+ /* Since from third child, the data is same with the first child's */
+ for (i = 0; i < num - 3; i++) {
+ ksm_data[i] = (struct ksm_merge_data *)malloc
+ (4 * sizeof(struct ksm_merge_data));
+ for (j = 0; j < 4; j++) {
+ ksm_data[i][j].data = ksm_data0[j].data;
+ ksm_data[i][j].mergeable_size =
+ ksm_data0[j].mergeable_size;
+ }
+ }
+
+ child = (int *)malloc(num * sizeof(int));
+ if (child == NULL)
+ tst_brkm(TBROK | TERRNO, cleanup, "malloc");
+
+ for (i = 0; i < num; i++) {
+ fflush(stdout);
+ switch (child[i] = fork()) {
case -1:
- tst_brkm(TBROK | TERRNO, cleanup, "fork");
+ tst_brkm(TBROK|TERRNO, cleanup, "fork");
case 0:
- tst_resm(TINFO, "child %d stops.", k);
- if (raise(SIGSTOP) == -1)
- tst_brkm(TBROK | TERRNO, tst_exit, "kill");
- tst_resm(TINFO, "child %d continues...", k);
- tst_resm(TINFO, "child %d allocates %d "
- "MB filled with 'a'.", k, size);
- memory[k] = malloc(size / unit * sizeof(*memory));
- if (memory[k] == NULL)
- tst_brkm(TBROK | TERRNO, tst_exit, "malloc");
- for (j = 0; j < size / unit; j++) {
- memory[k][j] = mmap(NULL, unit * MB,
- PROT_READ | PROT_WRITE,
- MAP_ANONYMOUS
- | MAP_PRIVATE, -1, 0);
- if (memory[k][j] == MAP_FAILED)
- tst_brkm(TBROK | TERRNO, cleanup,
- "mmap");
-#ifdef HAVE_MADV_MERGEABLE
- if (madvise(memory[k][j], unit * MB,
- MADV_MERGEABLE) == -1)
- tst_brkm(TBROK | TERRNO, cleanup,
- "madvise");
-#endif
- for (i = 0; i < unit * MB; i++)
- memory[k][j][i] = 'a';
+ if (i == 0) {
+ create_ksm_child(i, size, unit, ksm_data0);
+ exit(0);
+ } else if (i == 1) {
+ create_ksm_child(i, size, unit, ksm_data1);
+ exit(0);
+ } else if (i == 2) {
+ create_ksm_child(i, size, unit, ksm_data2);
+ exit(0);
+ } else {
+ create_ksm_child(i, size, unit, ksm_data[i-3]);
+ exit(0);
}
- tst_resm(TINFO, "child %d stops.", k);
- if (raise(SIGSTOP) == -1)
- tst_brkm(TBROK | TERRNO, tst_exit, "kill");
- tst_resm(TINFO, "child %d continues...", k);
- tst_resm(TINFO, "child %d changes memory content to "
- "'d'", k);
- for (j = 0; j < size / unit; j++) {
- for (i = 0; i < unit * MB; i++)
- memory[k][j][i] = 'd';
- }
- /* Unmerge. */
- tst_resm(TINFO, "child %d stops.", k);
- if (raise(SIGSTOP) == -1)
- tst_brkm(TBROK | TERRNO, tst_exit, "kill");
- tst_resm(TINFO, "child %d continues...", k);
-
- /* Stop. */
- tst_resm(TINFO, "child %d stops.", k);
- if (raise(SIGSTOP) == -1)
- tst_brkm(TBROK | TERRNO, tst_exit, "kill");
- tst_resm(TINFO, "child %d continues...", k);
- exit(0);
}
}
+
+ stop_ksm_children(child, num);
+
tst_resm(TINFO, "KSM merging...");
write_file(PATH_KSM "run", "1");
snprintf(buf, BUFSIZ, "%ld", size * pages * num);
write_file(PATH_KSM "pages_to_scan", buf);
write_file(PATH_KSM "sleep_millisecs", "0");
- tst_resm(TINFO, "wait for all children to stop.");
- for (k = 0; k < num; k++) {
- if (waitpid(child[k], &status, WUNTRACED) == -1)
- tst_brkm(TBROK | TERRNO, cleanup, "waitpid");
- if (!WIFSTOPPED(status))
- tst_brkm(TBROK, cleanup, "child %d was not stopped.",
- k);
- }
- tst_resm(TINFO, "resume all children.");
- for (k = 0; k < num; k++) {
- if (kill(child[k], SIGCONT) == -1)
- tst_brkm(TBROK | TERRNO, cleanup, "kill child[%d]", k);
- }
+ resume_ksm_children(child, num);
_group_check(1, 2, size * num * pages - 2, 0, 0, 0, size * pages * num);
- tst_resm(TINFO, "wait for child 1 to stop.");
- if (waitpid(child[1], &status, WUNTRACED) == -1)
- tst_brkm(TBROK | TERRNO, cleanup, "waitpid");
- if (!WIFSTOPPED(status))
- tst_brkm(TBROK, cleanup, "child 1 was not stopped.");
-
- /* Child 1 changes all pages to 'b'. */
- tst_resm(TINFO, "resume child 1.");
- if (kill(child[1], SIGCONT) == -1)
- tst_brkm(TBROK | TERRNO, cleanup, "kill");
+ stop_ksm_children(child, num);
+ resume_ksm_children(child, num);
_group_check(1, 3, size * num * pages - 3, 0, 0, 0, size * pages * num);
- tst_resm(TINFO, "wait for child 1 to stop.");
- if (waitpid(child[1], &status, WUNTRACED) == -1)
- tst_brkm(TBROK | TERRNO, cleanup, "waitpid");
- if (!WIFSTOPPED(status))
- tst_brkm(TBROK, cleanup, "child 1 was not stopped.");
-
- /* All children change pages to 'd'. */
- tst_resm(TINFO, "resume all children.");
- for (k = 0; k < num; k++) {
- if (kill(child[k], SIGCONT) == -1)
- tst_brkm(TBROK | TERRNO, cleanup, "kill child[%d]", k);
- }
+ stop_ksm_children(child, num);
+ resume_ksm_children(child, num);
_group_check(1, 1, size * num * pages - 1, 0, 0, 0, size * pages * num);
- tst_resm(TINFO, "wait for all children to stop.");
- for (k = 0; k < num; k++) {
- if (waitpid(child[k], &status, WUNTRACED) == -1)
- tst_brkm(TBROK | TERRNO, cleanup, "waitpid");
- if (!WIFSTOPPED(status))
- tst_brkm(TBROK, cleanup, "child %d was not stopped.",
- k);
- }
- /* Child 1 changes pages to 'e'. */
- tst_resm(TINFO, "resume child 1.");
- if (kill(child[1], SIGCONT) == -1)
- tst_brkm(TBROK | TERRNO, cleanup, "kill");
+ stop_ksm_children(child, num);
+ resume_ksm_children(child, num);
_group_check(1, 1, size * num * pages - 2, 0, 1, 0, size * pages * num);
- tst_resm(TINFO, "wait for child 1 to stop.");
- if (waitpid(child[1], &status, WUNTRACED) == -1)
- tst_brkm(TBROK | TERRNO, cleanup, "waitpid");
- if (!WIFSTOPPED(status))
- tst_brkm(TBROK, cleanup, "child 1 was not stopped.");
+ stop_ksm_children(child, num);
- tst_resm(TINFO, "resume all children.");
- for (k = 0; k < num; k++) {
- if (kill(child[k], SIGCONT) == -1)
- tst_brkm(TBROK | TERRNO, cleanup, "kill child[%d]", k);
- }
tst_resm(TINFO, "KSM unmerging...");
write_file(PATH_KSM "run", "2");
+
+ resume_ksm_children(child, num);
_group_check(2, 0, 0, 0, 0, 0, size * pages * num);
- tst_resm(TINFO, "wait for all children to stop.");
- for (k = 0; k < num; k++) {
- if (waitpid(child[k], &status, WUNTRACED) == -1)
- tst_brkm(TBROK | TERRNO, cleanup, "waitpid");
- if (!WIFSTOPPED(status))
- tst_brkm(TBROK, cleanup, "child %d was not stopped.",
- k);
- }
- tst_resm(TINFO, "resume all children.");
- for (k = 0; k < num; k++) {
- if (kill(child[k], SIGCONT) == -1)
- tst_brkm(TBROK | TERRNO, cleanup, "kill child[%d]", k);
- }
tst_resm(TINFO, "stop KSM.");
write_file(PATH_KSM "run", "0");
_group_check(0, 0, 0, 0, 0, 0, size * pages * num);
+
while (waitpid(-1, &status, WUNTRACED | WCONTINUED) > 0)
if (WEXITSTATUS(status) != 0)
tst_resm(TFAIL, "child exit status is %d",
--
1.7.11.7
------------------------------------------------------------------------------
Master HTML5, CSS3, ASP.NET, MVC, AJAX, Knockout.js, Web API and
much more. Get web development skills now with LearnDevNow -
350+ hours of step-by-step video tutorials by Microsoft MVPs and experts.
SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122812
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [LTP] [PATCH v3 2/2] mm/include: removed the global var 'memory'
2013-01-04 6:12 [LTP] [PATCH v2 0/2] updated create_same_memory() inside lib/mem.c Zhouping Liu
2013-01-04 6:12 ` [LTP] [PATCH v2 1/2] mm/lib: rewrote create_same_memory() Zhouping Liu
@ 2013-01-04 6:12 ` Zhouping Liu
2013-01-08 5:57 ` Wanlong Gao
2013-01-14 1:45 ` Wanlong Gao
2013-01-04 7:06 ` [LTP] [PATCH v2 0/2] updated create_same_memory() inside lib/mem.c Caspar Zhang
2 siblings, 2 replies; 11+ messages in thread
From: Zhouping Liu @ 2013-01-04 6:12 UTC (permalink / raw)
To: LTP List
we don't use the global var 'memory' any more,
so removed it, and changed local var 'memory_new'
as 'memory'.
Signed-off-by: Zhouping Liu <zliu@redhat.com>
---
testcases/kernel/mem/include/_private.h | 2 +-
testcases/kernel/mem/include/mem.h | 5 -----
testcases/kernel/mem/lib/mem.c | 34 ++++++++++++++++-----------------
3 files changed, 18 insertions(+), 23 deletions(-)
diff --git a/testcases/kernel/mem/include/_private.h b/testcases/kernel/mem/include/_private.h
index 43eda0e..d34d417 100644
--- a/testcases/kernel/mem/include/_private.h
+++ b/testcases/kernel/mem/include/_private.h
@@ -11,7 +11,7 @@ static void _check(char *path, long int value);
static void _group_check(int run, int pages_shared, int pages_sharing,
int pages_volatile, int pages_unshared,
int sleep_millisecs, int pages_to_scan);
-static void _verify(char **memory_new, char value, int proc, int start, int end,
+static void _verify(char **memory, char value, int proc, int start, int end,
int start2, int end2);
/* cpuset/memcg */
diff --git a/testcases/kernel/mem/include/mem.h b/testcases/kernel/mem/include/mem.h
index 16a65db..1233493 100644
--- a/testcases/kernel/mem/include/mem.h
+++ b/testcases/kernel/mem/include/mem.h
@@ -36,11 +36,6 @@ void testoom(int mempolicy, int lite, int numa);
#define PATH_SHMMAX "/proc/sys/kernel/shmmax"
-/*
- * memory pointer to identify per process, MB unit, and byte like
- * memory[process No.][MB unit No.][byte No.].
- */
-char ***memory;
void write_memcg(void);
void create_same_memory(int size, int num, int unit);
int opt_num, opt_size, opt_unit;
diff --git a/testcases/kernel/mem/lib/mem.c b/testcases/kernel/mem/lib/mem.c
index 87d47a8..a827b25 100644
--- a/testcases/kernel/mem/lib/mem.c
+++ b/testcases/kernel/mem/lib/mem.c
@@ -200,7 +200,7 @@ static void _group_check(int run, int pages_shared, int pages_sharing,
_check("pages_to_scan", pages_to_scan);
}
-static void _verify(char **memory_new, char value, int proc,
+static void _verify(char **memory, char value, int proc,
int start, int end, int start2, int end2)
{
int i, j;
@@ -212,14 +212,14 @@ static void _verify(char **memory_new, char value, int proc,
tst_resm(TINFO, "child %d verifies memory content.", proc);
memset(s, value, (end - start) * (end2 - start2));
- if (memcmp(memory_new[start], s, (end - start) * (end2 - start2))
+ if (memcmp(memory[start], s, (end - start) * (end2 - start2))
!= 0)
for (j = start; j < end; j++)
for (i = start2; i < end2; i++)
- if (memory_new[j][i] != value)
+ if (memory[j][i] != value)
tst_resm(TFAIL, "child %d has %c at "
"%d,%d,%d.",
- proc, memory_new[j][i], proc,
+ proc, memory[j][i], proc,
j, i);
free(s);
}
@@ -241,7 +241,7 @@ static struct ksm_merge_data {
};
static void ksm_child_memset(int child_num, int size, int total_unit,
- struct ksm_merge_data ksm_merge_data, char **memory_new)
+ struct ksm_merge_data ksm_merge_data, char **memory)
{
int i, j;
int unit = size / total_unit;
@@ -260,34 +260,34 @@ static void ksm_child_memset(int child_num, int size, int total_unit,
for (j = 0; j < total_unit; j++) {
for (i = 0; i < unit * MB; i++)
- memory_new[j][i] = ksm_merge_data.data;
+ memory[j][i] = ksm_merge_data.data;
}
/* if it contains unshared page, then set 'e' char
* at the end of the last page
*/
if (ksm_merge_data.mergeable_size < size * MB)
- memory_new[j-1][i-1] = 'e';
+ memory[j-1][i-1] = 'e';
}
static void create_ksm_child(int child_num, int size, int unit,
struct ksm_merge_data *ksm_merge_data)
{
int j, total_unit;
- char **memory_new;
+ char **memory;
/* The total units in all */
total_unit = size / unit;
- /* Apply for the space for memory_new */
- memory_new = (char **)malloc(total_unit * sizeof(char *));
+ /* Apply for the space for memory */
+ memory = (char **)malloc(total_unit * sizeof(char *));
for (j = 0; j < total_unit; j++) {
- memory_new[j] = mmap(NULL, unit * MB, PROT_READ|PROT_WRITE,
+ memory[j] = mmap(NULL, unit * MB, PROT_READ|PROT_WRITE,
MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
- if (memory_new[j] == MAP_FAILED)
+ if (memory[j] == MAP_FAILED)
tst_brkm(TBROK|TERRNO, tst_exit, "mmap");
#ifdef HAVE_MADV_MERGEABLE
- if (madvise(memory_new[j], unit * MB, MADV_MERGEABLE) == -1)
+ if (madvise(memory[j], unit * MB, MADV_MERGEABLE) == -1)
tst_brkm(TBROK|TERRNO, tst_exit, "madvise");
#endif
}
@@ -300,7 +300,7 @@ static void create_ksm_child(int child_num, int size, int unit,
for (j = 0; j < 4; j++) {
ksm_child_memset(child_num, size, total_unit,
- ksm_merge_data[j], memory_new);
+ ksm_merge_data[j], memory);
fflush(stdout);
@@ -309,12 +309,12 @@ static void create_ksm_child(int child_num, int size, int unit,
tst_brkm(TBROK|TERRNO, tst_exit, "kill");
if (ksm_merge_data[j].mergeable_size < size * MB) {
- _verify(memory_new, 'e', child_num, total_unit - 1,
+ _verify(memory, 'e', child_num, total_unit - 1,
total_unit, unit * MB - 1, unit * MB);
- _verify(memory_new, ksm_merge_data[j].data, child_num,
+ _verify(memory, ksm_merge_data[j].data, child_num,
0, total_unit, 0, unit * MB - 1);
} else {
- _verify(memory_new, ksm_merge_data[j].data, child_num,
+ _verify(memory, ksm_merge_data[j].data, child_num,
0, total_unit, 0, unit * MB);
}
}
--
1.7.11.7
------------------------------------------------------------------------------
Master HTML5, CSS3, ASP.NET, MVC, AJAX, Knockout.js, Web API and
much more. Get web development skills now with LearnDevNow -
350+ hours of step-by-step video tutorials by Microsoft MVPs and experts.
SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122812
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [LTP] [PATCH v2 0/2] updated create_same_memory() inside lib/mem.c
2013-01-04 6:12 [LTP] [PATCH v2 0/2] updated create_same_memory() inside lib/mem.c Zhouping Liu
2013-01-04 6:12 ` [LTP] [PATCH v2 1/2] mm/lib: rewrote create_same_memory() Zhouping Liu
2013-01-04 6:12 ` [LTP] [PATCH v3 2/2] mm/include: removed the global var 'memory' Zhouping Liu
@ 2013-01-04 7:06 ` Caspar Zhang
2013-01-04 7:21 ` Zhouping Liu
2 siblings, 1 reply; 11+ messages in thread
From: Caspar Zhang @ 2013-01-04 7:06 UTC (permalink / raw)
To: Zhouping Liu; +Cc: LTP List
On 01/04/2013 02:12 PM, Zhouping Liu wrote:
> changed in v2:
> - modified '_function_name' as 'function_name'
> - added 'static' key word for internal function
> - updated a little commit log
>
> Zhouping Liu (2):
> mm/lib: rewrote create_same_memory()
> mm/include: removed the global var 'memory'
>
> testcases/kernel/mem/include/_private.h | 2 +-
> testcases/kernel/mem/include/mem.h | 5 -
> testcases/kernel/mem/lib/mem.c | 425 +++++++++++++-------------------
> 3 files changed, 170 insertions(+), 262 deletions(-)
>
Since there is no function updated in the patch, I'm OK to apply it if a
unit-test is executed (better testing in a wide range of systems) and
get ACKs from other reviewers. Zhouping, would you mind pasting some
test details against your patch before we apply it?
Caspar
------------------------------------------------------------------------------
Master HTML5, CSS3, ASP.NET, MVC, AJAX, Knockout.js, Web API and
much more. Get web development skills now with LearnDevNow -
350+ hours of step-by-step video tutorials by Microsoft MVPs and experts.
SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122812
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [LTP] [PATCH v2 0/2] updated create_same_memory() inside lib/mem.c
2013-01-04 7:06 ` [LTP] [PATCH v2 0/2] updated create_same_memory() inside lib/mem.c Caspar Zhang
@ 2013-01-04 7:21 ` Zhouping Liu
2013-01-04 7:31 ` Caspar Zhang
0 siblings, 1 reply; 11+ messages in thread
From: Zhouping Liu @ 2013-01-04 7:21 UTC (permalink / raw)
To: Caspar Zhang; +Cc: LTP List
On 01/04/2013 03:06 PM, Caspar Zhang wrote:
> On 01/04/2013 02:12 PM, Zhouping Liu wrote:
>> changed in v2:
>> - modified '_function_name' as 'function_name'
>> - added 'static' key word for internal function
>> - updated a little commit log
>>
>> Zhouping Liu (2):
>> mm/lib: rewrote create_same_memory()
>> mm/include: removed the global var 'memory'
>>
>> testcases/kernel/mem/include/_private.h | 2 +-
>> testcases/kernel/mem/include/mem.h | 5 -
>> testcases/kernel/mem/lib/mem.c | 425
>> +++++++++++++-------------------
>> 3 files changed, 170 insertions(+), 262 deletions(-)
>>
>
> Since there is no function updated in the patch, I'm OK to apply it if
> a unit-test is executed (better testing in a wide range of systems)
> and get ACKs from other reviewers. Zhouping, would you mind pasting
> some test details against your patch before we apply it?
This is an example of output log with the patch on Fedora 17:
[root@ZhoupingLiu ksm]# ./ksm01 -s 1 -n 6
ksm01 0 TINFO : child 0 stops.
ksm01 0 TINFO : child 1 stops.
ksm01 0 TINFO : child 2 stops.
ksm01 0 TINFO : child 3 stops.
ksm01 0 TINFO : wait for all children to stop.
ksm01 0 TINFO : child 4 stops.
ksm01 0 TINFO : child 5 stops.
ksm01 0 TINFO : KSM merging...
ksm01 0 TINFO : resume all children.
ksm01 0 TINFO : child 0 continues...
ksm01 0 TINFO : child 1 continues...
ksm01 0 TINFO : child 0 allocates 1 MB filled with 'c'
ksm01 0 TINFO : child 1 allocates 1 MB filled with 'a'
ksm01 0 TINFO : child 4 continues...
ksm01 0 TINFO : child 4 allocates 1 MB filled with 'c'
ksm01 0 TINFO : child 2 continues...
ksm01 0 TINFO : child 2 allocates 1 MB filled with 'a'
ksm01 0 TINFO : child 3 continues...
ksm01 0 TINFO : child 3 allocates 1 MB filled with 'c'
ksm01 0 TINFO : child 0 stops.
ksm01 0 TINFO : child 2 stops.
ksm01 0 TINFO : child 3 stops.
ksm01 0 TINFO : child 5 continues...
ksm01 0 TINFO : child 5 allocates 1 MB filled with 'c'
ksm01 0 TINFO : child 4 stops.
ksm01 0 TINFO : child 1 stops.
ksm01 0 TINFO : child 5 stops.
ksm01 0 TINFO : ksm daemon takes 20s to scan all mergeable pages
ksm01 0 TINFO : check!
ksm01 0 TINFO : run is 1.
ksm01 0 TINFO : pages_shared is 2.
ksm01 0 TINFO : pages_sharing is 1534.
ksm01 0 TINFO : pages_volatile is 0.
ksm01 0 TINFO : pages_unshared is 0.
ksm01 0 TINFO : sleep_millisecs is 0.
ksm01 0 TINFO : pages_to_scan is 1536.
ksm01 0 TINFO : wait for all children to stop.
ksm01 0 TINFO : resume all children.
ksm01 0 TINFO : child 1 verifies memory content.
ksm01 0 TINFO : child 0 verifies memory content.
ksm01 0 TINFO : child 2 verifies memory content.
ksm01 0 TINFO : child 1 continues...
ksm01 0 TINFO : child 0 continues...
ksm01 0 TINFO : child 2 continues...
ksm01 0 TINFO : child 1 allocates 1 MB filled with 'b'
ksm01 0 TINFO : child 0 allocates 1 MB filled with 'c'
ksm01 0 TINFO : child 2 allocates 1 MB filled with 'a'
ksm01 0 TINFO : child 2 stops.
ksm01 0 TINFO : child 4 verifies memory content.
ksm01 0 TINFO : child 5 verifies memory content.
ksm01 0 TINFO : child 0 stops.
ksm01 0 TINFO : child 1 stops.
ksm01 0 TINFO : child 3 verifies memory content.
ksm01 0 TINFO : child 4 continues...
ksm01 0 TINFO : child 5 continues...
ksm01 0 TINFO : child 5 allocates 1 MB filled with 'c'
ksm01 0 TINFO : child 4 allocates 1 MB filled with 'c'
ksm01 0 TINFO : child 3 continues...
ksm01 0 TINFO : child 3 allocates 1 MB filled with 'c'
ksm01 0 TINFO : child 5 stops.
ksm01 0 TINFO : child 3 stops.
ksm01 0 TINFO : child 4 stops.
ksm01 0 TINFO : ksm daemon takes 20s to scan all mergeable pages
ksm01 0 TINFO : check!
ksm01 0 TINFO : run is 1.
ksm01 0 TINFO : pages_shared is 3.
ksm01 0 TINFO : pages_sharing is 1533.
ksm01 0 TINFO : pages_volatile is 0.
ksm01 0 TINFO : pages_unshared is 0.
ksm01 0 TINFO : sleep_millisecs is 0.
ksm01 0 TINFO : pages_to_scan is 1536.
ksm01 0 TINFO : wait for all children to stop.
ksm01 0 TINFO : resume all children.
ksm01 0 TINFO : child 1 verifies memory content.
ksm01 0 TINFO : child 0 verifies memory content.
ksm01 0 TINFO : child 2 verifies memory content.
ksm01 0 TINFO : child 1 continues...
ksm01 0 TINFO : child 1 allocates 1 MB filled with 'd'
ksm01 0 TINFO : child 0 continues...
ksm01 0 TINFO : child 2 continues...
ksm01 0 TINFO : child 0 allocates 1 MB filled with 'd'
ksm01 0 TINFO : child 2 allocates 1 MB filled with 'd'
ksm01 0 TINFO : child 3 verifies memory content.
ksm01 0 TINFO : child 3 continues...
ksm01 0 TINFO : child 3 allocates 1 MB filled with 'd'
ksm01 0 TINFO : child 1 stops.
ksm01 0 TINFO : child 0 stops.
ksm01 0 TINFO : child 2 stops.
ksm01 0 TINFO : child 5 verifies memory content.
ksm01 0 TINFO : child 4 verifies memory content.
ksm01 0 TINFO : child 5 continues...
ksm01 0 TINFO : child 5 allocates 1 MB filled with 'd'
ksm01 0 TINFO : child 3 stops.
ksm01 0 TINFO : child 4 continues...
ksm01 0 TINFO : child 4 allocates 1 MB filled with 'd'
ksm01 0 TINFO : child 5 stops.
ksm01 0 TINFO : child 4 stops.
ksm01 0 TINFO : ksm daemon takes 20s to scan all mergeable pages
ksm01 0 TINFO : check!
ksm01 0 TINFO : run is 1.
ksm01 0 TINFO : pages_shared is 1.
ksm01 0 TINFO : pages_sharing is 1535.
ksm01 0 TINFO : pages_volatile is 0.
ksm01 0 TINFO : pages_unshared is 0.
ksm01 0 TINFO : sleep_millisecs is 0.
ksm01 0 TINFO : pages_to_scan is 1536.
ksm01 0 TINFO : wait for all children to stop.
ksm01 0 TINFO : resume all children.
ksm01 0 TINFO : child 1 verifies memory content.
ksm01 0 TINFO : child 0 verifies memory content.
ksm01 0 TINFO : child 2 verifies memory content.
ksm01 0 TINFO : child 4 verifies memory content.
ksm01 0 TINFO : child 1 continues...
ksm01 0 TINFO : child 1 allocates 1 MB filled with 'd' except
one page with 'e'
ksm01 0 TINFO : child 0 continues...
ksm01 0 TINFO : child 2 continues...
ksm01 0 TINFO : child 0 allocates 1 MB filled with 'd'
ksm01 0 TINFO : child 2 allocates 1 MB filled with 'd'
ksm01 0 TINFO : child 4 continues...
ksm01 0 TINFO : child 4 allocates 1 MB filled with 'd'
ksm01 0 TINFO : child 1 stops.
ksm01 0 TINFO : child 0 stops.
ksm01 0 TINFO : child 2 stops.
ksm01 0 TINFO : child 3 verifies memory content.
ksm01 0 TINFO : child 5 verifies memory content.
ksm01 0 TINFO : child 3 continues...
ksm01 0 TINFO : child 3 allocates 1 MB filled with 'd'
ksm01 0 TINFO : child 4 stops.
ksm01 0 TINFO : child 5 continues...
ksm01 0 TINFO : child 5 allocates 1 MB filled with 'd'
ksm01 0 TINFO : child 3 stops.
ksm01 0 TINFO : child 5 stops.
ksm01 0 TINFO : ksm daemon takes 20s to scan all mergeable pages
ksm01 0 TINFO : check!
ksm01 0 TINFO : run is 1.
ksm01 0 TINFO : pages_shared is 1.
ksm01 0 TINFO : pages_sharing is 1534.
ksm01 0 TINFO : pages_volatile is 0.
ksm01 0 TINFO : pages_unshared is 1.
ksm01 0 TINFO : sleep_millisecs is 0.
ksm01 0 TINFO : pages_to_scan is 1536.
ksm01 0 TINFO : wait for all children to stop.
ksm01 0 TINFO : KSM unmerging...
ksm01 0 TINFO : resume all children.
ksm01 0 TINFO : child 1 verifies memory content.
ksm01 0 TINFO : child 1 verifies memory content.
ksm01 0 TINFO : child 0 verifies memory content.
ksm01 0 TINFO : child 4 verifies memory content.
ksm01 0 TINFO : child 4 finished.
ksm01 0 TINFO : child 1 finished.
ksm01 0 TINFO : child 0 finished.
ksm01 0 TINFO : child 5 verifies memory content.
ksm01 0 TINFO : child 5 finished.
ksm01 0 TINFO : child 2 verifies memory content.
ksm01 0 TINFO : child 3 verifies memory content.
ksm01 0 TINFO : child 2 finished.
ksm01 0 TINFO : child 3 finished.
ksm01 0 TINFO : ksm daemon takes 10s to scan all mergeable pages
ksm01 0 TINFO : check!
ksm01 0 TINFO : run is 2.
ksm01 0 TINFO : pages_shared is 0.
ksm01 0 TINFO : pages_sharing is 0.
ksm01 0 TINFO : pages_volatile is 0.
ksm01 0 TINFO : pages_unshared is 0.
ksm01 0 TINFO : sleep_millisecs is 0.
ksm01 0 TINFO : pages_to_scan is 1536.
ksm01 0 TINFO : stop KSM.
ksm01 0 TINFO : ksm daemon takes 10s to scan all mergeable pages
ksm01 0 TINFO : check!
ksm01 0 TINFO : run is 0.
ksm01 0 TINFO : pages_shared is 0.
ksm01 0 TINFO : pages_sharing is 0.
ksm01 0 TINFO : pages_volatile is 0.
ksm01 0 TINFO : pages_unshared is 0.
ksm01 0 TINFO : sleep_millisecs is 0.
ksm01 0 TINFO : pages_to_scan is 1536.
Thanks,
Zhouping
------------------------------------------------------------------------------
Master HTML5, CSS3, ASP.NET, MVC, AJAX, Knockout.js, Web API and
much more. Get web development skills now with LearnDevNow -
350+ hours of step-by-step video tutorials by Microsoft MVPs and experts.
SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122812
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [LTP] [PATCH v2 0/2] updated create_same_memory() inside lib/mem.c
2013-01-04 7:21 ` Zhouping Liu
@ 2013-01-04 7:31 ` Caspar Zhang
2013-01-04 15:29 ` Zhouping Liu
0 siblings, 1 reply; 11+ messages in thread
From: Caspar Zhang @ 2013-01-04 7:31 UTC (permalink / raw)
To: Zhouping Liu; +Cc: LTP List
On 01/04/2013 03:21 PM, Zhouping Liu wrote:
> This is an example of output log with the patch on Fedora 17:
Nice.
Is there a higher coverage of test result (ksm01-05 and on NUMA system /
large system / small system, etc)?
Caspar
------------------------------------------------------------------------------
Master HTML5, CSS3, ASP.NET, MVC, AJAX, Knockout.js, Web API and
much more. Get web development skills now with LearnDevNow -
350+ hours of step-by-step video tutorials by Microsoft MVPs and experts.
SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122812
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [LTP] [PATCH v2 0/2] updated create_same_memory() inside lib/mem.c
2013-01-04 7:31 ` Caspar Zhang
@ 2013-01-04 15:29 ` Zhouping Liu
0 siblings, 0 replies; 11+ messages in thread
From: Zhouping Liu @ 2013-01-04 15:29 UTC (permalink / raw)
To: Caspar Zhang; +Cc: LTP List
On 01/04/2013 03:31 PM, Caspar Zhang wrote:
> On 01/04/2013 03:21 PM, Zhouping Liu wrote:
>> This is an example of output log with the patch on Fedora 17:
>
> Nice.
>
> Is there a higher coverage of test result (ksm01-05 and on NUMA system
> / large system / small system, etc)?
yes, I tested it on i386/x86_64/ppc64 arch, also did it on NUMA system,
ksm0[1-5] all PASSed.
Thanks,
Zhouping
------------------------------------------------------------------------------
Master HTML5, CSS3, ASP.NET, MVC, AJAX, Knockout.js, Web API and
much more. Get web development skills now with LearnDevNow -
350+ hours of step-by-step video tutorials by Microsoft MVPs and experts.
SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122812
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [LTP] [PATCH v2 1/2] mm/lib: rewrote create_same_memory()
2013-01-04 6:12 ` [LTP] [PATCH v2 1/2] mm/lib: rewrote create_same_memory() Zhouping Liu
@ 2013-01-08 5:57 ` Wanlong Gao
2013-01-14 1:45 ` Wanlong Gao
1 sibling, 0 replies; 11+ messages in thread
From: Wanlong Gao @ 2013-01-08 5:57 UTC (permalink / raw)
To: Zhouping Liu; +Cc: LTP List
On 01/04/2013 02:12 PM, Zhouping Liu wrote:
> create_same_memory() was too large and contained lots of duplicated codes,
> and it's a little hard-coding, so that it's not easy to read and
> extend it for new case.
>
> I splited it for five sub-functions:
>
> ksm_child_memset();
> create_ksm_child();
> stop_ksm_children();
> resume_ksm_children();
> create_smae_memory();
>
> Also I intruduced a data struct to control the mergeable data:
>
> struct ksm_merge_data {
> char data;
> int mergeable_size;
> };
>
> Signed-off-by: Zhouping Liu <zliu@redhat.com>
I have no objection.
Acked-by: Wanlong Gao <gaowanlong@cn.fujitsu.com>
Thanks,
Wanlong Gao
------------------------------------------------------------------------------
Master SQL Server Development, Administration, T-SQL, SSAS, SSIS, SSRS
and more. Get SQL Server skills now (including 2012) with LearnDevNow -
200+ hours of step-by-step video tutorials by Microsoft MVPs and experts.
SALE $99.99 this month only - learn more at:
http://p.sf.net/sfu/learnmore_122512
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [LTP] [PATCH v3 2/2] mm/include: removed the global var 'memory'
2013-01-04 6:12 ` [LTP] [PATCH v3 2/2] mm/include: removed the global var 'memory' Zhouping Liu
@ 2013-01-08 5:57 ` Wanlong Gao
2013-01-14 1:45 ` Wanlong Gao
1 sibling, 0 replies; 11+ messages in thread
From: Wanlong Gao @ 2013-01-08 5:57 UTC (permalink / raw)
To: Zhouping Liu; +Cc: LTP List
On 01/04/2013 02:12 PM, Zhouping Liu wrote:
> we don't use the global var 'memory' any more,
> so removed it, and changed local var 'memory_new'
> as 'memory'.
>
> Signed-off-by: Zhouping Liu <zliu@redhat.com>
Acked-by: Wanlong Gao <gaowanlong@cn.fujitsu.com>
------------------------------------------------------------------------------
Master SQL Server Development, Administration, T-SQL, SSAS, SSIS, SSRS
and more. Get SQL Server skills now (including 2012) with LearnDevNow -
200+ hours of step-by-step video tutorials by Microsoft MVPs and experts.
SALE $99.99 this month only - learn more at:
http://p.sf.net/sfu/learnmore_122512
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [LTP] [PATCH v2 1/2] mm/lib: rewrote create_same_memory()
2013-01-04 6:12 ` [LTP] [PATCH v2 1/2] mm/lib: rewrote create_same_memory() Zhouping Liu
2013-01-08 5:57 ` Wanlong Gao
@ 2013-01-14 1:45 ` Wanlong Gao
1 sibling, 0 replies; 11+ messages in thread
From: Wanlong Gao @ 2013-01-14 1:45 UTC (permalink / raw)
To: Zhouping Liu; +Cc: LTP List
On 01/04/2013 02:12 PM, Zhouping Liu wrote:
> create_same_memory() was too large and contained lots of duplicated codes,
> and it's a little hard-coding, so that it's not easy to read and
> extend it for new case.
>
> I splited it for five sub-functions:
>
> ksm_child_memset();
> create_ksm_child();
> stop_ksm_children();
> resume_ksm_children();
> create_smae_memory();
>
> Also I intruduced a data struct to control the mergeable data:
>
> struct ksm_merge_data {
> char data;
> int mergeable_size;
> };
>
> Signed-off-by: Zhouping Liu <zliu@redhat.com>
Applied, thank you.
Wanlong Gao
------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122412
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [LTP] [PATCH v3 2/2] mm/include: removed the global var 'memory'
2013-01-04 6:12 ` [LTP] [PATCH v3 2/2] mm/include: removed the global var 'memory' Zhouping Liu
2013-01-08 5:57 ` Wanlong Gao
@ 2013-01-14 1:45 ` Wanlong Gao
1 sibling, 0 replies; 11+ messages in thread
From: Wanlong Gao @ 2013-01-14 1:45 UTC (permalink / raw)
To: Zhouping Liu; +Cc: LTP List
On 01/04/2013 02:12 PM, Zhouping Liu wrote:
> we don't use the global var 'memory' any more,
> so removed it, and changed local var 'memory_new'
> as 'memory'.
>
> Signed-off-by: Zhouping Liu <zliu@redhat.com>
Applied, thank you.
Wanlong Gao
------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122412
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2013-01-14 1:45 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-04 6:12 [LTP] [PATCH v2 0/2] updated create_same_memory() inside lib/mem.c Zhouping Liu
2013-01-04 6:12 ` [LTP] [PATCH v2 1/2] mm/lib: rewrote create_same_memory() Zhouping Liu
2013-01-08 5:57 ` Wanlong Gao
2013-01-14 1:45 ` Wanlong Gao
2013-01-04 6:12 ` [LTP] [PATCH v3 2/2] mm/include: removed the global var 'memory' Zhouping Liu
2013-01-08 5:57 ` Wanlong Gao
2013-01-14 1:45 ` Wanlong Gao
2013-01-04 7:06 ` [LTP] [PATCH v2 0/2] updated create_same_memory() inside lib/mem.c Caspar Zhang
2013-01-04 7:21 ` Zhouping Liu
2013-01-04 7:31 ` Caspar Zhang
2013-01-04 15:29 ` Zhouping Liu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox