Anthony PERARD
2011-Aug-01 19:26 UTC
[Xen-devel] [PATCH] xen: Avoid useless allocation in Xen case.
The code_gen_buffer is not use by Xen and can be really big (several GB). Even if the host RAM is not used, this buffer just burn the address space of the QEMU process. So to "avoid" this allocation, the asked tb_size is set to the minimum. The other way to do that would be to not call code_gen_alloc when Xen is enabled. Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> --- vl.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) diff --git a/vl.c b/vl.c index d8c7c01..bd60a89 100644 --- a/vl.c +++ b/vl.c @@ -3106,6 +3106,14 @@ int main(int argc, char **argv, char **envp) } } + if (xen_enabled()) { + /* Allocate only the minimum amount of memory for the code_gen_buffer. + * Xen does not use it and we need the virtual address space for the + * MapCache. + */ + tb_size = 1; + } + /* init the dynamic translator */ cpu_exec_init_all(tb_size * 1024 * 1024); -- Anthony PERARD _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Jan Kiszka
2011-Aug-01 19:57 UTC
[Xen-devel] Re: [PATCH] xen: Avoid useless allocation in Xen case.
On 2011-08-01 21:26, Anthony PERARD wrote:> The code_gen_buffer is not use by Xen and can be really big (several > GB). Even if the host RAM is not used, this buffer just burn the address > space of the QEMU process. > > So to "avoid" this allocation, the asked tb_size is set to the minimum. > > The other way to do that would be to not call code_gen_alloc when Xen is > enabled. > > Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> > --- > vl.c | 8 ++++++++ > 1 files changed, 8 insertions(+), 0 deletions(-) > > diff --git a/vl.c b/vl.c > index d8c7c01..bd60a89 100644 > --- a/vl.c > +++ b/vl.c > @@ -3106,6 +3106,14 @@ int main(int argc, char **argv, char **envp) > } > } > > + if (xen_enabled()) { > + /* Allocate only the minimum amount of memory for the code_gen_buffer. > + * Xen does not use it and we need the virtual address space for the > + * MapCache. > + */ > + tb_size = 1; > + } > +The same applies to kvm, please generalize. Jan _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Jan Kiszka
2011-Aug-02 10:49 UTC
[Xen-devel] Re: [PATCH] xen: Avoid useless allocation in Xen case.
On 2011-08-01 21:57, Jan Kiszka wrote:> On 2011-08-01 21:26, Anthony PERARD wrote: >> The code_gen_buffer is not use by Xen and can be really big (several >> GB). Even if the host RAM is not used, this buffer just burn the address >> space of the QEMU process. >> >> So to "avoid" this allocation, the asked tb_size is set to the minimum. >> >> The other way to do that would be to not call code_gen_alloc when Xen is >> enabled. >> >> Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> >> --- >> vl.c | 8 ++++++++ >> 1 files changed, 8 insertions(+), 0 deletions(-) >> >> diff --git a/vl.c b/vl.c >> index d8c7c01..bd60a89 100644 >> --- a/vl.c >> +++ b/vl.c >> @@ -3106,6 +3106,14 @@ int main(int argc, char **argv, char **envp) >> } >> } >> >> + if (xen_enabled()) { >> + /* Allocate only the minimum amount of memory for the code_gen_buffer. >> + * Xen does not use it and we need the virtual address space for the >> + * MapCache. >> + */ >> + tb_size = 1; >> + } >> + > > The same applies to kvm, please generalize.Actually, qemu-kvm avoids this overhead today by making code_gen_alloc return immediately when kvm is on. Also not very beautiful. Can''t we simply skip cpu_exec_init_all for any accel != TCG, e.g. by moving that call to tcg_init? Jan -- Siemens AG, Corporate Technology, CT T DE IT 1 Corporate Competence Center Embedded Linux _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Anthony PERARD
2011-Aug-02 12:13 UTC
[Xen-devel] Re: [Qemu-devel] [PATCH] xen: Avoid useless allocation in Xen case.
On Tue, Aug 2, 2011 at 11:49, Jan Kiszka <jan.kiszka@siemens.com> wrote:>> The same applies to kvm, please generalize. > > Actually, qemu-kvm avoids this overhead today by making code_gen_alloc > return immediately when kvm is on. Also not very beautiful. > > Can''t we simply skip cpu_exec_init_all for any accel != TCG, e.g. by > moving that call to tcg_init?In the function cpu_exec_init_all(), the call to cpu_gen_init() (and I suppose to io_mem_init()) is still required. So we can not move the whole function to tcg_init(). But I can maybe use "if (!tcg_enabled())" instead of a check to xen. Until no tcg code is use when kvm/xen is enabled. -- Anthony PERARD _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Jan Kiszka
2011-Aug-02 12:49 UTC
[Xen-devel] Re: [Qemu-devel] [PATCH] xen: Avoid useless allocation in Xen case.
On 2011-08-02 14:13, Anthony PERARD wrote:> On Tue, Aug 2, 2011 at 11:49, Jan Kiszka <jan.kiszka@siemens.com> wrote: >>> The same applies to kvm, please generalize. >> >> Actually, qemu-kvm avoids this overhead today by making code_gen_alloc >> return immediately when kvm is on. Also not very beautiful. >> >> Can''t we simply skip cpu_exec_init_all for any accel != TCG, e.g. by >> moving that call to tcg_init? > > In the function cpu_exec_init_all(), the call to cpu_gen_init() (and I > suppose to io_mem_init()) is still required. So we can not move the > whole function to tcg_init(). > > But I can maybe use "if (!tcg_enabled())" instead of a check to xen. > Until no tcg code is use when kvm/xen is enabled.I would prefer to take the chance and clean up. Anything TCG related belongs to tcg_init (or a function called from it). Shared services should be initialized as before. Will send a patch to make a start. Jan -- Siemens AG, Corporate Technology, CT T DE IT 1 Corporate Competence Center Embedded Linux _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel