阅读更多

1顶
0踩

互联网

原创新闻 使用Docker怎么产生延迟?

2015-12-22 10:16 by 副主编 mengyidan1988 评论(0) 有3801人浏览
一个伟大的问题诞生在mechanical-sympathy Google邮件列表,或许已经有许多其他的伟大的问题诞生在此了。问题如下:
引用
我不断地听说Docker,就好像他是切片面包以来最伟大的发明一样,但是我还听说低延迟应用在使用它的时候遭受打击。

没有谁比Azul Systems的技术副总裁、首席技术官和联合创始人Gil Tene更适合回答这个问题了。就像我们相信乔丹的三步上栏一样,我们总能依靠Gil的洞察力,参见下面的文章:

下面是Gil的答案:

抛开问题的品味和风格不说,单说延迟效果(原始的问题),从机制角度来分析,答案很简单:Docker使用Linux容器作为执行方式没有对CPU和内存的操作系统虚拟层,有可选的(即使缺省是打开的)对I/O的虚拟层。

CPU和内存

从延迟的角度来说,Docker(和其他Linux容器)的CPU和内存延迟特性不能够和Linux自身区分出来,但是对Linux有效的控制迟延行为对Docker也有效。

如果你想要清楚和一致的低延迟,你必须做不用Docker和不用容器时相同的工作来获得相同级别的一致性。例如,如果你想让整个系统尽在掌握(没有饥饿的邻居),你也不得不在主机这个层次为Docker做工作。

如果你需要分隔套接字或者内核和选择哪些进程在哪里,对Docker容器或者其中的线程,你也要做相同的事。

如果你使用非统一内存存取(NUMA, Non-Uniform Memory Access),或者使用任何类型的直接的NUMA驱动的内存分配,你也要做相同的事。

并且,你需要做的一些事情可能看起来违反一些人想要的部署Docker的模式。但是,如果你真正对一致性的低延迟感兴趣,你或许需要摆脱现有工具集,使用不同的控制组(cgroups)、任务设置(tasksets)和其他酷的工具来确保事情的安排。然而,即使你做了这些事情,你也不能够区分容器内外的进程的CPU和内存的延迟。

I/O

磁盘I/O

在不同配置下的I/O行为是许多延迟问题产生和解答的原因。对于磁盘I/O行为和选项我也所知甚少,不能谈论太多。但我确定解决任何存储吞吐量和延迟敏感问题的答案是“越过虚拟层和逻辑分区,直接访问磁盘和挂接点”。

网络

网络的情形相当清楚:如果你想要网络地理位置无关、网络地址翻译(NAT, Network Address Translation)或桥接、自动生成的网络等功能,你或许会为网络延迟或吞吐量(相比Linux上直接真实物理网卡)付出代价。然而,也有为Docker配置低成本或基本上零延迟成本的网络链路的选项(再一次,可能与一些人想要的部署方式不同)。使用宿主机的网络或者专用IP地址和网卡,你将获得比缺省的桥接网络更好的性能。但你将会遇到配置Solarflare的网卡(在裸金属低延迟环境中很普遍)、绕过内核、专用自旋核心网络协议栈等相关的事宜。这些延迟相关的行为与是在宿主机上还是用Docker没有分别。

Docker(作为一个整体属于用户空间)不是把大杂烩装进一个盒子,客机(guest OS)作为一个整体的虚拟化方案也不是。确实,他们都能够这样用(经常是这样),但是使用他们的最大益处是发布一致的精心选择的配置,还有开发、测试和部署都使用相同配置的能力。后者可以容易地管理发布和版本(包括回滚),还有实现如“弹性大小”这样的酷的事情。其他配置工具(puppet或者shef等)当然也能得到相同的结果(假定他们控制你的镜像中的一切),但是把可以工作的东西打包在一起开箱即用确实是很诱人的事。

我知道有使用一个宿主机上只有一个客机这样虚拟化方案的人们(例如,AWS r3.8加大实例类型目前大概就是这样的)。也知道有采用相同方式使用Docker的人们(一个宿主机一个容器)。这两种用例是为了配置控制和部署,不是为了节约成本而把东西打包。

低延迟这件事现在变成了“它更糟吗?”这个问题。相比较基于宿主机和客机或KVM的虚拟化方案,在低延迟这个问题上,只要做正确的选择(专用网卡、内核和设备),Docker带来的损害更少,真正的不可察觉。

原文地址:How Does The Use Of Docker Effect Latency?(译者/徐宏兴 审校/朱正贵 责编/仲浩)
1
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 在eclipse中快速多行注释的方法

    1.选中你要加注释的区域...3.要修改在eclispe中的命令的快捷键方式我们只需进入windows -> preference-> General -> key设置就行了(转) 补充:选中要加注释的区域,ctrl+/ 会加//注释2010/09/13 选中后,ctrl+shift+

  • 代码中遇到多行注释/* xxx */可以使用查找一键替换

    一键替换注释

  • eclipse 指定文件夹,查找多行

    4.Containing text搜索内容,多行示例 (.*\R)*.* 5.选中右侧Regular expression 6.File name patterns文件类型,之前已经选中文件夹,这里不要加文件夹路径 *.php 7.Scope选择范围 选中Selected resources 再选

  • eclipse快捷键以及多行注释

    Eclipse 的快捷键以及文档注释、多行注释的快捷键 一、多行注释快捷键 1.选中你要加注释的区域,用ctrl+shift+C 或者ctrl+/ 会加上//注释 2.先把你要注释的东西选中,用shit+ctrl+/ 会加上/* */注释 3.以上...

  • 工具 - Eclipse - 常用快捷键

    Eclipse - 常用快捷键

  • eclipse常用快捷键和设置

    2)Ctrl + Shift + / :注释多行。3)Ctrl + Shift + \ :取消多行注释。4)Alt+Shift+J(方法注释) :在方法上按Alt+Shift+J可以添加Javadoc 注释 ,或者不用快捷键,先敲“/”在敲两个**,然后回车也可以。2、代码...

  • Eclipse 的快捷键 文档注释、多行注释的快捷键

    Eclipse 的快捷键 文档注释、多行注释的快捷键 一、多行注释快捷键 1.选中你要加注释的区域,用ctrl+shift+C 或者ctrl+/ 会加上//注释 2.先把你要注释的东西选中,用shit+ctrl+/ 会加上/* */注释 3.以上快捷在重复按...

  • Eclipse 的快捷键以及文档注释、多行注释的快捷键

    一、多行注释快捷键 1.选中你要加注释的区域,用ctrl+shift+C 或者ctrl+/ 会加上//注释 2.先把你要注释的东西选中,用shit+ctrl+/ 会加上/* */注释 3.以上快捷在重复按一下就会去掉加上的注释 4.要修改在eclispe中的...

  • eclipse粘贴多行

    想要在eclipse中粘贴一个有换行的长文本,但""是不能跨行的,在Window->Preferences->Java->Editor->Typing中选择Escape text when pasting into a string literal,就能使其满足条件,如果发现有\r\n存在按需求替换...

  • Eclipse中的快捷键

    Eclipse中的快捷键

  • Eclipse中常用快捷键汇总

    多行注释 ctrl + shift + / 取消多行注释 ctrl + shift +\ 复制指定行代码 ctrl + alt + down 删除指定行代码 ctrl + d 上下移动代码:alt + up\down 切换到下一行代码空位 ctrl + enter 切换到上一行代码...

  • Eclipse快捷键设置和Eclipse中的常用快捷键

    Eclipse中的快捷键 快捷键设置 1.点击window菜单进入preferences子菜单 2.点击General菜单进入Keys快捷键管理界面 3.在binding里设置快捷键 【When里面的(In Windows是在eclipse窗口激活状态)】 4.完成...

  • Eclipse快捷键(全)

    Eclipse全部快捷键

  • Java编辑器eclipse和IDEA中的快捷键

    当你在编写过程中想创建另一个类,可不用鼠标直接定位至导航栏,之后操作9,可直接创建类或者包,实现脱离鼠标) Alt+shift(+Fn) (快速创建项目和包) Ctrl+D (复制当前行代码到下一行) Ctrl+shift+N (打开...

  • Android:在eclipse中快速多行注释的方法

    Android:在eclipse中快速多行注释的方法 好的东西就是要分享、要收藏,要借鉴 1.选中你要加注释的区域,用ctrl+shift+C 会加上//注释2.先把你要注释的东西选中,用shit+ctrl+/ 会加上/* */注释3.要修改在...

  • Eclipse常用快捷键使用(精简)

    * Eclipse中的快捷键: * 1.补全代码的声明:alt + / * 2.快速修复: ctrl + 1 * 3.批量导包:ctrl + shift + o * 4.使用单行注释:ctrl + / * 5.使用多行注释: ctrl + shift + / * 6.取消多行注释:ctrl + shift ...

  • Eclipse中的基本快捷键:

    1.复制代码: ctrl + c 2.撤销: ctrl + z 3.反撤销: ctrl + y 4.粘贴:ctrl + v使用单行...查找与替换:ctrl + f 37.最大化当前的View:ctrl + m 38.直接定位到当前行的首位:home 39.直接定位到当前行的末位:end

  • 孙允中临证实践录.pdf

    孙允中临证实践录.pdf

  • rqapha的改造学习,集成大鱼金融提供的Jaqs分钟数据源Mod,拥抱开源,学习量化.zip

    Rqalpha-myquant-learning对开源项目Rqalpha的改造,在应用上面更适合个人的应用。学习量化策略,对量化策略进行开发调试。2018-05-25程序更新集成大鱼金融提供的分钟线回测Mod,用来提供Jaqs分钟线数据源,测试程序通过。目前的改造情况1.增加ats.main.py,来驱动起回测,使程序可以使用pycharm进行开发调试2.增加批量回测功能3.在AlgoTradeConfig中进行配置回测的策略和所需要的参数信息,参数信息通过excel文件进行配置4.在ats.main.py中设置参数为batch,运行回测,会将输出的.csv文件放在cvsResult目录下,将回测的图片保存在picResult目录下。5.读取回测的.csv文件,提取账户信息,可以将不同参数回测的结果输出在同一张图片上,更加清晰的看清同一个策略,不同参数所带来的变化。6.从广发信号站点获取历史交易信号(站点已停止,此处无法继续)7.增加通用函数的封装,现阶段增加了对TA_LIB的调用封装(未完整完成)8.增加了对增量资金定投的情况的模拟,用

  • 携程大数据比赛-预测航班是否延误涵盖源代码,以及过程记录.zip

    航班背景随着国内民航的不断发展,航空出行已经成为人们比较普遍的出行方式,但是航班延误却成为旅客们比较头疼的问题。台风,雾霾或飞机故障等因素都有可能导致大面积航班延误的情况。大面积延误给旅客出行带来很多不便,如何在计划起飞前2小时预测航班延误情况,让出行旅客更好的规划出行方式,成为一个重大课题。要求提前2小时(航班计划起飞时间前2小时),预测航班是否会延误3小时以上(给出延误3小时以上的概率)

Global site tag (gtag.js) - Google Analytics