Kar*_*ski 5 performance docker
我怎样才能加速:docker run
和docker exec
命令?
运行命令需要 0.02 秒的用户时间,0.02 秒的系统时间(在我的情况下可以),但每个大约需要 0.5 秒的实时时间(不可接受)。
例如:
$ time sudo docker run --cap-add SYS_ADMIN -i -t --memory=100000k --memory-swap=100000k -d -w /tmp -v /home/asd:/tmp my_image
187d****5037
sudo docker run --cap-add SYS_ADMIN -i -t --memory=100000k -d -w /tmp -v 0,02s user 0,02s system 6% cpu 0,496 total
Run Code Online (Sandbox Code Playgroud)
我能否以某种方式加快运行容器的过程,或者至少了解为什么浪费了这段时间?
my_image
是从创建的,ubuntu
构建的图像大约需要 800 MB。但是从我检查的情况来看,这并不重要 - 将大小图像减小到 200 MB 不会改变上述命令的执行时间。
开销时间很可能用于创建和删除命名空间。要确定时间花在哪里,您可以以不同的方式运行容器。
首先,删除 sudo 命令。以 root 身份登录sudo -s
,然后从那里运行命令。
接下来尝试将运行拆分为单独的创建和启动步骤。这将让您知道时间是用于创建容器还是运行容器:
$ time docker create --cap-add SYS_ADMIN -itd \
--memory=100000k --memory-swap=100000k \
-w /tmp -v /home/asd:/tmp my_image
$ time docker start -ai $(docker ps -ql)
Run Code Online (Sandbox Code Playgroud)
由于您分离运行容器,请考虑是否可以删除 tty 分配,如果需要配置 stdin,请删除-it
:
$ time sudo docker run --cap-add SYS_ADMIN -d \
--memory=100000k --memory-swap=100000k \
-w /tmp -v /home/asd:/tmp my_image
Run Code Online (Sandbox Code Playgroud)
之后,您可以通过将它们设置为现有的主机命名空间来禁用它们,开始查看为网络和 pid 等事物创建每个命名空间需要多少时间:
$ time sudo docker run --cap-add SYS_ADMIN -itd \
--net=host --pid=host --uts=host \
--memory=100000k --memory-swap=100000k \
-w /tmp -v /home/asd:/tmp my_image
Run Code Online (Sandbox Code Playgroud)
从 docker 中,您可以查看正在执行的操作docker events
并检查每个操作的时间戳。
最后,请记住 docker 是一个客户端/服务器应用程序,一些实际时间可能是客户端和服务器之间的套接字/网络通信。
归档时间: |
|
查看次数: |
6544 次 |
最近记录: |