From: Nai Xia <nai.xia@gmail.com> To: Andrew Morton <akpm@linux-foundation.org> Cc: Izik Eidus <izik.eidus@ravellosystems.com>, Andrea Arcangeli <aarcange@redhat.com>, Hugh Dickins <hughd@google.com>, Chris Wright <chrisw@sous-sol.org>, Rik van Riel <riel@redhat.com>, "linux-mm" <linux-mm@kvack.org>, Johannes Weiner <hannes@cmpxchg.org>, "linux-kernel" <linux-kernel@vger.kernel.org> Subject: [PATCH 0/2 V2] ksm: take dirty bit as reference to avoid volatile pages scanning Date: Tue, 21 Jun 2011 20:55:25 +0800 [thread overview] Message-ID: <201106212055.25400.nai.xia@gmail.com> (raw) Compared to the first version, this patch set addresses the problem of dirty bit updating of virtual machines, by adding two mmu_notifier interfaces. So it can now track the volatile working set inside KVM guest OS. V1 log: Currently, ksm uses page checksum to detect volatile pages. Izik Eidus suggested that we could use pte dirty bit to optimize. This patch series adds this new logic. Preliminary benchmarks show that the scan speed is improved by up to 16 times on volatile transparent huge pages and up to 8 times on volatile regular pages. Following is the test program to show this top speed up (you need to make ksmd takes about more than 90% of the cpu and watch the ksm/full_scans). #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <unistd.h> #include <sys/mman.h> #define MADV_MERGEABLE 12 #define SIZE (2000*1024*1024) #define PAGE_SIZE 4096 int main(int argc, char **argv) { unsigned char *p; int j; int ret; p = mmap(NULL, SIZE, PROT_WRITE|PROT_READ, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0); if (p == MAP_FAILED) { printf("mmap error\n"); return 0; } ret = madvise(p, SIZE, MADV_MERGEABLE); if (ret==-1) { printf("madvise failed \n"); return 0; } memset(p, 1, SIZE); while (1) { for (j=0; j<SIZE; j+=PAGE_SIZE) { *((long*)(p+j+PAGE_SIZE-4)) = random(); } } return 0; }
WARNING: multiple messages have this Message-ID (diff)
From: Nai Xia <nai.xia@gmail.com> To: Andrew Morton <akpm@linux-foundation.org> Cc: Izik Eidus <izik.eidus@ravellosystems.com>, Andrea Arcangeli <aarcange@redhat.com>, Hugh Dickins <hughd@google.com>, Chris Wright <chrisw@sous-sol.org>, Rik van Riel <riel@redhat.com>, linux-mm <linux-mm@kvack.org>, Johannes Weiner <hannes@cmpxchg.org>, linux-kernel <linux-kernel@vger.kernel.org> Subject: [PATCH 0/2 V2] ksm: take dirty bit as reference to avoid volatile pages scanning Date: Tue, 21 Jun 2011 20:55:25 +0800 [thread overview] Message-ID: <201106212055.25400.nai.xia@gmail.com> (raw) Compared to the first version, this patch set addresses the problem of dirty bit updating of virtual machines, by adding two mmu_notifier interfaces. So it can now track the volatile working set inside KVM guest OS. V1 log: Currently, ksm uses page checksum to detect volatile pages. Izik Eidus suggested that we could use pte dirty bit to optimize. This patch series adds this new logic. Preliminary benchmarks show that the scan speed is improved by up to 16 times on volatile transparent huge pages and up to 8 times on volatile regular pages. Following is the test program to show this top speed up (you need to make ksmd takes about more than 90% of the cpu and watch the ksm/full_scans). #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <unistd.h> #include <sys/mman.h> #define MADV_MERGEABLE 12 #define SIZE (2000*1024*1024) #define PAGE_SIZE 4096 int main(int argc, char **argv) { unsigned char *p; int j; int ret; p = mmap(NULL, SIZE, PROT_WRITE|PROT_READ, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0); if (p == MAP_FAILED) { printf("mmap error\n"); return 0; } ret = madvise(p, SIZE, MADV_MERGEABLE); if (ret==-1) { printf("madvise failed \n"); return 0; } memset(p, 1, SIZE); while (1) { for (j=0; j<SIZE; j+=PAGE_SIZE) { *((long*)(p+j+PAGE_SIZE-4)) = random(); } } return 0; } -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next reply other threads:[~2011-06-21 12:56 UTC|newest] Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top 2011-06-21 12:55 Nai Xia [this message] 2011-06-21 12:55 ` [PATCH 0/2 V2] ksm: take dirty bit as reference to avoid volatile pages scanning Nai Xia 2011-06-21 13:26 ` [PATCH 1/2 " Nai Xia 2011-06-21 13:26 ` Nai Xia 2011-06-21 21:42 ` Chris Wright 2011-06-21 21:42 ` Chris Wright 2011-06-22 0:02 ` Nai Xia 2011-06-22 0:02 ` Nai Xia 2011-06-22 0:42 ` Chris Wright 2011-06-22 0:42 ` Chris Wright 2011-06-21 13:32 ` [PATCH] mmu_notifier, kvm: Introduce dirty bit tracking in spte and mmu notifier to help KSM dirty bit tracking Nai Xia 2011-06-21 13:32 ` Nai Xia 2011-06-22 0:21 ` Chris Wright 2011-06-22 0:21 ` Chris Wright 2011-06-22 4:43 ` Nai Xia 2011-06-22 4:43 ` Nai Xia 2011-06-22 6:15 ` Izik Eidus 2011-06-22 6:15 ` Izik Eidus 2011-06-22 6:38 ` Nai Xia 2011-06-22 6:38 ` Nai Xia 2011-06-22 15:46 ` Chris Wright 2011-06-22 15:46 ` Chris Wright 2011-06-22 10:43 ` Avi Kivity 2011-06-22 10:43 ` Avi Kivity 2011-06-22 11:05 ` Izik Eidus 2011-06-22 11:05 ` Izik Eidus 2011-06-22 11:10 ` Avi Kivity 2011-06-22 11:10 ` Avi Kivity 2011-06-22 11:19 ` Izik Eidus 2011-06-22 11:19 ` Izik Eidus 2011-06-22 11:24 ` Avi Kivity 2011-06-22 11:24 ` Avi Kivity 2011-06-22 11:28 ` Avi Kivity 2011-06-22 11:28 ` Avi Kivity 2011-06-22 11:31 ` Avi Kivity 2011-06-22 11:31 ` Avi Kivity 2011-06-22 11:33 ` Nai Xia 2011-06-22 11:33 ` Nai Xia 2011-06-22 11:39 ` Izik Eidus 2011-06-22 11:39 ` Izik Eidus 2011-06-22 15:39 ` Rik van Riel 2011-06-22 15:39 ` Rik van Riel 2011-06-22 16:55 ` Andrea Arcangeli 2011-06-22 16:55 ` Andrea Arcangeli 2011-06-22 23:37 ` Nai Xia 2011-06-22 23:37 ` Nai Xia 2011-06-22 23:59 ` Andrea Arcangeli 2011-06-22 23:59 ` Andrea Arcangeli 2011-06-23 0:31 ` Nai Xia 2011-06-23 0:31 ` Nai Xia 2011-06-23 0:44 ` Andrea Arcangeli 2011-06-23 0:44 ` Andrea Arcangeli 2011-06-23 1:36 ` Nai Xia 2011-06-23 1:36 ` Nai Xia 2011-06-23 0:00 ` Rik van Riel 2011-06-23 0:00 ` Rik van Riel 2011-06-23 0:42 ` Nai Xia 2011-06-23 0:42 ` Nai Xia 2011-06-22 23:13 ` Nai Xia 2011-06-22 23:13 ` Nai Xia 2011-06-22 23:25 ` Andrea Arcangeli 2011-06-22 23:25 ` Andrea Arcangeli 2011-06-23 1:30 ` Nai Xia 2011-06-23 1:30 ` Nai Xia 2011-06-22 23:28 ` Rik van Riel 2011-06-22 23:28 ` Rik van Riel 2011-06-23 0:52 ` Nai Xia 2011-06-23 0:52 ` Nai Xia 2011-06-22 11:24 ` Nai Xia 2011-06-22 15:03 ` Andrea Arcangeli 2011-06-22 15:03 ` Andrea Arcangeli 2011-06-22 15:19 ` Izik Eidus 2011-06-22 15:19 ` Izik Eidus 2011-06-22 23:19 ` Nai Xia 2011-06-22 23:19 ` Nai Xia 2011-06-22 23:44 ` Andrea Arcangeli 2011-06-22 23:44 ` Andrea Arcangeli 2011-06-23 0:14 ` Nai Xia 2011-06-23 0:14 ` Nai Xia 2011-06-22 23:42 ` Nai Xia 2011-06-22 23:42 ` Nai Xia 2011-06-21 13:36 ` [PATCH 2/2 V2] ksm: take dirty bit as reference to avoid volatile pages scanning Nai Xia 2011-06-21 13:36 ` Nai Xia 2011-06-21 22:38 ` Chris Wright 2011-06-21 22:38 ` Chris Wright 2011-06-22 0:04 ` Nai Xia 2011-06-22 0:04 ` Nai Xia 2011-06-22 0:35 ` Chris Wright 2011-06-22 0:35 ` Chris Wright 2011-06-22 4:47 ` Nai Xia 2011-06-22 4:47 ` Nai Xia 2011-06-22 10:55 ` Nai Xia 2011-06-22 10:55 ` Nai Xia 2011-06-22 0:46 ` [PATCH 0/2 " Chris Wright 2011-06-22 0:46 ` Chris Wright 2011-06-22 4:15 ` Nai Xia
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=201106212055.25400.nai.xia@gmail.com \ --to=nai.xia@gmail.com \ --cc=aarcange@redhat.com \ --cc=akpm@linux-foundation.org \ --cc=chrisw@sous-sol.org \ --cc=hannes@cmpxchg.org \ --cc=hughd@google.com \ --cc=izik.eidus@ravellosystems.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=riel@redhat.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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.