On 07/18/2014 09:24 AM, Paolo Bonzini wrote:
Il 18/07/2014 16:58, Chris Friesen ha scritto:

I've recently run up against an interesting issue where I had a number
of guests running and when I started doing heavy disk I/O on a virtio
disk (backed via ceph rbd) the memory consumption spiked and triggered
the OOM-killer.

I want to reserve some memory for I/O, but I don't know how much it can
use in the worst-case.

Is there a limit on the number of in-flight I/O operations?  (Preferably
as a configurable option, but even hard-coded would be good to know as
well.)

For rbd, there is no such limit in QEMU except the size of the virtio
ring buffer, but librbd may add limits of its own.

For files, there's no limit if you use aio=threads, but the more I/O
operations you trigger the more threads QEMU will create.  After 10
seconds of idle the threads will be destroyed.

Also for files, the limit is 128 per disk if you use aio=native.  You
can only change it by recompilation only.

Has anyone looked at enforcing some limits? I'm okay with throttling performance if necessary, but I really don't want to trigger the OOM-killer.

I could do it locally, but it'd be nice to have some pointers as to where to start.

Chris

Reply via email to