2009年11月07日 星期六 09:43
嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈...
091107::
~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸)
~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网
~09:33 成立涛 - Erlang开发实践
N多内容,包含了所有 erl 开发过程中的所有关键实践体验..
--
http://zoomquiet.org 人生苦短? Pythonic!
usage 7-zip to replace WinRAR/WinZip; You can get the truely Freedom 4 software.
2009年11月07日 星期六 09:46
~09:45 讲演的幻灯在:
http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/
当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来!
2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈...
> 091107::
> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸)
> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网
> ~09:33 成立涛 - Erlang开发实践
> N多内容,包含了所有 erl 开发过程中的所有关键实践体验..
>
> --
> http://zoomquiet.org 人生苦短? Pythonic!
> usage 7-zip to replace WinRAR/WinZip; You can get the truely Freedom 4 software.
>
--
http://zoomquiet.org 人生苦短? Pythonic!
金山常年招聘Py/C++人才! http://bit.ly/UoTV 简历直投俺就成;-)
2009年11月07日 星期六 09:52
~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发;
- erl 进程是种抽象概念,是应用的最小单位
- 不要在gen_server 中进行复杂的处理,以免引发阻塞
- 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架
- 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理
2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
> ~09:45 讲演的幻灯在:
> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/
> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来!
>
> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈...
>> 091107::
>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸)
>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网
>> ~09:33 成立涛 - Erlang开发实践
>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验..
>>
>> --
>> http://zoomquiet.org 人生苦短? Pythonic!
>> usage 7-zip to replace WinRAR/WinZip; You can get the truely Freedom 4 software.
>>
>
>
>
> --
> http://zoomquiet.org 人生苦短? Pythonic!
> 金山常年招聘Py/C++人才! http://bit.ly/UoTV 简历直投俺就成;-)
>
--
http://zoomquiet.org 人生苦短? Pythonic!
向靠谱,反脑残! Kaopulity,小白退散! [Kaopulity~= Keep all processes usablity!]
2009年11月07日 星期六 09:55
~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/ - appmon 内置的应用进程关系观察工具 - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测! 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: > ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发; > - erl 进程是种抽象概念,是应用的最小单位 > - 不要在gen_server 中进行复杂的处理,以免引发阻塞 > - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架 > - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理 > > 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >> ~09:45 讲演的幻灯在: >> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/ >> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来! >> >> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈... >>> 091107:: >>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸) >>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网 >>> ~09:33 成立涛 - Erlang开发实践 >>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验.. >>> >>> -- >>> http://zoomquiet.org 人生苦短? Pythonic! >>> usage 7-zip to replace WinRAR/WinZip; You can get the truely Freedom 4 software. >>> >> >> >> >> -- >> http://zoomquiet.org 人生苦短? Pythonic! >> 金山常年招聘Py/C++人才! http://bit.ly/UoTV 简历直投俺就成;-) >> > > > > -- > http://zoomquiet.org 人生苦短? Pythonic! > 向靠谱,反脑残! Kaopulity,小白退散! [Kaopulity~= Keep all processes usablity!] > -- http://zoomquiet.org 人生苦短? Pythonic! 一个人如果力求完善自己,就会看到:为此也必须同时完善他人. 一个人如果不关心别人的完善,自己便不可能完善! -------------- 下一部分 -------------- A non-text attachment was scrubbed... Name: 2009-11-07-095449_570x472_scrot.png Type: image/png Size: 43144 bytes Desc: 不可用 URL: <http://www.zeuux.org/pipermail/zeuux-universe/attachments/20091107/9e0c9b36/attachment-0001.png>
2009年11月07日 星期六 09:58
~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译;
- 遗憾的是:只能编译.erl 的,无法依赖支持
- 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为...
- 而且可移植!...
2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/
> - appmon 内置的应用进程关系观察工具
> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测!
>
> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发;
>> - erl 进程是种抽象概念,是应用的最小单位
>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞
>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架
>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理
>>
>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>> ~09:45 讲演的幻灯在:
>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/
>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来!
>>>
>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈...
>>>> 091107::
>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸)
>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网
>>>> ~09:33 成立涛 - Erlang开发实践
>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验..
>>>>
>>>> --
>>>> http://zoomquiet.org 人生苦短? Pythonic!
>>>> usage 7-zip to replace WinRAR/WinZip; You can get the truely Freedom 4 software.
>>>>
>>>
>>>
>>>
>>> --
>>> http://zoomquiet.org 人生苦短? Pythonic!
>>> 金山常年招聘Py/C++人才! http://bit.ly/UoTV 简历直投俺就成;-)
>>>
>>
>>
>>
>> --
>> http://zoomquiet.org 人生苦短? Pythonic!
>> 向靠谱,反脑残! Kaopulity,小白退散! [Kaopulity~= Keep all processes usablity!]
>>
>
>
>
> --
> http://zoomquiet.org 人生苦短? Pythonic!
> 一个人如果力求完善自己,就会看到:为此也必须同时完善他人. 一个人如果不关心别人的完善,自己便不可能完善!
>
--
http://zoomquiet.org 人生苦短? Pythonic!
流程是对先前蠢行的内在反应! ~ Clay Shirky (Process is an embedded reaction to prior
stupidity)http://bit.l...
2009年11月07日 星期六 10:04
~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀...
- 遗憾的是:edoc 对中文支持不好
- 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具
2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译;
> - 遗憾的是:只能编译.erl 的,无法依赖支持
> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为...
> - 而且可移植!...
>
> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/
>> - appmon 内置的应用进程关系观察工具
>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测!
>>
>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发;
>>> - erl 进程是种抽象概念,是应用的最小单位
>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞
>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架
>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理
>>>
>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>> ~09:45 讲演的幻灯在:
>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/
>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来!
>>>>
>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈...
>>>>> 091107::
>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸)
>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网
>>>>> ~09:33 成立涛 - Erlang开发实践
>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验..
>>>>>
>>>>> --
>>>>> http://zoomquiet.org 人生苦短? Pythonic!
>>>>> usage 7-zip to replace WinRAR/WinZip; You can get the truely Freedom 4 software.
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> http://zoomquiet.org 人生苦短? Pythonic!
>>>> 金山常年招聘Py/C++人才! http://bit.ly/UoTV 简历直投俺就成;-)
>>>>
>>>
>>>
>>>
>>> --
>>> http://zoomquiet.org 人生苦短? Pythonic!
>>> 向靠谱,反脑残! Kaopulity,小白退散! [Kaopulity~= Keep all processes usablity!]
>>>
>>
>>
>>
>> --
>> http://zoomquiet.org 人生苦短? Pythonic!
>> 一个人如果力求完善自己,就会看到:为此也必须同时完善他人. 一个人如果不关心别人的完善,自己便不可能完善!
>>
>
>
>
> --
> http://zoomquiet.org 人生苦短? Pythonic!
> 流程是对先前蠢行的内在反应! ~ Clay Shirky (Process is an embedded reaction to prior
> stupidity)http://bit.l...
>
--
http://zoomquiet.org 人生苦短? Pythonic!
Time is unimportant, only life important!
2009年11月07日 星期六 10:18
~10:13 erl 开发中的逻辑问题解决...
- 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题
- 使用定制的 dialyzer 测试脚本,定位常见问题...
- 进一步的,充分使用 EUnit 是个好思路...
2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀...
> - 遗憾的是:edoc 对中文支持不好
> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具
>
> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译;
>> - 遗憾的是:只能编译.erl 的,无法依赖支持
>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为...
>> - 而且可移植!...
>>
>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/
>>> - appmon 内置的应用进程关系观察工具
>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测!
>>>
>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发;
>>>> - erl 进程是种抽象概念,是应用的最小单位
>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞
>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架
>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理
>>>>
>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>> ~09:45 讲演的幻灯在:
>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/
>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来!
>>>>>
>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈...
>>>>>> 091107::
>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸)
>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网
>>>>>> ~09:33 成立涛 - Erlang开发实践
>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验..
>>>>>>
>>>>>> --
>>>>>> http://zoomquiet.org 人生苦短? Pythonic!
>>>>>> usage 7-zip to replace WinRAR/WinZip; You can get the truely Freedom 4 software.
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> http://zoomquiet.org 人生苦短? Pythonic!
>>>>> 金山常年招聘Py/C++人才! http://bit.ly/UoTV 简历直投俺就成;-)
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> http://zoomquiet.org 人生苦短? Pythonic!
>>>> 向靠谱,反脑残! Kaopulity,小白退散! [Kaopulity~= Keep all processes usablity!]
>>>>
>>>
>>>
>>>
>>> --
>>> http://zoomquiet.org 人生苦短? Pythonic!
>>> 一个人如果力求完善自己,就会看到:为此也必须同时完善他人. 一个人如果不关心别人的完善,自己便不可能完善!
>>>
>>
>>
>>
>> --
>> http://zoomquiet.org 人生苦短? Pythonic!
>> 流程是对先前蠢行的内在反应! ~ Clay Shirky (Process is an embedded reaction to prior
>> stupidity)http://bit.l...
>>
>
>
>
> --
> http://zoomquiet.org 人生苦短? Pythonic!
> Time is unimportant, only life important!
>
--
http://zoomquiet.org 人生苦短? Pythonic!
过程改进乃是催生可促生靠谱的人的组织! (ProcessEnhancement keeps evolving organizations
which promoting people b...
2009年11月07日 星期六 10:51
~10:50 锋爷:Erlang应用优化指南
- 网游公司,用erl 开发平台!
- 对于性能的苛求导致发现短连接响应领域 erl 绝对领先!
- Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd
- 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110%
2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
> ~10:13 erl 开发中的逻辑问题解决...
> - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题
> - 使用定制的 dialyzer 测试脚本,定位常见问题...
> - 进一步的,充分使用 EUnit 是个好思路...
>
> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀...
>> - 遗憾的是:edoc 对中文支持不好
>> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具
>>
>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译;
>>> - 遗憾的是:只能编译.erl 的,无法依赖支持
>>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为...
>>> - 而且可移植!...
>>>
>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/
>>>> - appmon 内置的应用进程关系观察工具
>>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测!
>>>>
>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发;
>>>>> - erl 进程是种抽象概念,是应用的最小单位
>>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞
>>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架
>>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理
>>>>>
>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>> ~09:45 讲演的幻灯在:
>>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/
>>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来!
>>>>>>
>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈...
>>>>>>> 091107::
>>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸)
>>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网
>>>>>>> ~09:33 成立涛 - Erlang开发实践
>>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验..
--
http://zoomquiet.org 人生苦短? Pythonic!
KM乃是培育可催生自学习型组织的文化氛围! (KM=Knowledge Management=知识管理)
2009年11月07日 星期六 11:03
~10:57 erl应该来作什么?
- I/O密集型/先进的SMP多核支持的 *网络服务器*!!!(或是说专用的操作系统)
- 为了证明这一感觉,进行了真实的OS 对比
- 各种组件完全可以和一个OS 的各个部件对应起来!~ etop?!?!?
2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
> ~10:50 锋爷:Erlang应用优化指南
> - 网游公司,用erl 开发平台!
> - 对于性能的苛求导致发现短连接响应领域 erl 绝对领先!
> - Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd
> - 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110%
>
>
> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>> ~10:13 erl 开发中的逻辑问题解决...
>> - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题
>> - 使用定制的 dialyzer 测试脚本,定位常见问题...
>> - 进一步的,充分使用 EUnit 是个好思路...
>>
>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀...
>>> - 遗憾的是:edoc 对中文支持不好
>>> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具
>>>
>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译;
>>>> - 遗憾的是:只能编译.erl 的,无法依赖支持
>>>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为...
>>>> - 而且可移植!...
>>>>
>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/
>>>>> - appmon 内置的应用进程关系观察工具
>>>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测!
>>>>>
>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发;
>>>>>> - erl 进程是种抽象概念,是应用的最小单位
>>>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞
>>>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架
>>>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理
>>>>>>
>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>> ~09:45 讲演的幻灯在:
>>>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/
>>>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来!
>>>>>>>
>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈...
>>>>>>>> 091107::
>>>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸)
>>>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网
>>>>>>>> ~09:33 成立涛 - Erlang开发实践
>>>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验..
>
--
http://zoomquiet.org 人生苦短? Pythonic!
工作的层次(依靠谱程度从低到高)=有做->做完->做对->做好->帮助他人做好
-------------- 下一部分 --------------
A non-text attachment was scrubbed...
Name: 2009-11-07-110244_649x527_scrot.png
Type: image/png
Size: 270823 bytes
Desc: 不可用
URL: <http://www.zeuux.org/pipermail/zeuux-universe/attachments/20091107/ef67e005/attachment-0001.png>
2009年11月07日 星期六 11:11
~11:05 R12B~R13B 最大的变化在进程调度方面,增长了上万行代码!
- 智能的进行了逻辑CPU 间的协同调度..
- erl进程是使用操作系统的真实线程
- 10000/s 的请求,引发的OS消息可以达到 600000/s 内核消息...
- 调度的单位是 Port 引发的一组I/O事件 ~ erl的调度是由进程和Port 组成的...
2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
> ~10:57 erl应该来作什么?
> - I/O密集型/先进的SMP多核支持的 *网络服务器*!!!(或是说专用的操作系统)
> - 为了证明这一感觉,进行了真实的OS 对比
> - 各种组件完全可以和一个OS 的各个部件对应起来!~ etop?!?!?
>
> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>> ~10:50 锋爷:Erlang应用优化指南
>> - 网游公司,用erl 开发平台!
>> - 对于性能的苛求导致发现短连接响应领域 erl 绝对领先!
>> - Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd
>> - 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110%
>>
>>
>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>> ~10:13 erl 开发中的逻辑问题解决...
>>> - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题
>>> - 使用定制的 dialyzer 测试脚本,定位常见问题...
>>> - 进一步的,充分使用 EUnit 是个好思路...
>>>
>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀...
>>>> - 遗憾的是:edoc 对中文支持不好
>>>> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具
>>>>
>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译;
>>>>> - 遗憾的是:只能编译.erl 的,无法依赖支持
>>>>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为...
>>>>> - 而且可移植!...
>>>>>
>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/
>>>>>> - appmon 内置的应用进程关系观察工具
>>>>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测!
>>>>>>
>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发;
>>>>>>> - erl 进程是种抽象概念,是应用的最小单位
>>>>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞
>>>>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架
>>>>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理
>>>>>>>
>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>> ~09:45 讲演的幻灯在:
>>>>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/
>>>>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来!
>>>>>>>>
>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈...
>>>>>>>>> 091107::
>>>>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸)
>>>>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网
>>>>>>>>> ~09:33 成立涛 - Erlang开发实践
>>>>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验..
--
http://zoomquiet.org 人生苦短? Pythonic!
Time is unimportant, only life important!
2009年11月07日 星期六 11:14
~11:11 OS方面的选择优化:
- 32位性能比64位好(64位没有内存限制,但是性能低20~30%)
- RHEL 致力于高性能的挖掘>..
- 配置系统的swapness ,内存的OS预留等默认配置要向已知业务倾斜!
- 绝大多数erl 死亡都是内存耗光...
2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
> ~11:05 R12B~R13B 最大的变化在进程调度方面,增长了上万行代码!
> - 智能的进行了逻辑CPU 间的协同调度..
> - erl进程是使用操作系统的真实线程
> - 10000/s 的请求,引发的OS消息可以达到 600000/s 内核消息...
> - 调度的单位是 Port 引发的一组I/O事件 ~ erl的调度是由进程和Port 组成的...
>
>
> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>> ~10:57 erl应该来作什么?
>> - I/O密集型/先进的SMP多核支持的 *网络服务器*!!!(或是说专用的操作系统)
>> - 为了证明这一感觉,进行了真实的OS 对比
>> - 各种组件完全可以和一个OS 的各个部件对应起来!~ etop?!?!?
>>
>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>> ~10:50 锋爷:Erlang应用优化指南
>>> - 网游公司,用erl 开发平台!
>>> - 对于性能的苛求导致发现短连接响应领域 erl 绝对领先!
>>> - Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd
>>> - 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110%
>>>
>>>
>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>> ~10:13 erl 开发中的逻辑问题解决...
>>>> - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题
>>>> - 使用定制的 dialyzer 测试脚本,定位常见问题...
>>>> - 进一步的,充分使用 EUnit 是个好思路...
>>>>
>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀...
>>>>> - 遗憾的是:edoc 对中文支持不好
>>>>> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具
>>>>>
>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译;
>>>>>> - 遗憾的是:只能编译.erl 的,无法依赖支持
>>>>>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为...
>>>>>> - 而且可移植!...
>>>>>>
>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/
>>>>>>> - appmon 内置的应用进程关系观察工具
>>>>>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测!
>>>>>>>
>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发;
>>>>>>>> - erl 进程是种抽象概念,是应用的最小单位
>>>>>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞
>>>>>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架
>>>>>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理
>>>>>>>>
>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>> ~09:45 讲演的幻灯在:
>>>>>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/
>>>>>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来!
>>>>>>>>>
>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈...
>>>>>>>>>> 091107::
>>>>>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸)
>>>>>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网
>>>>>>>>>> ~09:33 成立涛 - Erlang开发实践
>>>>>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验..
--
http://zoomquiet.org 人生苦短? Pythonic!
Free as in Freedom! 哲思社区:http://zeuux.com
2009年11月07日 星期六 11:21
~11:15 Hipe 虽然社区认为不稳定,但是实际应用时性能增强非常多!建议使用...
- 可以省略很多系统特性
- 未公开的特性: 调度器绑定! ~ 高级特性,可以预先配置CPU 行为>..
2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
> ~11:11 OS方面的选择优化:
> - 32位性能比64位好(64位没有内存限制,但是性能低20~30%)
> - RHEL 致力于高性能的挖掘>..
> - 配置系统的swapness ,内存的OS预留等默认配置要向已知业务倾斜!
> - 绝大多数erl 死亡都是内存耗光...
>
> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>> ~11:05 R12B~R13B 最大的变化在进程调度方面,增长了上万行代码!
>> - 智能的进行了逻辑CPU 间的协同调度..
>> - erl进程是使用操作系统的真实线程
>> - 10000/s 的请求,引发的OS消息可以达到 600000/s 内核消息...
>> - 调度的单位是 Port 引发的一组I/O事件 ~ erl的调度是由进程和Port 组成的...
>>
>>
>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>> ~10:57 erl应该来作什么?
>>> - I/O密集型/先进的SMP多核支持的 *网络服务器*!!!(或是说专用的操作系统)
>>> - 为了证明这一感觉,进行了真实的OS 对比
>>> - 各种组件完全可以和一个OS 的各个部件对应起来!~ etop?!?!?
>>>
>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>> ~10:50 锋爷:Erlang应用优化指南
>>>> - 网游公司,用erl 开发平台!
>>>> - 对于性能的苛求导致发现短连接响应领域 erl 绝对领先!
>>>> - Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd
>>>> - 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110%
>>>>
>>>>
>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>> ~10:13 erl 开发中的逻辑问题解决...
>>>>> - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题
>>>>> - 使用定制的 dialyzer 测试脚本,定位常见问题...
>>>>> - 进一步的,充分使用 EUnit 是个好思路...
>>>>>
>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀...
>>>>>> - 遗憾的是:edoc 对中文支持不好
>>>>>> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具
>>>>>>
>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译;
>>>>>>> - 遗憾的是:只能编译.erl 的,无法依赖支持
>>>>>>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为...
>>>>>>> - 而且可移植!...
>>>>>>>
>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/
>>>>>>>> - appmon 内置的应用进程关系观察工具
>>>>>>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测!
>>>>>>>>
>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发;
>>>>>>>>> - erl 进程是种抽象概念,是应用的最小单位
>>>>>>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞
>>>>>>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架
>>>>>>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理
>>>>>>>>>
>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>> ~09:45 讲演的幻灯在:
>>>>>>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/
>>>>>>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来!
>>>>>>>>>>
>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈...
>>>>>>>>>>> 091107::
>>>>>>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸)
>>>>>>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网
>>>>>>>>>>> ~09:33 成立涛 - Erlang开发实践
>>>>>>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验..
>
--
http://zoomquiet.org 人生苦短? Pythonic!
过程改进乃是催生可促生靠谱的人的组织! (ProcessEnhancement keeps evolving organizations
which promoting people b...
2009年11月07日 星期六 11:33
~12:00 业务方面的优化:
- 小消息大计算!
- IO和计算的时间开销比,就是应用的性能收益比!
- 对CPU和内存及早进行明显的分配!
- 将业务和实际CPU 对应上,以免引发切换时间消耗...
- 进程和物理世界的对象尽量 1:1 (erl 的对象控制级别是百万级别的!)
- 多用ets ~ 大数据量推荐
- tuple/list/array 只能应作小数据量
- 尽量 *无锁结构*
2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
> ~11:15 Hipe 虽然社区认为不稳定,但是实际应用时性能增强非常多!建议使用...
> - 可以省略很多系统特性
> - 未公开的特性: 调度器绑定! ~ 高级特性,可以预先配置CPU 行为>..
>
> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>> ~11:11 OS方面的选择优化:
>> - 32位性能比64位好(64位没有内存限制,但是性能低20~30%)
>> - RHEL 致力于高性能的挖掘>..
>> - 配置系统的swapness ,内存的OS预留等默认配置要向已知业务倾斜!
>> - 绝大多数erl 死亡都是内存耗光...
>>
>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>> ~11:05 R12B~R13B 最大的变化在进程调度方面,增长了上万行代码!
>>> - 智能的进行了逻辑CPU 间的协同调度..
>>> - erl进程是使用操作系统的真实线程
>>> - 10000/s 的请求,引发的OS消息可以达到 600000/s 内核消息...
>>> - 调度的单位是 Port 引发的一组I/O事件 ~ erl的调度是由进程和Port 组成的...
>>>
>>>
>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>> ~10:57 erl应该来作什么?
>>>> - I/O密集型/先进的SMP多核支持的 *网络服务器*!!!(或是说专用的操作系统)
>>>> - 为了证明这一感觉,进行了真实的OS 对比
>>>> - 各种组件完全可以和一个OS 的各个部件对应起来!~ etop?!?!?
>>>>
>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>> ~10:50 锋爷:Erlang应用优化指南
>>>>> - 网游公司,用erl 开发平台!
>>>>> - 对于性能的苛求导致发现短连接响应领域 erl 绝对领先!
>>>>> - Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd
>>>>> - 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110%
>>>>>
>>>>>
>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>> ~10:13 erl 开发中的逻辑问题解决...
>>>>>> - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题
>>>>>> - 使用定制的 dialyzer 测试脚本,定位常见问题...
>>>>>> - 进一步的,充分使用 EUnit 是个好思路...
>>>>>>
>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀...
>>>>>>> - 遗憾的是:edoc 对中文支持不好
>>>>>>> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具
>>>>>>>
>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译;
>>>>>>>> - 遗憾的是:只能编译.erl 的,无法依赖支持
>>>>>>>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为...
>>>>>>>> - 而且可移植!...
>>>>>>>>
>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/
>>>>>>>>> - appmon 内置的应用进程关系观察工具
>>>>>>>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测!
>>>>>>>>>
>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发;
>>>>>>>>>> - erl 进程是种抽象概念,是应用的最小单位
>>>>>>>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞
>>>>>>>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架
>>>>>>>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理
>>>>>>>>>>
>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>> ~09:45 讲演的幻灯在:
>>>>>>>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/
>>>>>>>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来!
>>>>>>>>>>>
>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈...
>>>>>>>>>>>> 091107::
>>>>>>>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸)
>>>>>>>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网
>>>>>>>>>>>> ~09:33 成立涛 - Erlang开发实践
>>>>>>>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验..
--
http://zoomquiet.org 人生苦短? Pythonic!
KM乃是培育可催生自学习型组织的文化氛围! (KM=Knowledge Management=知识管理)
2009年11月07日 星期六 11:44
~11:40 性能测量的关注:
+ erl/Erts/OS 的热点
- systemtap ~ 非入侵式旁观
- Erlang 工具集,非常丰富,非常关注内存的分配...
- 十多种调度模式
- 200多种内存锁 lockcounter 就可以观察到问题集中点
- dbg ~ "ETrace";-)
... snmp 综合运行期情况
+ 延迟变化
+ 响应时间的抖动
2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
> ~12:00 业务方面的优化:
> - 小消息大计算!
> - IO和计算的时间开销比,就是应用的性能收益比!
> - 对CPU和内存及早进行明显的分配!
> - 将业务和实际CPU 对应上,以免引发切换时间消耗...
> - 进程和物理世界的对象尽量 1:1 (erl 的对象控制级别是百万级别的!)
> - 多用ets ~ 大数据量推荐
> - tuple/list/array 只能应作小数据量
> - 尽量 *无锁结构*
>
> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>> ~11:15 Hipe 虽然社区认为不稳定,但是实际应用时性能增强非常多!建议使用...
>> - 可以省略很多系统特性
>> - 未公开的特性: 调度器绑定! ~ 高级特性,可以预先配置CPU 行为>..
>>
>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>> ~11:11 OS方面的选择优化:
>>> - 32位性能比64位好(64位没有内存限制,但是性能低20~30%)
>>> - RHEL 致力于高性能的挖掘>..
>>> - 配置系统的swapness ,内存的OS预留等默认配置要向已知业务倾斜!
>>> - 绝大多数erl 死亡都是内存耗光...
>>>
>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>> ~11:05 R12B~R13B 最大的变化在进程调度方面,增长了上万行代码!
>>>> - 智能的进行了逻辑CPU 间的协同调度..
>>>> - erl进程是使用操作系统的真实线程
>>>> - 10000/s 的请求,引发的OS消息可以达到 600000/s 内核消息...
>>>> - 调度的单位是 Port 引发的一组I/O事件 ~ erl的调度是由进程和Port 组成的...
>>>>
>>>>
>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>> ~10:57 erl应该来作什么?
>>>>> - I/O密集型/先进的SMP多核支持的 *网络服务器*!!!(或是说专用的操作系统)
>>>>> - 为了证明这一感觉,进行了真实的OS 对比
>>>>> - 各种组件完全可以和一个OS 的各个部件对应起来!~ etop?!?!?
>>>>>
>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>> ~10:50 锋爷:Erlang应用优化指南
>>>>>> - 网游公司,用erl 开发平台!
>>>>>> - 对于性能的苛求导致发现短连接响应领域 erl 绝对领先!
>>>>>> - Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd
>>>>>> - 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110%
>>>>>>
>>>>>>
>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>> ~10:13 erl 开发中的逻辑问题解决...
>>>>>>> - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题
>>>>>>> - 使用定制的 dialyzer 测试脚本,定位常见问题...
>>>>>>> - 进一步的,充分使用 EUnit 是个好思路...
>>>>>>>
>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀...
>>>>>>>> - 遗憾的是:edoc 对中文支持不好
>>>>>>>> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具
>>>>>>>>
>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译;
>>>>>>>>> - 遗憾的是:只能编译.erl 的,无法依赖支持
>>>>>>>>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为...
>>>>>>>>> - 而且可移植!...
>>>>>>>>>
>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/
>>>>>>>>>> - appmon 内置的应用进程关系观察工具
>>>>>>>>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测!
>>>>>>>>>>
>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发;
>>>>>>>>>>> - erl 进程是种抽象概念,是应用的最小单位
>>>>>>>>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞
>>>>>>>>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架
>>>>>>>>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理
>>>>>>>>>>>
>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>> ~09:45 讲演的幻灯在:
>>>>>>>>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/
>>>>>>>>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来!
>>>>>>>>>>>>
>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈...
>>>>>>>>>>>>> 091107::
>>>>>>>>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸)
>>>>>>>>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网
>>>>>>>>>>>>> ~09:33 成立涛 - Erlang开发实践
>>>>>>>>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验..
--
http://zoomquiet.org 人生苦短? Pythonic!
工作的层次(依靠谱程度从低到高)=有做->做完->做对->做好->帮助他人做好
-------------- 下一部分 --------------
A non-text attachment was scrubbed...
Name: 2009-11-07-114401_545x530_scrot.png
Type: image/png
Size: 113351 bytes
Desc: 不可用
URL: <http://www.zeuux.org/pipermail/zeuux-universe/attachments/20091107/77ff61e8/attachment-0001.png>
2009年11月07日 星期六 11:52
~11:49 总结优化最佳体验
- 多用:
+ list comprehension
+ iolist /gather write
+ Binart > 256时,才引用计数(不用复制的!)
+ Hipe_bif 也可以考虑
- 不要用昂贵的BIF:
- now()
- io_lib:format
2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
> ~11:40 性能测量的关注:
> + erl/Erts/OS 的热点
> - systemtap ~ 非入侵式旁观
> - Erlang 工具集,非常丰富,非常关注内存的分配...
> - 十多种调度模式
> - 200多种内存锁 lockcounter 就可以观察到问题集中点
> - dbg ~ "ETrace";-)
> ... snmp 综合运行期情况
> + 延迟变化
> + 响应时间的抖动
>
>
> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>> ~12:00 业务方面的优化:
>> - 小消息大计算!
>> - IO和计算的时间开销比,就是应用的性能收益比!
>> - 对CPU和内存及早进行明显的分配!
>> - 将业务和实际CPU 对应上,以免引发切换时间消耗...
>> - 进程和物理世界的对象尽量 1:1 (erl 的对象控制级别是百万级别的!)
>> - 多用ets ~ 大数据量推荐
>> - tuple/list/array 只能应作小数据量
>> - 尽量 *无锁结构*
>>
>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>> ~11:15 Hipe 虽然社区认为不稳定,但是实际应用时性能增强非常多!建议使用...
>>> - 可以省略很多系统特性
>>> - 未公开的特性: 调度器绑定! ~ 高级特性,可以预先配置CPU 行为>..
>>>
>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>> ~11:11 OS方面的选择优化:
>>>> - 32位性能比64位好(64位没有内存限制,但是性能低20~30%)
>>>> - RHEL 致力于高性能的挖掘>..
>>>> - 配置系统的swapness ,内存的OS预留等默认配置要向已知业务倾斜!
>>>> - 绝大多数erl 死亡都是内存耗光...
>>>>
>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>> ~11:05 R12B~R13B 最大的变化在进程调度方面,增长了上万行代码!
>>>>> - 智能的进行了逻辑CPU 间的协同调度..
>>>>> - erl进程是使用操作系统的真实线程
>>>>> - 10000/s 的请求,引发的OS消息可以达到 600000/s 内核消息...
>>>>> - 调度的单位是 Port 引发的一组I/O事件 ~ erl的调度是由进程和Port 组成的...
>>>>>
>>>>>
>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>> ~10:57 erl应该来作什么?
>>>>>> - I/O密集型/先进的SMP多核支持的 *网络服务器*!!!(或是说专用的操作系统)
>>>>>> - 为了证明这一感觉,进行了真实的OS 对比
>>>>>> - 各种组件完全可以和一个OS 的各个部件对应起来!~ etop?!?!?
>>>>>>
>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>> ~10:50 锋爷:Erlang应用优化指南
>>>>>>> - 网游公司,用erl 开发平台!
>>>>>>> - 对于性能的苛求导致发现短连接响应领域 erl 绝对领先!
>>>>>>> - Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd
>>>>>>> - 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110%
>>>>>>>
>>>>>>>
>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>> ~10:13 erl 开发中的逻辑问题解决...
>>>>>>>> - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题
>>>>>>>> - 使用定制的 dialyzer 测试脚本,定位常见问题...
>>>>>>>> - 进一步的,充分使用 EUnit 是个好思路...
>>>>>>>>
>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀...
>>>>>>>>> - 遗憾的是:edoc 对中文支持不好
>>>>>>>>> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具
>>>>>>>>>
>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译;
>>>>>>>>>> - 遗憾的是:只能编译.erl 的,无法依赖支持
>>>>>>>>>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为...
>>>>>>>>>> - 而且可移植!...
>>>>>>>>>>
>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/
>>>>>>>>>>> - appmon 内置的应用进程关系观察工具
>>>>>>>>>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测!
>>>>>>>>>>>
>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发;
>>>>>>>>>>>> - erl 进程是种抽象概念,是应用的最小单位
>>>>>>>>>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞
>>>>>>>>>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架
>>>>>>>>>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理
>>>>>>>>>>>>
>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>> ~09:45 讲演的幻灯在:
>>>>>>>>>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/
>>>>>>>>>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来!
>>>>>>>>>>>>>
>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈...
>>>>>>>>>>>>>> 091107::
>>>>>>>>>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸)
>>>>>>>>>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网
>>>>>>>>>>>>>> ~09:33 成立涛 - Erlang开发实践
>>>>>>>>>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验..
--
http://zoomquiet.org 人生苦短? Pythonic!
usage 7-zip to replace WinRAR/WinZip; You can get the truely Freedom 4 software.
2009年11月07日 星期六 12:00
~11:59 CPU亲缘性利用!
- Taskset ~ 如果业务明确后,令CPU 对于业务运行从来没有竞争锁,性能将提高 50%以上!
- 启动OS的内置特性
+ Futex
+ VDSO
+ TCP/IP 协议桟...
- 大文件句柄(只应微调,根据业务的) 有两面性.. port 等数据结构会自动调整,引发意外操作..
- 基于测试的持续调优!
2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
> ~11:49 总结优化最佳体验
> - 多用:
> + list comprehension
> + iolist /gather write
> + Binart > 256时,才引用计数(不用复制的!)
> + Hipe_bif 也可以考虑
> - 不要用昂贵的BIF:
> - now()
> - io_lib:format
>
> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>> ~11:40 性能测量的关注:
>> + erl/Erts/OS 的热点
>> - systemtap ~ 非入侵式旁观
>> - Erlang 工具集,非常丰富,非常关注内存的分配...
>> - 十多种调度模式
>> - 200多种内存锁 lockcounter 就可以观察到问题集中点
>> - dbg ~ "ETrace";-)
>> ... snmp 综合运行期情况
>> + 延迟变化
>> + 响应时间的抖动
>>
>>
>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>> ~12:00 业务方面的优化:
>>> - 小消息大计算!
>>> - IO和计算的时间开销比,就是应用的性能收益比!
>>> - 对CPU和内存及早进行明显的分配!
>>> - 将业务和实际CPU 对应上,以免引发切换时间消耗...
>>> - 进程和物理世界的对象尽量 1:1 (erl 的对象控制级别是百万级别的!)
>>> - 多用ets ~ 大数据量推荐
>>> - tuple/list/array 只能应作小数据量
>>> - 尽量 *无锁结构*
>>>
>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>> ~11:15 Hipe 虽然社区认为不稳定,但是实际应用时性能增强非常多!建议使用...
>>>> - 可以省略很多系统特性
>>>> - 未公开的特性: 调度器绑定! ~ 高级特性,可以预先配置CPU 行为>..
>>>>
>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>> ~11:11 OS方面的选择优化:
>>>>> - 32位性能比64位好(64位没有内存限制,但是性能低20~30%)
>>>>> - RHEL 致力于高性能的挖掘>..
>>>>> - 配置系统的swapness ,内存的OS预留等默认配置要向已知业务倾斜!
>>>>> - 绝大多数erl 死亡都是内存耗光...
>>>>>
>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>> ~11:05 R12B~R13B 最大的变化在进程调度方面,增长了上万行代码!
>>>>>> - 智能的进行了逻辑CPU 间的协同调度..
>>>>>> - erl进程是使用操作系统的真实线程
>>>>>> - 10000/s 的请求,引发的OS消息可以达到 600000/s 内核消息...
>>>>>> - 调度的单位是 Port 引发的一组I/O事件 ~ erl的调度是由进程和Port 组成的...
>>>>>>
>>>>>>
>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>> ~10:57 erl应该来作什么?
>>>>>>> - I/O密集型/先进的SMP多核支持的 *网络服务器*!!!(或是说专用的操作系统)
>>>>>>> - 为了证明这一感觉,进行了真实的OS 对比
>>>>>>> - 各种组件完全可以和一个OS 的各个部件对应起来!~ etop?!?!?
>>>>>>>
>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>> ~10:50 锋爷:Erlang应用优化指南
>>>>>>>> - 网游公司,用erl 开发平台!
>>>>>>>> - 对于性能的苛求导致发现短连接响应领域 erl 绝对领先!
>>>>>>>> - Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd
>>>>>>>> - 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110%
>>>>>>>>
>>>>>>>>
>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>> ~10:13 erl 开发中的逻辑问题解决...
>>>>>>>>> - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题
>>>>>>>>> - 使用定制的 dialyzer 测试脚本,定位常见问题...
>>>>>>>>> - 进一步的,充分使用 EUnit 是个好思路...
>>>>>>>>>
>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀...
>>>>>>>>>> - 遗憾的是:edoc 对中文支持不好
>>>>>>>>>> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具
>>>>>>>>>>
>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译;
>>>>>>>>>>> - 遗憾的是:只能编译.erl 的,无法依赖支持
>>>>>>>>>>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为...
>>>>>>>>>>> - 而且可移植!...
>>>>>>>>>>>
>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/
>>>>>>>>>>>> - appmon 内置的应用进程关系观察工具
>>>>>>>>>>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测!
>>>>>>>>>>>>
>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发;
>>>>>>>>>>>>> - erl 进程是种抽象概念,是应用的最小单位
>>>>>>>>>>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞
>>>>>>>>>>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架
>>>>>>>>>>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理
>>>>>>>>>>>>>
>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>> ~09:45 讲演的幻灯在:
>>>>>>>>>>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/
>>>>>>>>>>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来!
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈...
>>>>>>>>>>>>>>> 091107::
>>>>>>>>>>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸)
>>>>>>>>>>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网
>>>>>>>>>>>>>>> ~09:33 成立涛 - Erlang开发实践
>>>>>>>>>>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验..
--
http://zoomquiet.org 人生苦短? Pythonic!
金山常年招聘Py/C++人才! http://bit.ly/UoTV 简历直投俺就成;-)
2009年11月07日 星期六 12:10
~12:05 可诊断的系统
- 有内部信息暴露的,参数可动态调节的!
- 测试自动的,有高压力环境的
- 尽可能的发挥 erts 的优势::
+ 用Ports 整合不同语言系统
+ 用 driver 改写关键性能苛求部分
+ 使用标准协议方便erl 自然处理(Asn.1),使用内置的高级特性...
- 锁是实际存在的...
+ 尽量减少这方面的代码...
2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
> ~11:59 CPU亲缘性利用!
> - Taskset ~ 如果业务明确后,令CPU 对于业务运行从来没有竞争锁,性能将提高 50%以上!
> - 启动OS的内置特性
> + Futex
> + VDSO
> + TCP/IP 协议桟...
> - 大文件句柄(只应微调,根据业务的) 有两面性.. port 等数据结构会自动调整,引发意外操作..
> - 基于测试的持续调优!
>
>
> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>> ~11:49 总结优化最佳体验
>> - 多用:
>> + list comprehension
>> + iolist /gather write
>> + Binart > 256时,才引用计数(不用复制的!)
>> + Hipe_bif 也可以考虑
>> - 不要用昂贵的BIF:
>> - now()
>> - io_lib:format
>>
>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>> ~11:40 性能测量的关注:
>>> + erl/Erts/OS 的热点
>>> - systemtap ~ 非入侵式旁观
>>> - Erlang 工具集,非常丰富,非常关注内存的分配...
>>> - 十多种调度模式
>>> - 200多种内存锁 lockcounter 就可以观察到问题集中点
>>> - dbg ~ "ETrace";-)
>>> ... snmp 综合运行期情况
>>> + 延迟变化
>>> + 响应时间的抖动
>>>
>>>
>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>> ~12:00 业务方面的优化:
>>>> - 小消息大计算!
>>>> - IO和计算的时间开销比,就是应用的性能收益比!
>>>> - 对CPU和内存及早进行明显的分配!
>>>> - 将业务和实际CPU 对应上,以免引发切换时间消耗...
>>>> - 进程和物理世界的对象尽量 1:1 (erl 的对象控制级别是百万级别的!)
>>>> - 多用ets ~ 大数据量推荐
>>>> - tuple/list/array 只能应作小数据量
>>>> - 尽量 *无锁结构*
>>>>
>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>> ~11:15 Hipe 虽然社区认为不稳定,但是实际应用时性能增强非常多!建议使用...
>>>>> - 可以省略很多系统特性
>>>>> - 未公开的特性: 调度器绑定! ~ 高级特性,可以预先配置CPU 行为>..
>>>>>
>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>> ~11:11 OS方面的选择优化:
>>>>>> - 32位性能比64位好(64位没有内存限制,但是性能低20~30%)
>>>>>> - RHEL 致力于高性能的挖掘>..
>>>>>> - 配置系统的swapness ,内存的OS预留等默认配置要向已知业务倾斜!
>>>>>> - 绝大多数erl 死亡都是内存耗光...
>>>>>>
>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>> ~11:05 R12B~R13B 最大的变化在进程调度方面,增长了上万行代码!
>>>>>>> - 智能的进行了逻辑CPU 间的协同调度..
>>>>>>> - erl进程是使用操作系统的真实线程
>>>>>>> - 10000/s 的请求,引发的OS消息可以达到 600000/s 内核消息...
>>>>>>> - 调度的单位是 Port 引发的一组I/O事件 ~ erl的调度是由进程和Port 组成的...
>>>>>>>
>>>>>>>
>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>> ~10:57 erl应该来作什么?
>>>>>>>> - I/O密集型/先进的SMP多核支持的 *网络服务器*!!!(或是说专用的操作系统)
>>>>>>>> - 为了证明这一感觉,进行了真实的OS 对比
>>>>>>>> - 各种组件完全可以和一个OS 的各个部件对应起来!~ etop?!?!?
>>>>>>>>
>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>> ~10:50 锋爷:Erlang应用优化指南
>>>>>>>>> - 网游公司,用erl 开发平台!
>>>>>>>>> - 对于性能的苛求导致发现短连接响应领域 erl 绝对领先!
>>>>>>>>> - Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd
>>>>>>>>> - 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110%
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>> ~10:13 erl 开发中的逻辑问题解决...
>>>>>>>>>> - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题
>>>>>>>>>> - 使用定制的 dialyzer 测试脚本,定位常见问题...
>>>>>>>>>> - 进一步的,充分使用 EUnit 是个好思路...
>>>>>>>>>>
>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀...
>>>>>>>>>>> - 遗憾的是:edoc 对中文支持不好
>>>>>>>>>>> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具
>>>>>>>>>>>
>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译;
>>>>>>>>>>>> - 遗憾的是:只能编译.erl 的,无法依赖支持
>>>>>>>>>>>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为...
>>>>>>>>>>>> - 而且可移植!...
>>>>>>>>>>>>
>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/
>>>>>>>>>>>>> - appmon 内置的应用进程关系观察工具
>>>>>>>>>>>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测!
>>>>>>>>>>>>>
>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发;
>>>>>>>>>>>>>> - erl 进程是种抽象概念,是应用的最小单位
>>>>>>>>>>>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞
>>>>>>>>>>>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架
>>>>>>>>>>>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>>> ~09:45 讲演的幻灯在:
>>>>>>>>>>>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/
>>>>>>>>>>>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来!
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈...
>>>>>>>>>>>>>>>> 091107::
>>>>>>>>>>>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸)
>>>>>>>>>>>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网
>>>>>>>>>>>>>>>> ~09:33 成立涛 - Erlang开发实践
>>>>>>>>>>>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验..
--
http://zoomquiet.org 人生苦短? Pythonic!
向靠谱,反脑残! Kaopulity,小白退散! [Kaopulity~= Keep all processes usablity!]
2009年11月07日 星期六 12:26
~12:17 Q&A;:
- Q:ets 的使用策略?
- A:策略!业务决定,在理解erl运行本质后,就容易判决了...
- Q:百万级应用中,总是有单点node 怎么搞?
- A:OTP 本身就一直存在这种问题!
+ 尝试使用多个进程来解决
+ 建议在另外一个VM 中进行处理...进行批量的消息移交(共享内存...),而且可以不用erl 的消息处理
- xiu+A:如果请求间关联不大时,可以使用进程池;
+ 如果有关联时(同资源操作时),晚上有说
- Q:小消息原则,怎么把握?
- A:是指消息传递开销小! <5ms
- 消息传递时间和计算时间比例 > 1:10 才有意义
- Q:DB方面的操作有不?
- A:有很多:
+ ets 内存DB;
+ Monisa 内置K/V DB
+ 外部关系数据库的支持不在Erl 哲学中...
2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
> ~12:05 可诊断的系统
> - 有内部信息暴露的,参数可动态调节的!
> - 测试自动的,有高压力环境的
> - 尽可能的发挥 erts 的优势::
> + 用Ports 整合不同语言系统
> + 用 driver 改写关键性能苛求部分
> + 使用标准协议方便erl 自然处理(Asn.1),使用内置的高级特性...
> - 锁是实际存在的...
> + 尽量减少这方面的代码...
>
> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>> ~11:59 CPU亲缘性利用!
>> - Taskset ~ 如果业务明确后,令CPU 对于业务运行从来没有竞争锁,性能将提高 50%以上!
>> - 启动OS的内置特性
>> + Futex
>> + VDSO
>> + TCP/IP 协议桟...
>> - 大文件句柄(只应微调,根据业务的) 有两面性.. port 等数据结构会自动调整,引发意外操作..
>> - 基于测试的持续调优!
>>
>>
>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>> ~11:49 总结优化最佳体验
>>> - 多用:
>>> + list comprehension
>>> + iolist /gather write
>>> + Binart > 256时,才引用计数(不用复制的!)
>>> + Hipe_bif 也可以考虑
>>> - 不要用昂贵的BIF:
>>> - now()
>>> - io_lib:format
>>>
>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>> ~11:40 性能测量的关注:
>>>> + erl/Erts/OS 的热点
>>>> - systemtap ~ 非入侵式旁观
>>>> - Erlang 工具集,非常丰富,非常关注内存的分配...
>>>> - 十多种调度模式
>>>> - 200多种内存锁 lockcounter 就可以观察到问题集中点
>>>> - dbg ~ "ETrace";-)
>>>> ... snmp 综合运行期情况
>>>> + 延迟变化
>>>> + 响应时间的抖动
>>>>
>>>>
>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>> ~12:00 业务方面的优化:
>>>>> - 小消息大计算!
>>>>> - IO和计算的时间开销比,就是应用的性能收益比!
>>>>> - 对CPU和内存及早进行明显的分配!
>>>>> - 将业务和实际CPU 对应上,以免引发切换时间消耗...
>>>>> - 进程和物理世界的对象尽量 1:1 (erl 的对象控制级别是百万级别的!)
>>>>> - 多用ets ~ 大数据量推荐
>>>>> - tuple/list/array 只能应作小数据量
>>>>> - 尽量 *无锁结构*
>>>>>
>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>> ~11:15 Hipe 虽然社区认为不稳定,但是实际应用时性能增强非常多!建议使用...
>>>>>> - 可以省略很多系统特性
>>>>>> - 未公开的特性: 调度器绑定! ~ 高级特性,可以预先配置CPU 行为>..
>>>>>>
>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>> ~11:11 OS方面的选择优化:
>>>>>>> - 32位性能比64位好(64位没有内存限制,但是性能低20~30%)
>>>>>>> - RHEL 致力于高性能的挖掘>..
>>>>>>> - 配置系统的swapness ,内存的OS预留等默认配置要向已知业务倾斜!
>>>>>>> - 绝大多数erl 死亡都是内存耗光...
>>>>>>>
>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>> ~11:05 R12B~R13B 最大的变化在进程调度方面,增长了上万行代码!
>>>>>>>> - 智能的进行了逻辑CPU 间的协同调度..
>>>>>>>> - erl进程是使用操作系统的真实线程
>>>>>>>> - 10000/s 的请求,引发的OS消息可以达到 600000/s 内核消息...
>>>>>>>> - 调度的单位是 Port 引发的一组I/O事件 ~ erl的调度是由进程和Port 组成的...
>>>>>>>>
>>>>>>>>
>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>> ~10:57 erl应该来作什么?
>>>>>>>>> - I/O密集型/先进的SMP多核支持的 *网络服务器*!!!(或是说专用的操作系统)
>>>>>>>>> - 为了证明这一感觉,进行了真实的OS 对比
>>>>>>>>> - 各种组件完全可以和一个OS 的各个部件对应起来!~ etop?!?!?
>>>>>>>>>
>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>> ~10:50 锋爷:Erlang应用优化指南
>>>>>>>>>> - 网游公司,用erl 开发平台!
>>>>>>>>>> - 对于性能的苛求导致发现短连接响应领域 erl 绝对领先!
>>>>>>>>>> - Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd
>>>>>>>>>> - 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110%
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>> ~10:13 erl 开发中的逻辑问题解决...
>>>>>>>>>>> - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题
>>>>>>>>>>> - 使用定制的 dialyzer 测试脚本,定位常见问题...
>>>>>>>>>>> - 进一步的,充分使用 EUnit 是个好思路...
>>>>>>>>>>>
>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀...
>>>>>>>>>>>> - 遗憾的是:edoc 对中文支持不好
>>>>>>>>>>>> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具
>>>>>>>>>>>>
>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译;
>>>>>>>>>>>>> - 遗憾的是:只能编译.erl 的,无法依赖支持
>>>>>>>>>>>>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为...
>>>>>>>>>>>>> - 而且可移植!...
>>>>>>>>>>>>>
>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/
>>>>>>>>>>>>>> - appmon 内置的应用进程关系观察工具
>>>>>>>>>>>>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测!
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发;
>>>>>>>>>>>>>>> - erl 进程是种抽象概念,是应用的最小单位
>>>>>>>>>>>>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞
>>>>>>>>>>>>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架
>>>>>>>>>>>>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>>>> ~09:45 讲演的幻灯在:
>>>>>>>>>>>>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/
>>>>>>>>>>>>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来!
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈...
>>>>>>>>>>>>>>>>> 091107::
>>>>>>>>>>>>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸)
>>>>>>>>>>>>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网
>>>>>>>>>>>>>>>>> ~09:33 成立涛 - Erlang开发实践
>>>>>>>>>>>>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验..
--
http://zoomquiet.org 人生苦短? Pythonic!
一个人如果力求完善自己,就会看到:为此也必须同时完善他人. 一个人如果不关心别人的完善,自己便不可能完善!
2009年11月07日 星期六 12:39
~12:30 热烈的进行提问,锋爷的实战体验分享,引爆了好奇心...
- Q: 加密怎好?
- A: driver 沟通外部NB模块!
- Q: 小消息原则应用策略?
- A: cfg 要特别关注...(原先的 get 方式消耗非常不合算)
+ 先 ets 读入 cfg ,并代理进行维护
+ 其它进程来读ets
- ~ 分享自个儿的经验:
+ 关系DB 的访问,策略
- MySQL 的erl 驱动可以用
- 先用erl 的DB
- 尽量用 存储过程来计算
+ Asn.1 的标准比 SOAP 要靠谱!得多用!
- 门槛是 概念和一般的不同
- 电信工业标准,资料也少...
2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
> ~12:17 Q&A;:
> - Q:ets 的使用策略?
> - A:策略!业务决定,在理解erl运行本质后,就容易判决了...
>
> - Q:百万级应用中,总是有单点node 怎么搞?
> - A:OTP 本身就一直存在这种问题!
> + 尝试使用多个进程来解决
> + 建议在另外一个VM 中进行处理...进行批量的消息移交(共享内存...),而且可以不用erl 的消息处理
> - xiu+A:如果请求间关联不大时,可以使用进程池;
> + 如果有关联时(同资源操作时),晚上有说
>
> - Q:小消息原则,怎么把握?
> - A:是指消息传递开销小! <5ms
> - 消息传递时间和计算时间比例 > 1:10 才有意义
>
> - Q:DB方面的操作有不?
> - A:有很多:
> + ets 内存DB;
> + Monisa 内置K/V DB
> + 外部关系数据库的支持不在Erl 哲学中...
>
>
> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>> ~12:05 可诊断的系统
>> - 有内部信息暴露的,参数可动态调节的!
>> - 测试自动的,有高压力环境的
>> - 尽可能的发挥 erts 的优势::
>> + 用Ports 整合不同语言系统
>> + 用 driver 改写关键性能苛求部分
>> + 使用标准协议方便erl 自然处理(Asn.1),使用内置的高级特性...
>> - 锁是实际存在的...
>> + 尽量减少这方面的代码...
>>
>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>> ~11:59 CPU亲缘性利用!
>>> - Taskset ~ 如果业务明确后,令CPU 对于业务运行从来没有竞争锁,性能将提高 50%以上!
>>> - 启动OS的内置特性
>>> + Futex
>>> + VDSO
>>> + TCP/IP 协议桟...
>>> - 大文件句柄(只应微调,根据业务的) 有两面性.. port 等数据结构会自动调整,引发意外操作..
>>> - 基于测试的持续调优!
>>>
>>>
>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>> ~11:49 总结优化最佳体验
>>>> - 多用:
>>>> + list comprehension
>>>> + iolist /gather write
>>>> + Binart > 256时,才引用计数(不用复制的!)
>>>> + Hipe_bif 也可以考虑
>>>> - 不要用昂贵的BIF:
>>>> - now()
>>>> - io_lib:format
>>>>
>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>> ~11:40 性能测量的关注:
>>>>> + erl/Erts/OS 的热点
>>>>> - systemtap ~ 非入侵式旁观
>>>>> - Erlang 工具集,非常丰富,非常关注内存的分配...
>>>>> - 十多种调度模式
>>>>> - 200多种内存锁 lockcounter 就可以观察到问题集中点
>>>>> - dbg ~ "ETrace";-)
>>>>> ... snmp 综合运行期情况
>>>>> + 延迟变化
>>>>> + 响应时间的抖动
>>>>>
>>>>>
>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>> ~12:00 业务方面的优化:
>>>>>> - 小消息大计算!
>>>>>> - IO和计算的时间开销比,就是应用的性能收益比!
>>>>>> - 对CPU和内存及早进行明显的分配!
>>>>>> - 将业务和实际CPU 对应上,以免引发切换时间消耗...
>>>>>> - 进程和物理世界的对象尽量 1:1 (erl 的对象控制级别是百万级别的!)
>>>>>> - 多用ets ~ 大数据量推荐
>>>>>> - tuple/list/array 只能应作小数据量
>>>>>> - 尽量 *无锁结构*
>>>>>>
>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>> ~11:15 Hipe 虽然社区认为不稳定,但是实际应用时性能增强非常多!建议使用...
>>>>>>> - 可以省略很多系统特性
>>>>>>> - 未公开的特性: 调度器绑定! ~ 高级特性,可以预先配置CPU 行为>..
>>>>>>>
>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>> ~11:11 OS方面的选择优化:
>>>>>>>> - 32位性能比64位好(64位没有内存限制,但是性能低20~30%)
>>>>>>>> - RHEL 致力于高性能的挖掘>..
>>>>>>>> - 配置系统的swapness ,内存的OS预留等默认配置要向已知业务倾斜!
>>>>>>>> - 绝大多数erl 死亡都是内存耗光...
>>>>>>>>
>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>> ~11:05 R12B~R13B 最大的变化在进程调度方面,增长了上万行代码!
>>>>>>>>> - 智能的进行了逻辑CPU 间的协同调度..
>>>>>>>>> - erl进程是使用操作系统的真实线程
>>>>>>>>> - 10000/s 的请求,引发的OS消息可以达到 600000/s 内核消息...
>>>>>>>>> - 调度的单位是 Port 引发的一组I/O事件 ~ erl的调度是由进程和Port 组成的...
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>> ~10:57 erl应该来作什么?
>>>>>>>>>> - I/O密集型/先进的SMP多核支持的 *网络服务器*!!!(或是说专用的操作系统)
>>>>>>>>>> - 为了证明这一感觉,进行了真实的OS 对比
>>>>>>>>>> - 各种组件完全可以和一个OS 的各个部件对应起来!~ etop?!?!?
>>>>>>>>>>
>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>> ~10:50 锋爷:Erlang应用优化指南
>>>>>>>>>>> - 网游公司,用erl 开发平台!
>>>>>>>>>>> - 对于性能的苛求导致发现短连接响应领域 erl 绝对领先!
>>>>>>>>>>> - Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd
>>>>>>>>>>> - 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110%
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>> ~10:13 erl 开发中的逻辑问题解决...
>>>>>>>>>>>> - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题
>>>>>>>>>>>> - 使用定制的 dialyzer 测试脚本,定位常见问题...
>>>>>>>>>>>> - 进一步的,充分使用 EUnit 是个好思路...
>>>>>>>>>>>>
>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀...
>>>>>>>>>>>>> - 遗憾的是:edoc 对中文支持不好
>>>>>>>>>>>>> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具
>>>>>>>>>>>>>
>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译;
>>>>>>>>>>>>>> - 遗憾的是:只能编译.erl 的,无法依赖支持
>>>>>>>>>>>>>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为...
>>>>>>>>>>>>>> - 而且可移植!...
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/
>>>>>>>>>>>>>>> - appmon 内置的应用进程关系观察工具
>>>>>>>>>>>>>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测!
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发;
>>>>>>>>>>>>>>>> - erl 进程是种抽象概念,是应用的最小单位
>>>>>>>>>>>>>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞
>>>>>>>>>>>>>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架
>>>>>>>>>>>>>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>>>>> ~09:45 讲演的幻灯在:
>>>>>>>>>>>>>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/
>>>>>>>>>>>>>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来!
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈...
>>>>>>>>>>>>>>>>>> 091107::
>>>>>>>>>>>>>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸)
>>>>>>>>>>>>>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网
>>>>>>>>>>>>>>>>>> ~09:33 成立涛 - Erlang开发实践
>>>>>>>>>>>>>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验..
--
http://zoomquiet.org 人生苦短? Pythonic!
流程是对先前蠢行的内在反应! ~ Clay Shirky (Process is an embedded reaction to prior
stupidity)http://bit.l...
2009年11月07日 星期六 14:10
~14:00 xiu shiwei引言,预告明日的沙龙...
~14:09 老范 开讲EB:
- 先用实况录像来开始,讲解EB 的实际情景
- 有机会使用Erl 的情景非常稀少,所以,通过一个简单的程序智力游戏实例来学习,有效,而且可行
2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
> ~12:30 热烈的进行提问,锋爷的实战体验分享,引爆了好奇心...
> - Q: 加密怎好?
> - A: driver 沟通外部NB模块!
> - Q: 小消息原则应用策略?
> - A: cfg 要特别关注...(原先的 get 方式消耗非常不合算)
> + 先 ets 读入 cfg ,并代理进行维护
> + 其它进程来读ets
> - ~ 分享自个儿的经验:
> + 关系DB 的访问,策略
> - MySQL 的erl 驱动可以用
> - 先用erl 的DB
> - 尽量用 存储过程来计算
> + Asn.1 的标准比 SOAP 要靠谱!得多用!
> - 门槛是 概念和一般的不同
> - 电信工业标准,资料也少...
>
>
> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>> ~12:17 Q&A;:
>> - Q:ets 的使用策略?
>> - A:策略!业务决定,在理解erl运行本质后,就容易判决了...
>>
>> - Q:百万级应用中,总是有单点node 怎么搞?
>> - A:OTP 本身就一直存在这种问题!
>> + 尝试使用多个进程来解决
>> + 建议在另外一个VM 中进行处理...进行批量的消息移交(共享内存...),而且可以不用erl 的消息处理
>> - xiu+A:如果请求间关联不大时,可以使用进程池;
>> + 如果有关联时(同资源操作时),晚上有说
>>
>> - Q:小消息原则,怎么把握?
>> - A:是指消息传递开销小! <5ms
>> - 消息传递时间和计算时间比例 > 1:10 才有意义
>>
>> - Q:DB方面的操作有不?
>> - A:有很多:
>> + ets 内存DB;
>> + Monisa 内置K/V DB
>> + 外部关系数据库的支持不在Erl 哲学中...
>>
>>
>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>> ~12:05 可诊断的系统
>>> - 有内部信息暴露的,参数可动态调节的!
>>> - 测试自动的,有高压力环境的
>>> - 尽可能的发挥 erts 的优势::
>>> + 用Ports 整合不同语言系统
>>> + 用 driver 改写关键性能苛求部分
>>> + 使用标准协议方便erl 自然处理(Asn.1),使用内置的高级特性...
>>> - 锁是实际存在的...
>>> + 尽量减少这方面的代码...
>>>
>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>> ~11:59 CPU亲缘性利用!
>>>> - Taskset ~ 如果业务明确后,令CPU 对于业务运行从来没有竞争锁,性能将提高 50%以上!
>>>> - 启动OS的内置特性
>>>> + Futex
>>>> + VDSO
>>>> + TCP/IP 协议桟...
>>>> - 大文件句柄(只应微调,根据业务的) 有两面性.. port 等数据结构会自动调整,引发意外操作..
>>>> - 基于测试的持续调优!
>>>>
>>>>
>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>> ~11:49 总结优化最佳体验
>>>>> - 多用:
>>>>> + list comprehension
>>>>> + iolist /gather write
>>>>> + Binart > 256时,才引用计数(不用复制的!)
>>>>> + Hipe_bif 也可以考虑
>>>>> - 不要用昂贵的BIF:
>>>>> - now()
>>>>> - io_lib:format
>>>>>
>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>> ~11:40 性能测量的关注:
>>>>>> + erl/Erts/OS 的热点
>>>>>> - systemtap ~ 非入侵式旁观
>>>>>> - Erlang 工具集,非常丰富,非常关注内存的分配...
>>>>>> - 十多种调度模式
>>>>>> - 200多种内存锁 lockcounter 就可以观察到问题集中点
>>>>>> - dbg ~ "ETrace";-)
>>>>>> ... snmp 综合运行期情况
>>>>>> + 延迟变化
>>>>>> + 响应时间的抖动
>>>>>>
>>>>>>
>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>> ~12:00 业务方面的优化:
>>>>>>> - 小消息大计算!
>>>>>>> - IO和计算的时间开销比,就是应用的性能收益比!
>>>>>>> - 对CPU和内存及早进行明显的分配!
>>>>>>> - 将业务和实际CPU 对应上,以免引发切换时间消耗...
>>>>>>> - 进程和物理世界的对象尽量 1:1 (erl 的对象控制级别是百万级别的!)
>>>>>>> - 多用ets ~ 大数据量推荐
>>>>>>> - tuple/list/array 只能应作小数据量
>>>>>>> - 尽量 *无锁结构*
>>>>>>>
>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>> ~11:15 Hipe 虽然社区认为不稳定,但是实际应用时性能增强非常多!建议使用...
>>>>>>>> - 可以省略很多系统特性
>>>>>>>> - 未公开的特性: 调度器绑定! ~ 高级特性,可以预先配置CPU 行为>..
>>>>>>>>
>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>> ~11:11 OS方面的选择优化:
>>>>>>>>> - 32位性能比64位好(64位没有内存限制,但是性能低20~30%)
>>>>>>>>> - RHEL 致力于高性能的挖掘>..
>>>>>>>>> - 配置系统的swapness ,内存的OS预留等默认配置要向已知业务倾斜!
>>>>>>>>> - 绝大多数erl 死亡都是内存耗光...
>>>>>>>>>
>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>> ~11:05 R12B~R13B 最大的变化在进程调度方面,增长了上万行代码!
>>>>>>>>>> - 智能的进行了逻辑CPU 间的协同调度..
>>>>>>>>>> - erl进程是使用操作系统的真实线程
>>>>>>>>>> - 10000/s 的请求,引发的OS消息可以达到 600000/s 内核消息...
>>>>>>>>>> - 调度的单位是 Port 引发的一组I/O事件 ~ erl的调度是由进程和Port 组成的...
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>> ~10:57 erl应该来作什么?
>>>>>>>>>>> - I/O密集型/先进的SMP多核支持的 *网络服务器*!!!(或是说专用的操作系统)
>>>>>>>>>>> - 为了证明这一感觉,进行了真实的OS 对比
>>>>>>>>>>> - 各种组件完全可以和一个OS 的各个部件对应起来!~ etop?!?!?
>>>>>>>>>>>
>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>> ~10:50 锋爷:Erlang应用优化指南
>>>>>>>>>>>> - 网游公司,用erl 开发平台!
>>>>>>>>>>>> - 对于性能的苛求导致发现短连接响应领域 erl 绝对领先!
>>>>>>>>>>>> - Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd
>>>>>>>>>>>> - 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110%
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>> ~10:13 erl 开发中的逻辑问题解决...
>>>>>>>>>>>>> - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题
>>>>>>>>>>>>> - 使用定制的 dialyzer 测试脚本,定位常见问题...
>>>>>>>>>>>>> - 进一步的,充分使用 EUnit 是个好思路...
>>>>>>>>>>>>>
>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀...
>>>>>>>>>>>>>> - 遗憾的是:edoc 对中文支持不好
>>>>>>>>>>>>>> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译;
>>>>>>>>>>>>>>> - 遗憾的是:只能编译.erl 的,无法依赖支持
>>>>>>>>>>>>>>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为...
>>>>>>>>>>>>>>> - 而且可移植!...
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/
>>>>>>>>>>>>>>>> - appmon 内置的应用进程关系观察工具
>>>>>>>>>>>>>>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测!
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发;
>>>>>>>>>>>>>>>>> - erl 进程是种抽象概念,是应用的最小单位
>>>>>>>>>>>>>>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞
>>>>>>>>>>>>>>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架
>>>>>>>>>>>>>>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>>>>>> ~09:45 讲演的幻灯在:
>>>>>>>>>>>>>>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/
>>>>>>>>>>>>>>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来!
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈...
>>>>>>>>>>>>>>>>>>> 091107::
>>>>>>>>>>>>>>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸)
>>>>>>>>>>>>>>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网
>>>>>>>>>>>>>>>>>>> ~09:33 成立涛 - Erlang开发实践
>>>>>>>>>>>>>>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验..
--
http://zoomquiet.org 人生苦短? Pythonic!
向靠谱,反脑残! Kaopulity,小白退散! [Kaopulity~= Keep all processes usablity!]
2009年11月07日 星期六 14:27
~14:25 EB架构的演化:
- 无名 ets 表,发布战场时况
- 各种游戏运营过程中的情景
- 同时行动时的内置顺序聲明
- 战队算法>..
2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
> ~14:00 xiu shiwei引言,预告明日的沙龙...
>
> ~14:09 老范 开讲EB:
> - 先用实况录像来开始,讲解EB 的实际情景
> - 有机会使用Erl 的情景非常稀少,所以,通过一个简单的程序智力游戏实例来学习,有效,而且可行
>
> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>> ~12:30 热烈的进行提问,锋爷的实战体验分享,引爆了好奇心...
>> - Q: 加密怎好?
>> - A: driver 沟通外部NB模块!
>> - Q: 小消息原则应用策略?
>> - A: cfg 要特别关注...(原先的 get 方式消耗非常不合算)
>> + 先 ets 读入 cfg ,并代理进行维护
>> + 其它进程来读ets
>> - ~ 分享自个儿的经验:
>> + 关系DB 的访问,策略
>> - MySQL 的erl 驱动可以用
>> - 先用erl 的DB
>> - 尽量用 存储过程来计算
>> + Asn.1 的标准比 SOAP 要靠谱!得多用!
>> - 门槛是 概念和一般的不同
>> - 电信工业标准,资料也少...
>>
>>
>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>> ~12:17 Q&A;:
>>> - Q:ets 的使用策略?
>>> - A:策略!业务决定,在理解erl运行本质后,就容易判决了...
>>>
>>> - Q:百万级应用中,总是有单点node 怎么搞?
>>> - A:OTP 本身就一直存在这种问题!
>>> + 尝试使用多个进程来解决
>>> + 建议在另外一个VM 中进行处理...进行批量的消息移交(共享内存...),而且可以不用erl 的消息处理
>>> - xiu+A:如果请求间关联不大时,可以使用进程池;
>>> + 如果有关联时(同资源操作时),晚上有说
>>>
>>> - Q:小消息原则,怎么把握?
>>> - A:是指消息传递开销小! <5ms
>>> - 消息传递时间和计算时间比例 > 1:10 才有意义
>>>
>>> - Q:DB方面的操作有不?
>>> - A:有很多:
>>> + ets 内存DB;
>>> + Monisa 内置K/V DB
>>> + 外部关系数据库的支持不在Erl 哲学中...
>>>
>>>
>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>> ~12:05 可诊断的系统
>>>> - 有内部信息暴露的,参数可动态调节的!
>>>> - 测试自动的,有高压力环境的
>>>> - 尽可能的发挥 erts 的优势::
>>>> + 用Ports 整合不同语言系统
>>>> + 用 driver 改写关键性能苛求部分
>>>> + 使用标准协议方便erl 自然处理(Asn.1),使用内置的高级特性...
>>>> - 锁是实际存在的...
>>>> + 尽量减少这方面的代码...
>>>>
>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>> ~11:59 CPU亲缘性利用!
>>>>> - Taskset ~ 如果业务明确后,令CPU 对于业务运行从来没有竞争锁,性能将提高 50%以上!
>>>>> - 启动OS的内置特性
>>>>> + Futex
>>>>> + VDSO
>>>>> + TCP/IP 协议桟...
>>>>> - 大文件句柄(只应微调,根据业务的) 有两面性.. port 等数据结构会自动调整,引发意外操作..
>>>>> - 基于测试的持续调优!
>>>>>
>>>>>
>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>> ~11:49 总结优化最佳体验
>>>>>> - 多用:
>>>>>> + list comprehension
>>>>>> + iolist /gather write
>>>>>> + Binart > 256时,才引用计数(不用复制的!)
>>>>>> + Hipe_bif 也可以考虑
>>>>>> - 不要用昂贵的BIF:
>>>>>> - now()
>>>>>> - io_lib:format
>>>>>>
>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>> ~11:40 性能测量的关注:
>>>>>>> + erl/Erts/OS 的热点
>>>>>>> - systemtap ~ 非入侵式旁观
>>>>>>> - Erlang 工具集,非常丰富,非常关注内存的分配...
>>>>>>> - 十多种调度模式
>>>>>>> - 200多种内存锁 lockcounter 就可以观察到问题集中点
>>>>>>> - dbg ~ "ETrace";-)
>>>>>>> ... snmp 综合运行期情况
>>>>>>> + 延迟变化
>>>>>>> + 响应时间的抖动
>>>>>>>
>>>>>>>
>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>> ~12:00 业务方面的优化:
>>>>>>>> - 小消息大计算!
>>>>>>>> - IO和计算的时间开销比,就是应用的性能收益比!
>>>>>>>> - 对CPU和内存及早进行明显的分配!
>>>>>>>> - 将业务和实际CPU 对应上,以免引发切换时间消耗...
>>>>>>>> - 进程和物理世界的对象尽量 1:1 (erl 的对象控制级别是百万级别的!)
>>>>>>>> - 多用ets ~ 大数据量推荐
>>>>>>>> - tuple/list/array 只能应作小数据量
>>>>>>>> - 尽量 *无锁结构*
>>>>>>>>
>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>> ~11:15 Hipe 虽然社区认为不稳定,但是实际应用时性能增强非常多!建议使用...
>>>>>>>>> - 可以省略很多系统特性
>>>>>>>>> - 未公开的特性: 调度器绑定! ~ 高级特性,可以预先配置CPU 行为>..
>>>>>>>>>
>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>> ~11:11 OS方面的选择优化:
>>>>>>>>>> - 32位性能比64位好(64位没有内存限制,但是性能低20~30%)
>>>>>>>>>> - RHEL 致力于高性能的挖掘>..
>>>>>>>>>> - 配置系统的swapness ,内存的OS预留等默认配置要向已知业务倾斜!
>>>>>>>>>> - 绝大多数erl 死亡都是内存耗光...
>>>>>>>>>>
>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>> ~11:05 R12B~R13B 最大的变化在进程调度方面,增长了上万行代码!
>>>>>>>>>>> - 智能的进行了逻辑CPU 间的协同调度..
>>>>>>>>>>> - erl进程是使用操作系统的真实线程
>>>>>>>>>>> - 10000/s 的请求,引发的OS消息可以达到 600000/s 内核消息...
>>>>>>>>>>> - 调度的单位是 Port 引发的一组I/O事件 ~ erl的调度是由进程和Port 组成的...
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>> ~10:57 erl应该来作什么?
>>>>>>>>>>>> - I/O密集型/先进的SMP多核支持的 *网络服务器*!!!(或是说专用的操作系统)
>>>>>>>>>>>> - 为了证明这一感觉,进行了真实的OS 对比
>>>>>>>>>>>> - 各种组件完全可以和一个OS 的各个部件对应起来!~ etop?!?!?
>>>>>>>>>>>>
>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>> ~10:50 锋爷:Erlang应用优化指南
>>>>>>>>>>>>> - 网游公司,用erl 开发平台!
>>>>>>>>>>>>> - 对于性能的苛求导致发现短连接响应领域 erl 绝对领先!
>>>>>>>>>>>>> - Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd
>>>>>>>>>>>>> - 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110%
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>> ~10:13 erl 开发中的逻辑问题解决...
>>>>>>>>>>>>>> - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题
>>>>>>>>>>>>>> - 使用定制的 dialyzer 测试脚本,定位常见问题...
>>>>>>>>>>>>>> - 进一步的,充分使用 EUnit 是个好思路...
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>>> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀...
>>>>>>>>>>>>>>> - 遗憾的是:edoc 对中文支持不好
>>>>>>>>>>>>>>> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>>>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译;
>>>>>>>>>>>>>>>> - 遗憾的是:只能编译.erl 的,无法依赖支持
>>>>>>>>>>>>>>>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为...
>>>>>>>>>>>>>>>> - 而且可移植!...
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>>>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/
>>>>>>>>>>>>>>>>> - appmon 内置的应用进程关系观察工具
>>>>>>>>>>>>>>>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测!
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>>>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发;
>>>>>>>>>>>>>>>>>> - erl 进程是种抽象概念,是应用的最小单位
>>>>>>>>>>>>>>>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞
>>>>>>>>>>>>>>>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架
>>>>>>>>>>>>>>>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>>>>>>> ~09:45 讲演的幻灯在:
>>>>>>>>>>>>>>>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/
>>>>>>>>>>>>>>>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来!
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>:
>>>>>>>>>>>>>>>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈...
>>>>>>>>>>>>>>>>>>>> 091107::
>>>>>>>>>>>>>>>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸)
>>>>>>>>>>>>>>>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网
>>>>>>>>>>>>>>>>>>>> ~09:33 成立涛 - Erlang开发实践
>>>>>>>>>>>>>>>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验..
--
http://zoomquiet.org 人生苦短? Pythonic!
一个人如果力求完善自己,就会看到:为此也必须同时完善他人. 一个人如果不关心别人的完善,自己便不可能完善!
Zeuux © 2025
京ICP备05028076号