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'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 guess I should pull up this change [1] to NetBSD-8 and 7.
Maxime
[1] http://mail-index.netbsd.org/source-changes/2018/01/07/msg090941.html