Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/sys/arch



On Wed, Jan 10, 2018 at 19:45:26 +0100, Maxime Villard wrote:

> Le 04/01/2018 ? 15:50, Valery Ushakov a ?crit :
> > On Thu, Jan 04, 2018 at 13:36:30 +0000, Maxime Villard wrote:
> > 
> > > Module Name:	src
> > > Committed By:	maxv
> > > Date:		Thu Jan  4 13:36:30 UTC 2018
> > > 
> > > Modified Files:
> > > 	src/sys/arch/amd64/amd64: genassym.cf locore.S machdep.c
> > > 	src/sys/arch/i386/i386: genassym.cf locore.S machdep.c
> > > 	src/sys/arch/x86/include: cpu.h
> > > 	src/sys/arch/x86/x86: intr.c pmap.c sys_machdep.c
> > > 
> > > Log Message:
> > > Allocate the TSS area dynamically. This way cpu_info and cpu_tss can be
> > > put in separate pages.
> > 
> > Splitting tss and cpu info speeds up NetBSD under virtualbox without
> > VT-x quite a bit as vbox traps all TSS accesses and so all the
> > same-page cpu_info accesses are also trapped, slowing things down.
> 
> Did you actually test? And if so, did my commit really change something?

I haven't tested this commit specifically, but I did test it with a
quick hack a few years ago

  https://mail-index.netbsd.org/netbsd-users/2013/06/21/msg013010.html

I don't remember the exact numbers, but it was a lot.  If memory
serves, compiling the kernel was 4x faster or something like that.


> I'm figuring out we might have had a great performance problem here: the
> cpu_info structure is allocated from kmem, which can borrow VA from the
> direct map. Since the direct map was mapped with 1GB superpages (or 2MB
> otherwise), it looks like you could get the whole gigabyte to fault all the
> time.

I don't know if that was true back in 2013 when I tested it, but as
you can see from that kludge I only pushed tss to a page of its own.

-uwe


Home | Main Index | Thread Index | Old Index