diff mbox

xen/arm: increase default dom0_mem to 512M

Message ID alpine.DEB.2.10.1702151503060.9566@sstabellini-ThinkPad-X260 (mailing list archive)
State New, archived
Headers show

Commit Message

Stefano Stabellini Feb. 15, 2017, 11:05 p.m. UTC
The default dom0_mem is 128M which is not sufficient to boot a Ubuntu
based Dom0. Increase it to 512M.

Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>

Comments

Julien Grall Feb. 16, 2017, 9:32 a.m. UTC | #1
Hi Stefano,

On 15/02/2017 23:05, Stefano Stabellini wrote:
> The default dom0_mem is 128M which is not sufficient to boot a Ubuntu
> based Dom0. Increase it to 512M.
>
> Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>

I am not a big fan of increasing the default value. 128M is plenty 
enough if you use a small DOM0 (e.g buildroot or yocto) and people may 
rely on it because it is the default value in the documentation
(see docs/misc/xen-command-line.markdown).

Also, 512M may boot Ubuntu for you but it might not be the case in all 
the configuration. There is no perfect default value, but I think the 
smaller is better. Looking at the documentation, it looks like x86 is 
using 128MB or 1/16 of the memory (whichever is smaller).

But to be fair, I am not even sure why there is a default value, it is 
quite easy to specify the amount of memory used by DOM0 on the command line.

> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> index c97a1f5..f4612a2 100644
> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -31,7 +31,7 @@ integer_param("dom0_max_vcpus", opt_dom0_max_vcpus);
>
>  int dom0_11_mapping = 1;
>
> -#define DOM0_MEM_DEFAULT 0x8000000 /* 128 MiB */
> +#define DOM0_MEM_DEFAULT 0x20000000 /* 512 MiB */

I would use the MB(..) macro here to make the code more readable.

>  static u64 __initdata dom0_mem = DOM0_MEM_DEFAULT;
>
>  static void __init parse_dom0_mem(const char *s)
>

Cheers,
Stefano Stabellini Feb. 16, 2017, 8:17 p.m. UTC | #2
On Thu, 16 Feb 2017, Julien Grall wrote:
> Hi Stefano,
> 
> On 15/02/2017 23:05, Stefano Stabellini wrote:
> > The default dom0_mem is 128M which is not sufficient to boot a Ubuntu
> > based Dom0. Increase it to 512M.
> > 
> > Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
> 
> I am not a big fan of increasing the default value. 128M is plenty enough if
> you use a small DOM0 (e.g buildroot or yocto) and people may rely on it
> because it is the default value in the documentation
> (see docs/misc/xen-command-line.markdown).
> 
> Also, 512M may boot Ubuntu for you but it might not be the case in all the
> configuration. There is no perfect default value, but I think the smaller is
> better. Looking at the documentation, it looks like x86 is using 128MB or 1/16
> of the memory (whichever is smaller).
> 
> But to be fair, I am not even sure why there is a default value, it is quite
> easy to specify the amount of memory used by DOM0 on the command line.

This is a topic particularly prone to bike-shedding :-)

Like you wrote, there is no perfect default value. The problem with
128M is that Dom0 will fail to boot without any meaningful errors. I
think it makes for a poor out of the box experience: the user is trying
to boot Xen for the first time on her board, she hasn't customized
much yet, and she has to waste a couple of hours to figure out why Dom0
is crashing.

On the other end, people that are trying to use as little memory as
possible, they are well past the first Xen boot, and they are most
certainly aware of the dom0_mem parameter.

In other words, setting dom0_mem to 128M by default hurts first time
users without helping seasoned users very much.

Rather than having dom0_mem=128M by default, causing a dom0 crash
without any obvious errors, I would rather crash Xen explicitly if
dom0_mem is not set. That way, the user is forced to type in the
dom0_mem parameter and could more easily guess why dom0 is crashing.


> > diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> > index c97a1f5..f4612a2 100644
> > --- a/xen/arch/arm/domain_build.c
> > +++ b/xen/arch/arm/domain_build.c
> > @@ -31,7 +31,7 @@ integer_param("dom0_max_vcpus", opt_dom0_max_vcpus);
> > 
> >  int dom0_11_mapping = 1;
> > 
> > -#define DOM0_MEM_DEFAULT 0x8000000 /* 128 MiB */
> > +#define DOM0_MEM_DEFAULT 0x20000000 /* 512 MiB */
> 
> I would use the MB(..) macro here to make the code more readable.

I'll do that


> >  static u64 __initdata dom0_mem = DOM0_MEM_DEFAULT;
> > 
> >  static void __init parse_dom0_mem(const char *s)
> >
Julien Grall Feb. 17, 2017, 3:13 p.m. UTC | #3
Hi Stefano,

On 16/02/17 20:17, Stefano Stabellini wrote:
> On Thu, 16 Feb 2017, Julien Grall wrote:
>> Hi Stefano,
>>
>> On 15/02/2017 23:05, Stefano Stabellini wrote:
>>> The default dom0_mem is 128M which is not sufficient to boot a Ubuntu
>>> based Dom0. Increase it to 512M.
>>>
>>> Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
>>
>> I am not a big fan of increasing the default value. 128M is plenty enough if
>> you use a small DOM0 (e.g buildroot or yocto) and people may rely on it
>> because it is the default value in the documentation
>> (see docs/misc/xen-command-line.markdown).
>>
>> Also, 512M may boot Ubuntu for you but it might not be the case in all the
>> configuration. There is no perfect default value, but I think the smaller is
>> better. Looking at the documentation, it looks like x86 is using 128MB or 1/16
>> of the memory (whichever is smaller).
>>
>> But to be fair, I am not even sure why there is a default value, it is quite
>> easy to specify the amount of memory used by DOM0 on the command line.
>
> This is a topic particularly prone to bike-shedding :-)
>
> Like you wrote, there is no perfect default value. The problem with
> 128M is that Dom0 will fail to boot without any meaningful errors. I
> think it makes for a poor out of the box experience: the user is trying
> to boot Xen for the first time on her board, she hasn't customized
> much yet, and she has to waste a couple of hours to figure out why Dom0
> is crashing.
>
> On the other end, people that are trying to use as little memory as
> possible, they are well past the first Xen boot, and they are most
> certainly aware of the dom0_mem parameter.
>
> In other words, setting dom0_mem to 128M by default hurts first time
> users without helping seasoned users very much.
>
> Rather than having dom0_mem=128M by default, causing a dom0 crash
> without any obvious errors, I would rather crash Xen explicitly if
> dom0_mem is not set. That way, the user is forced to type in the
> dom0_mem parameter and could more easily guess why dom0 is crashing.

Crashing if dom0_mem is not set would be my preferred way. At least we 
won't have a default value that is a bit random. Ubuntu uses 512MB 
today, but who knows tomorrow?

In any case, any change on the command line needs to be documented in 
docs/misc/xen-command-line.markdown.

Cheers,
Stefano Stabellini Feb. 17, 2017, 11:35 p.m. UTC | #4
On Fri, 17 Feb 2017, Julien Grall wrote:
> Hi Stefano,
> 
> On 16/02/17 20:17, Stefano Stabellini wrote:
> > On Thu, 16 Feb 2017, Julien Grall wrote:
> > > Hi Stefano,
> > > 
> > > On 15/02/2017 23:05, Stefano Stabellini wrote:
> > > > The default dom0_mem is 128M which is not sufficient to boot a Ubuntu
> > > > based Dom0. Increase it to 512M.
> > > > 
> > > > Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
> > > 
> > > I am not a big fan of increasing the default value. 128M is plenty enough
> > > if
> > > you use a small DOM0 (e.g buildroot or yocto) and people may rely on it
> > > because it is the default value in the documentation
> > > (see docs/misc/xen-command-line.markdown).
> > > 
> > > Also, 512M may boot Ubuntu for you but it might not be the case in all the
> > > configuration. There is no perfect default value, but I think the smaller
> > > is
> > > better. Looking at the documentation, it looks like x86 is using 128MB or
> > > 1/16
> > > of the memory (whichever is smaller).
> > > 
> > > But to be fair, I am not even sure why there is a default value, it is
> > > quite
> > > easy to specify the amount of memory used by DOM0 on the command line.
> > 
> > This is a topic particularly prone to bike-shedding :-)
> > 
> > Like you wrote, there is no perfect default value. The problem with
> > 128M is that Dom0 will fail to boot without any meaningful errors. I
> > think it makes for a poor out of the box experience: the user is trying
> > to boot Xen for the first time on her board, she hasn't customized
> > much yet, and she has to waste a couple of hours to figure out why Dom0
> > is crashing.
> > 
> > On the other end, people that are trying to use as little memory as
> > possible, they are well past the first Xen boot, and they are most
> > certainly aware of the dom0_mem parameter.
> > 
> > In other words, setting dom0_mem to 128M by default hurts first time
> > users without helping seasoned users very much.
> > 
> > Rather than having dom0_mem=128M by default, causing a dom0 crash
> > without any obvious errors, I would rather crash Xen explicitly if
> > dom0_mem is not set. That way, the user is forced to type in the
> > dom0_mem parameter and could more easily guess why dom0 is crashing.
> 
> Crashing if dom0_mem is not set would be my preferred way. At least we won't
> have a default value that is a bit random. Ubuntu uses 512MB today, but who
> knows tomorrow?

I have an idea: what if in case dom0_mem is not, we print a warning,
then wait 3 full seconds and continue with a large dom0_mem? That way,
it would be impossible to ignore, but at the same time the user could
fix the problem right away from dom0 as soon as it's booted?
diff mbox

Patch

diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index c97a1f5..f4612a2 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -31,7 +31,7 @@  integer_param("dom0_max_vcpus", opt_dom0_max_vcpus);
 
 int dom0_11_mapping = 1;
 
-#define DOM0_MEM_DEFAULT 0x8000000 /* 128 MiB */
+#define DOM0_MEM_DEFAULT 0x20000000 /* 512 MiB */
 static u64 __initdata dom0_mem = DOM0_MEM_DEFAULT;
 
 static void __init parse_dom0_mem(const char *s)