Archive

Archive for the ‘Erlang探索’ Category

Systemtap的另类用法

November 10th, 2010 17 comments

原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: Systemtap的另类用法

通常我们在做内核编程的时候,会用到内核的数据结构,比如说textsearch提供了几种算法用于支付串查找。在用于正式的项目前,我们会希望考察下他的用法以及想体验下。最通常的做法是自己写个module,写个makefile,编译,运行,然后去dmesg里面看printk的结果。这个过程没啥问题,就是太罗嗦。好了,现在我们有更方便的方法了:systemtap.

Systemtap是个脚本,先翻译成c kernel模块代码,然后编译,插入到内核运行,同时提供最基本的内核和应用模块的通讯管道,在应用模块这里收集信息。 它还支持guru模式,让用户直接插入c代码。 这样我们就可以利用stap的这一特性来做我们的实验。
Read more…

Post Footer automatically generated by wp-posturl plugin for wordpress.

如何在TILEPro64多核心板卡上编译和运行Erlang

November 2nd, 2010 21 comments

原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: 如何在TILEPro64多核心板卡上编译和运行Erlang

参考文章:
1. https://groups.google.com/group/erlang-programming/msg/2d61b1083a10a7b6

2. http://erlang.2086793.n4.nabble.com/How-to-Cross-compile-Erlang-OTP-R13B04-for-TileraPro64-td2119304.html

美国Tilera公司的众核服务器,单颗内核包含64颗CPU。硬件架构图:

卡长这样的:

Erlang已经可以在这款CPU上成功运行,我们可以参考Ulf Wiger在Multicore ☺ Message-passing Concurrency 文档中关于Erlang在Tilera上的性能图.

Erlang系统前2年就开始正式支持Tilera,一直用这个CPU来调整他的调度器,所以性能和基础的编译运行支持都很到位。

Linux内核2.6.36起就开始支持Tilera的CPU架构了,看起来前途不错。

最近 上海泛腾电子科技 开始在国内销售 Tilera机器, 我公司也得到一台样机,使得我有机会把玩下这个高科技!

该测试机是PCI-e的形式,是单板机,直接安装在PC机或者是服务器里,好处是可以通过主机的VGA口接显示器直接调试。当然也可以作为智能网卡来使用。构成一个与Host的异构结构,通过PCI-e总线进行通讯。

还需要相应的配套SDK: 目前有TileraMDE-2.1.2.112814 和 TileraMDE-3.0.alpha3.116173 二个版本, 来负责和板卡的通信。 推荐用2.0的,好像不容易出问题。

废话少说,让我们开始享受64核心快乐旅程吧!
Read more…

Post Footer automatically generated by wp-posturl plugin for wordpress.

ECUG2010分享:C1000K高性能服务器构架技术

October 18th, 2010 3 comments

原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: ECUG2010分享:C1000K高性能服务器构架技术

Read more…

Post Footer automatically generated by wp-posturl plugin for wordpress.

LMbench 实用的微观性能分析工具

October 9th, 2010 8 comments

原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: LMbench 实用的微观性能分析工具

我们在做高性能服务的时候,通常需要避免7宗罪,比如说内存拷贝,昂贵的系统调用等等。 但是这些罪的代价是多少,我们并不清楚。 在设计的时候,我们会需要根据数据去做方案的取舍。但是这些测量数据哪里来呢? google大神是个很好的地方,但是有很多缺点,首先你需要的知识是分散的,第二你需要的知识是二手的。 这时候LMbench来救助了。

LMbench – Tools for Performance Analysis
官方网站: http://www.bitmover.com/lmbench/

What is LMbench? Read more…

Post Footer automatically generated by wp-posturl plugin for wordpress.

Categories: Erlang探索 Tags: , ,

Erlang新添加选项 +zerts_de_busy_limit 控制节点间通讯的数据量

September 21st, 2010 1 comment

erlang节点间通信默认是通过tcp通道进行的, 而且每对节点间只有一个tcp链接,所有的rpc和内置的类似monitor这样的消息也都是通过这个通道进行的. 当数据量过大的时候, 系统就会发出 busy distribution port警告, 同时限制数据的吞吐. 这个值默认是128k.

现在可以通过 erl +zerts_de_busy_limit size 来修改这个值了.
Set the value of erts_de_busy_limit. Larger values can help prevent busy distribution port system messages.
The default limit is 128 kilobytes.

如果在system monitor的时候发现busy dist port, 不妨改大这个值, 这个值的下限是4k.

Post Footer automatically generated by wp-posturl plugin for wordpress.

hipe_bifs:bitarray的使用

September 20th, 2010 1 comment

原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: hipe_bifs:bitarray的使用

未公开的hipe_bifs:bitarray是内置的,用c语言实现的, inplace修改的,有非常高的效率.

-module(bitarray).
-export([new/1, set/2, get/2]).

new(Size) -> hipe_bifs:bitarray(Size, false).
set(I, A) -> hipe_bifs:bitarray_update(A, I, true).
get(I, A) -> hipe_bifs:bitarray_sub(A, I).

相比之下用纯erlang array模块实现的bitarray的版本

-module(bitarray).
-export([new/1, set/2, get/2]).

-define(W, 24).

new(N) -> array:new((N-1) div ?W + 1, {default, 0}).

set(I, A) ->
  AI = I div ?W,
  V = array:get(AI, A),
  V1 = V bor (1 bsl (I rem ?W)),
  array:set(AI, V1, A).

get(I, A) ->
  AI = I div ?W,
  V = array:get(AI, A),
  V band (1 bsl (I rem ?W)) =/= 0.

大家看着用把…

Post Footer automatically generated by wp-posturl plugin for wordpress.

Categories: Erlang探索 Tags: ,

Erlang R14B 新增加参数 +swt 控制调度器的唤醒阀值

September 7th, 2010 1 comment

原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: Erlang R14B 新增加参数 +swt 控制调度器的唤醒阀值

来自github上的otp源码提交消息:
Erlang R14B 新增加参数 +swt very_low|low|medium|high|very_high
Set scheduler wakeup threshold. Default is medium

The threshold determines when to wake up sleeping schedulers when more work than can be handled by currently awake schedulers exist. A low threshold will cause earlier wakeups, and a high threshold will cause later wakeups. Early wakeups will distribute work over multiple schedulers faster, but work will more easily bounce between schedulers.

这样减少无必要的进程调度,避免cache被污染!

Post Footer automatically generated by wp-posturl plugin for wordpress.

Categories: Erlang探索 Tags: ,