[libvirt] [PATCH] LXC: create directory /dev/shm automatically

Gao feng gaofeng at cn.fujitsu.com
Tue Jan 29 07:27:14 UTC 2013


On 2013/01/29 12:09, Kamezawa Hiroyuki wrote:
> (2013/01/29 11:16), Gao feng wrote:
>> On 2013/01/29 07:52, Kamezawa Hiroyuki wrote:
>>> (2013/01/28 19:36), Daniel P. Berrange wrote:
>>>> On Mon, Jan 28, 2013 at 02:37:11PM +0800, Gao feng wrote:
>>>>> Now we mount /dev as tmpfs and haven't created directory
>>>>> /dev/shm,so the glibc api such as shm_open/sem_open will
>>>>> create files under dir /dev.(since /dev is mounted as tmpfs)
>>>>>
>>>>> Through these api still useable in container,but this cause
>>>>> directory /dev looks a little chaos.
>>>>>
>>>>> This patch create directory /dev/shm automatically,the files
>>>>> created by shm_open/sem_open will stay in this directroy.
>>>>>
>>>>> Signed-off-by: Gao feng <gaofeng at cn.fujitsu.com>
>>>>> ---
>>>>>    src/lxc/lxc_container.c | 7 +++++++
>>>>>    1 file changed, 7 insertions(+)
>>>>>
>>>>> diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c
>>>>> index 497539c..5150564 100644
>>>>> --- a/src/lxc/lxc_container.c
>>>>> +++ b/src/lxc/lxc_container.c
>>>>> @@ -586,6 +586,13 @@ static int lxcContainerMountBasicFS(bool pivotRoot,
>>>>>                                     "devfs", "/dev", "tmpfs", opts);
>>>>>                goto cleanup;
>>>>>            }
>>>>> +
>>>>> +        VIR_DEBUG("create directory /dev/shm for POSIX shared memory and named semphore");
>>>>> +        if (virFileMakePath("/dev/shm") < 0) {
>>>>> +            virReportSystemError(errno, "%s",
>>>>> +                                 _("Failed to mkdir /dev/shm"));
>>>>> +            goto cleanup;
>>>>> +        }
>>>>>        }
>>>>>
>>>>>        rc = 0;
>>>>
>>>> I we probably want to mount a separate tmpfs on /dev/shm really, so we can
>>>> do resource limits on /dev and /dev/shm separately.
>>>
>>> I agree.
>>> BTW, if the user wants to tune limit of /dev/shm size, he need to add
>>>
>>> <filesystem type='ram'>
>>>    <source usage='XXXXX'/>
>>>    <target dir='/dev/shm'/>
>>> </filesystem>
>>>
>>> ?
>>>
>>> How do you think suitable limit for default should be ?
>>> half of memory limit of a container ?
>>>
>>>
>>
>> I think we needn't consider about this problem,The root user
>> of the container should do this job.
>>
>> For libvirt lxc,we only need to limit the memory resource that
>> the container uses.And we needn't setup any xml configuration too.
>>
>> Or maybe I misunderstand what you mean?
>>
> 
> "How large you can make files on a fs" is different from memcg's limit.
> 
> IIUC, tmpfs's size is detemined as the half of system memory regardless of
> the configuration of a domain. So,
> 
> - if a domain is enough big, shm's memory usage will hit tmpfs' limit before
>   memcg's.
> - if a domain is enough small, shm's memory usage will hit memcg's limit before
>   tmpfs's.
> 
> I think it's complicated and hard to use from viewpoint of application in a
> container.
> 
> IMHO, tmpfs's limit size should be same to <memory> tag at default.

same or half of memory size of container?
it looks like kernel set tmpfs's size to half of physical ram by default.

I will look in devtmpfs and the limit of tmpfs.

Thanks!




More information about the libvir-list mailing list