第二天
早上爬了几次才起来。一路小跑,买完包子后在车站等车。今天北京突然降温,全身冰冷,也就口里的包子有点热气。车来得还算快,几分钟后,一辆公交夹着滚滚灰尘而来。冰冷的天气,一大早上就滚滚的灰尘,赶紧封好包子口,合上嘴巴,闭着眼睛往上跳吧。。。
第一场 nginx的应用
是来自淘宝的一位技术专家。所表现出来的技术非常浓厚。
nginx我不是太熟悉,一些东西记录得可能有误。
1年就消化掉nginx10万源码的作者;
通过自己实现一套脚本的简单标记,来实现从 nginx 直接存取 mysql/PostgreSQL/sqlite/drizzle 数据库,memcached。其中还可以直接使用长连接池,集群水平切割,读写分离,负载均衡等高级设施。
一些逻辑工作嵌入lua代码,并且lua代码可以单独提出作为测试
模板工作:
小语言1 小语言2 小语言3
高级语言lua
直接执行,或输出
这个模板是这样的,小语言是作者根据业务开发的一套脚本,非常的简单,非常适合业务上的优化。通过一个解释器转成高级,比如lua等。最后执行或者其他处理。并且代码的膨胀量非常小,非STL类的技术。比如在一些查询上,可以在小语言中直接优化。给我的感觉就是实现了一套配置类型的脚本。会后许大非常感兴趣,说盛大也在做一样的事,只不过用PHP解析。当然用什么语言这里不重要。
第二场 新语言
作者是莫华枫,好像在C++版上看过这个ID。讲的是他的一个梦想,一个GP语言。不过扒拉扒拉没啥兴趣,而且坐得太后面,看不到前面的代码段。刚好第一场的作者跑到后面来了,按捺不住,向他请教了nginx中对套接字的线程控制负载工作。关于这方面的网络东西,我会单独整理一遍,并且有我前段时间开发的一些代码实例。
第三场 C1000K
大牛余锋,是一场从硬件到计算机体系的优化盛宴
很多开发人员没有意识到硬件的变化,从而不知道如何对软加层的算法改进
比如南北桥的退化,而专用IOCH
cache! cache!! 这两天这个词给我的印象很深,命中cache成为一个靶子的红心点。根据除了昨天一些假共享的问题,作者还提出了再numa中的问题:比如在一些cache不平衡的情况下,节点1使用内存满,节点2却是命中到了节点1的内存,无法继续取到内存,但是总的内存却仍然还有,以此提出的一个numa内存觉醒的方案。
对于cache,作者给了张表,l1,l2,l3,内存,硬盘,之间访问的时间都是几个数量级的差别,损失的性能能达到30%
1.大内存,导致维护的表项变多,传统的分页不适合,4kb->4mb,TLB
关于这个,有人提出了疑问,这种分页机制应该和CPU架构有关,比如X86只适合4KB,加再多也没用。我当时也想提出这个疑问。在以前测试内存分配器的时候,我把单元颗粒调到了8KB(应用层),但是速度并没有快。但是作者说经过MYSQL的测试,性能确实提升了很多。中间可能还有些商榷的地方吧。我觉得还是得看CACHE的策略。比如有时候你虽然指定一个4KB,策略上也会把你相邻的地址读入。
2.网卡,中断平衡
如果利用多网卡。在交换机上做文章。比如4个网卡,通过交换机绑定一个MAC地址暴露给公网,当公网有数据进入时,按负载拆成4个。当然这里面类似多线程的负载均衡,首先让一个网卡处于负荷状态,然后才唤醒另外一块网卡。不过一个牛B的网卡价格可会达到5-10万哦!
3.rps,rfs,多核CPU的CACHE抖动,效率可以相差2-3倍。搜了个链接http://page.renren.com/600235506/note/486210267
4.TCP,协议内存配置等
这里主要讲各个参数的配置,比如接收大小,发送大小,等等。
5.初始化窗口调优
TCP慢启动,不知道的同学GOOGLE一下,但是慢启动会影响一些短连接的效率
6.硬盘,文件,page cache的算法选择
这里就是各个终端的I/O算法调度,FIO测试工具
7.压缩数据集,让CPU忙碌
这个也是提升cache的块命中。让你的数据能够通过一定的压缩比投放到cache中
第四场 分布式实战
这个。。。。讲得实在太广,真没记录到什么,只知道是做数据挖掘的。倒是作者说了很多失败的经验。最后好像也没什么人提问
第五场
老外的压轴戏,唉,听不懂。过吧。不过老外最后好像还带了一些纪念衣服来,没去领了,就这样结束了ECUG2010场。
我的总结:
cache.我还是想提这个词,在并行多核的时候,避免cache的抖动已经是统一的解决方案。包括底层的硬件架构,也逐渐的由南北桥专向固定的内存匹配,操作系统里也纷纷支持了多核的cache。至于分布式的东西,我认为简单的一个演讲还是比较笼统的。更多人关心一些通用的解决方案详细,来减少开发的投入和摸索。脚本语言的嵌入,静态的小语种编译,在对应用要求越来越高的今天,成为一个比较主流的东西。C/C++, 轻量脚本(LUA),并行虚拟机(erlang)我想是以后每个开发者必备的东西.最后,如果大家有时间还是强烈建议研究下linux内核中的slab,一个非常好的内存分配,包括对cache的抖动,cpu的亲缘等等。硬件底层的变化,操作系统的新功能(rps,rfs)可能不能一下子提升你的并行能力,而slab中的代码也是在代码中非常实用的东西,windows的版本有机会我也会放出。
分享到:
相关推荐
标题“杭州ecug会议上的演讲稿”提示我们这是一篇在杭州举行的ECUG(Erlang Community User Group)会议上的演讲材料,很可能涉及到Erlang编程语言及其应用。Erlang是一种面向并发、分布式和实时系统的函数式编程...
2020 年 1 月 4 日 – 5 日,“ECUG Con 2020”大会将于杭州举行。本次大会以“ECUG For Future”为主题,围绕五大技术主题,邀请到来自七牛云、网易、滴滴、知乎、谷歌中国、CODING等众多业界大咖,从技术创新、...
七牛云2021 ECUG Con全球技术大会内部票:给大家一共搞来五张小一千块钱的内部票。想要的加群【947578238】联系群主 七牛云2021 ECUG Con全球技术大会早鸟特惠票: 项目源码 初步源码 前端原始码 的github 码云 主要...
七牛云2021 ECUG Con全球技术大会内部票:给大家一共搞来五张小一千块钱的内部票。想要的加群【947578238】联系群主 七牛云2021 ECUG Con全球技术大会早鸟特惠票: 项目源码 初步源码 前端原始码 的github 码云 ...
Python之路(二)Python的下载安装和配置编写第一个Python程序Python环境的配置以及第一个程序完成! Python的下载安装和配置 python的下载 官网下载:https://www.python.org/downloads/windows/ 使用我目前正在...
在行业前瞻方面,ECUG技术大会2020的举办将为通信行业带来新的技术和解决方案,这些技术和方案将在5G建设中发挥重要作用。与此同时,投资者也应关注行业内的风险,包括中美贸易摩擦可能带来的影响,以及行业增速放缓...