Could you set vm.allocate_pgste = 1 by default?

Bug #1533646 reported by Dimitri John Ledkov
12
This bug affects 1 person
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Invalid
Wishlist
Andy Whitcroft
procps (Ubuntu)
Fix Released
Undecided
Unassigned

Bug Description

Hello,

to use qemu one needs vm.allocate_pgste = 1, on kernels that support that setting e.g. s390x.
I'm now setting it with a sysctl.d snippet in procps package, however I was wondering if it could be set by default.

Or not.

Changed in linux (Ubuntu):
importance: Undecided → Wishlist
assignee: nobody → Andy Whitcroft (apw)
Revision history for this message
Brad Figg (brad-figg) wrote : Missing required logs.

This bug is missing log files that will aid in diagnosing the problem. From a terminal window please run:

apport-collect 1533646

and then change the status of the bug to 'Confirmed'.

If, due to the nature of the issue you have encountered, you are unable to run this command, please add a comment stating that fact and change the bug status to 'Confirmed'.

This change has been made by an automated script, maintained by the Ubuntu Kernel Team.

Changed in linux (Ubuntu):
status: New → Incomplete
Revision history for this message
Tim Gardner (timg-tpi) wrote :

Dimitri - Setting vm.allocate_pgste is a policy decision (which the kernel typically does not make). Is there a good reason not to set it in procps ? There is some extra overhead when vm.allocate_pgste=1.

Revision history for this message
Dimitri John Ledkov (xnox) wrote :

cool. Is there a way to measure vm.allocate_pgste=1 overheads and is it ok to enable by default? It's needed only on vm hosts... maybe i should add it to the qemu package only? or like try to add systemd hackery to only apply it on bare-metal? (well nested virtualisation is supported...)

Revision history for this message
Christian Borntraeger (borntraeger) wrote :

the TCG emulation of QEMU does work without allocatr_pgste.
vm.allocate_pgste=1 is necessary to use the KVM kernel module (which is used by qemu in kvm mode)

The main difference is that this uses 4k page tables instead of 2k page tables on s390. So enabling pgstes will increase the page table overhead. The difference is usually pretty small, but might become noticeable when you have things like a big database with hundreds of processes accessing a big area of shared memory.

Maybe something like
# cat /etc/modprobe.d/99-kvm.conf
install kvm /sbin/sysctl vm.allocate_pgste=1; /sbin/modprobe --ignore-install kvm
remove kvm /sbin/sysctl vm.allocate_pgste=0; /sbin/modprobe -r --ignore-remove kvm

would be good enough?

Revision history for this message
Dimitri John Ledkov (xnox) wrote : Re: [Bug 1533646] Re: Could you set vm.allocate_pgste = 1 by default?

On 20 January 2016 at 19:44, Christian Borntraeger
<email address hidden> wrote:
> the TCG emulation of QEMU does work without allocatr_pgste.
> vm.allocate_pgste=1 is necessary to use the KVM kernel module (which is used by qemu in kvm mode)
>
> The main difference is that this uses 4k page tables instead of 2k page
> tables on s390. So enabling pgstes will increase the page table
> overhead. The difference is usually pretty small, but might become
> noticeable when you have things like a big database with hundreds of
> processes accessing a big area of shared memory.
>

Thank you for the info.

> Maybe something like
> # cat /etc/modprobe.d/99-kvm.conf
> install kvm /sbin/sysctl vm.allocate_pgste=1; /sbin/modprobe --ignore-install kvm
> remove kvm /sbin/sysctl vm.allocate_pgste=0; /sbin/modprobe -r --ignore-remove kvm
>
> would be good enough?
>

In newer kernel config we have kvm module as a built in, rather than a module.

I was thinking to move vm.allocate_pgste=1 from procps package
(installed everywhere) to qemu package (installed when going to run
VMs).

--
Regards,

Dimitri.

Revision history for this message
Christian Borntraeger (borntraeger) wrote :

ok, kvm builtin certainly makes sense if you plan to use it regularly.
So in essence its a question about: do we expect a number of users to use KVM in Ubuntu or not?

Revision history for this message
Dimitri John Ledkov (xnox) wrote :

On 21 January 2016 at 08:38, Christian Borntraeger
<email address hidden> wrote:
> ok, kvm builtin certainly makes sense if you plan to use it regularly.
> So in essence its a question about: do we expect a number of users to use KVM in Ubuntu or not?
>

Yes.
Last I checked, on all architectures it is a built-in, apart from
x86_64. There are two modules available on x86_64 the Intel and Amd
one, and the right one is detected and autoloaded on boot.

--
Regards,

Dimitri.

Revision history for this message
Viktor Mihajlovski (mihajlov-deactivatedaccount) wrote :

In my opinion it will be best to set vm.allocate_pgste = 1 unconditionally, regardless of whether qemu is installed or not, and only have the user switch it off for certain memory-intensive workloads (if required at all).

Revision history for this message
Christian Borntraeger (borntraeger) wrote :

My modprobe.conf solution might not work in all cases, as the kvm module might be loaded on demand by a process accessing /dev/kvm. That process then already has 2k page tables.
 So I agree with Viktor: If we want to support KVM, maybe set vm.allocate_pgste = 1 unconditionally.

Changed in procps (Ubuntu):
status: New → Fix Released
Changed in linux (Ubuntu):
status: Incomplete → Invalid
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.