Skip site navigation (1)Skip section navigation (2)
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>