Date: Wed, 5 Sep 2007 17:17:43 +0800 From: "yunfeng zhang" <zyf.zeroos@gmail.com> To: freebsd-hackers@freebsd.org Subject: VM swap subsystem improvement on FreeBSD core code Message-ID: <4df04b840709050217j5d90edcas4d74f5eacccde57a@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
Dear core developers: I'm glad to show the ideas I got to you all in http://www.ussg.iu.edu/hypermail/linux/kernel/0708.2/2563.html -- the patch I done for Linux core. I think the key ideas in it is also enhancing FreeBSD vm system. The article includes three main ideas. 1) dftlb. 2) PrivatePage should be privatelized totally. 3) Swap nail arithmetic. Here is a brief description about the 1st idea. dftlb is designed for enhancing the performance of unmapping physical pages from their page tables on SMP. It can flush TLBs batchly without EVEN pausing other CPUs. The job is done by collecting all unmapping tasks mainly done by pageout deamon for page-reclamation purpose into a static core object struct { int start_addr; int end_addr; } dftlb_tasks[32]; when the object is full, send IPI to other CPUs to flush it by flush_tlb_range then continue to fill it. Contrast to current FreeBSD unmapping process, the efficience is at least 100+ times. dftlb is based on the conditions listed below 1) atomic cmpxchg instruction. 2) atomically set the access bit after CPU touches a pte firstly. Fortunately, the method can be implemented without shaking the infrastructure of FreeBSD vm at all. The idea can be done by a new core daemon -- kppsd in my patch totally. By the way, read the document I done at the head of the patch firstly by vim7.0.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4df04b840709050217j5d90edcas4d74f5eacccde57a>