第二天
早上爬了几次才起来。一路小跑,买完包子后在车站等车。今天北京突然降温,全身冰冷,也就口里的包子有点热气。车来得还算快,几分钟后,一辆公交夹着滚滚灰尘而来。冰冷的天气,一大早上就滚滚的灰尘,赶紧封好包子口,合上嘴巴,闭着眼睛往上跳吧。。。
第一场 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中