qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] coroutines and block I/O considerations


From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] coroutines and block I/O considerations
Date: Mon, 25 Jul 2011 11:00:18 +0100

On Mon, Jul 25, 2011 at 9:56 AM, Paolo Bonzini <address@hidden> wrote:
> On 07/19/2011 12:57 PM, Stefan Hajnoczi wrote:
>>
>>  From what I understand "committed" on Windows means that physical
>> pages have been allocated and pagefile space has been set aside:
>> http://msdn.microsoft.com/en-us/library/ms810627.aspx
>
> Yes, memory that is "reserved" on Windows is just a contiguous part of the
> address space that is set aside, like MAP_NORESERVE under Linux. Memory that
> is "committed" is really allocated.
>
>> The question is how can we get the same effect on Windows and does the
>> current Fibers implementation not already work?
>
> Windows thread and fiber stacks have both a reserved and a committed part.
>  The dwStackSize argument to CreateFiber indeed represents _committed_ stack
> size, so we're now committing 4 MB of stack per fiber.  The maximum size
> that the stack can grow to is set to the (per-executable) default.
>
> If you want to specify both the reserved and committed stack sizes, you can
> do that with CreateFiberEx.
>
> http://msdn.microsoft.com/en-us/library/ms682406%28v=vs.85%29.aspx
>
> 4 MB is quite a lot of address space anyway to waste for a thread.  A
> coroutine should not need that much, even on Linux.  I think for Windows 64
> KB of initial stack size and 1 MB of maximum size should do (for Linux it
> would 1 MB overall).

I agree, let's make sure not to commit all this memory upfront.

Stefan



reply via email to

[Prev in Thread] Current Thread [Next in Thread]