[Lxc-users] Containers slow to start after 1600

Benoit Lourdelet blourdel at juniper.net
Tue Mar 19 11:52:57 UTC 2013


Hello Serge,

I put together a small table, running your script for various values :

Time are in seconds,

Number of veth, time to create, time to delete:

500  18  26

1000 57 70

2000 193 250

3000 435 510

4000 752  824

5000 1123  1185


Obviously it is far from being linear.

Regards

Benoit



On 18/03/2013 19:24, "Serge Hallyn" <serge.hallyn at ubuntu.com> wrote:

>Quoting Benoit Lourdelet (blourdel at juniper.net):
>> Hello,
>> 
>> 
>> Inline after BL>>
>> 
>> 
>> Quoting Benoit Lourdelet (blourdel at juniper.net):
>> >Hello Serge,
>> >I am running on a 256MB RAM host, with plenty of free memory.
>> 
>> G? :)
>> 
>> >I issue  echo t > /proc/sysrq-trigger  when containers was taking 30s
>>to
>> >start , it gave the following. Nothing that caught my attention.
>> 
>> Hm.  Thanks.
>> 
>> I guess I would first just try:
>> 
>> for i in `seq 1 1700`; do
>> 	sudo unshare -n sleep 2h
>> 	if [ $((i % 100)) -eq 0 ]; then
>> 		echo $i
>> 	fi
>> Done
>> 
>> B>>> on my system, it does not give any output : never reaches "echo"
>> 
>> and see if  it starts to slow down with just that.  If so, then go to
>> the linux-kernel mailing list as there is something in the netns
>> which is not scaling.  If not, then next write a script like
>> 
>> cat > /bin/simplenetns << EOF
>> #!/bin/sh
>> ip link add type veth
>> sleep 2h
>> EOF
>> chmod ugo+x /bin/simplenetns
>> 
>> and do
>> 
>> for i in `seq 1 1700`; do
>> 	sudo unshare -n /bin/simplenetns > /tmp/out.$$ 2>&1 &
>> 	if [ $((i % 100)) -eq 0 ]; then
>> 		echo $i
>> 	fi
>> Done
>> 
>> 
>> BL>> This script takes a couple of second, even I scaled to 5000 without
>> taking more the a couple of seconds.
>
>Great!
>
>> If that slows down, then it's the veth creations doing it.
>> 
>> If not, then try adding the veths from the parent task and one end into
>> the container, so that you end up with n/2 veths in the host.
>> 
>> BL>> I would need detailed instructions.
>
>Well let's first just see if it's sysfs not scaling - what if you just do
>
>for i in `seq 1 2000`; do
>	sudo ip link add type veth
> 	if [ $((i % 100)) -eq 0 ]; then
> 		echo $i
>		ls /sys/class/net
> 	fi
>done
>
>Then make sure to delete them :)
>
>for d in /sys/class/net/veth*; do
>	ip link del `basename $d` 2>/dev/null || true
>done
>
>Now if that still scales fine, then let's try passing the veths into the
>container...  uh, i'll send a script for that after we get this result :)
>
>thanks!
>-serge
>
>> Thanks
>> 
>> Benoit
>> 
>> If that does it, then it may just be a sysfs scalability bug.
>> 
>> And if that still doesn't do it, then try adding the host end of each
>> veth pair to a host bridge.  If that does it, then it may be a bridge
>> scaling issue.
>> 
>> (if you want scripts for the later ones pls shout)
>> 
>> I'll be very interested to hear which if any of these triggers it.
>> 
>> thanks,
>> -serge
>> 
>> 
>






More information about the lxc-users mailing list