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

Kamezawa Hiroyuki kamezawa.hiroyu at jp.fujitsu.com
Tue Jan 29 07:29:46 UTC 2013


(2013/01/29 16:27), Gao feng wrote:
> 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.
>
Yes. And It's a random value from container's point of view.

Thanks,
-Kame





More information about the libvir-list mailing list