Archive

Author Archive

Erlang/OTP R14B03发布

May 30th, 2011 3 comments

Erlang/OTP R14B03 has been released as planned on May 25:th 2011. It is the third R14 service release.

Highlights:
* Diameter is a brand new application in this release. The application support the diameter protocol specified in RFC 3588 and is intended to provide an Authentication, Authorization and Accounting (AAA) framework for applications.
* The documentation for stdlib and kernel now uses type specifications from the source modules which should guarantee that the documentation and code are consistent with regard to the type information.

详细参见:http://www.erlang.org/download/otp_src_R14B03.readme
下载:http://www.erlang.org/download.html

这次发布主要是bugfix修正了些vm方面的bug,整理了下文档。需要稳定性的同学暂时不要更新,这个版本貌似还是不够稳定,刚出版本就发现引入了些bug。

玩得开心!

Categories: Erlang探索 Tags: , ,

leveldb ubuntu 11.04下编译失败问题

May 22nd, 2011 4 comments

我在最新的ubuntu11.04下编译leveldb的时候发现问题,但是在更早前的这个版本很正常:

yufeng@yufeng-laptop:/usr/src/leveldb$ make
g++ -c -DLEVELDB_PLATFORM_POSIX -I. -I./include -std=c++0x -g2 db/db_bench.cc -o db/db_bench.o
In file included from ./port/port.h:14:0,
                 from ./util/coding.h:17,
                 from ./db/dbformat.h:13,
                 from ./db/db_impl.h:9,
                 from db/db_bench.cc:8:
./port/port_posix.h:14:22: fatal error: cstdatomic: 没有那个文件或目录
compilation terminated.
make: *** [db/db_bench.o] 错误 1

Read more…

disktop per设备per应用层面的IO读写统计

May 16th, 2011 5 comments

我们在调优IO 密集型的应用是通常需要知道IO的使用情况. 但是iostat只能知道系统全局的,iotop只能知道每个应用的, 我们有时候需要细化到每个应用对每个设备的使用情况. 比如说mysql数据库我们通常把日志和数据分开到不同的设备, 那我们需要知道数据读写多少,日志读写多少,分开的了解.

目前还没有工具能够很轻松的了解. 幸运的是systemtap自己带的disktop可以帮我们做到,位于/usr/share/doc/systemtap/examples/io/disktop.stp.
Read more…

商品库MySQL优化实践

April 11th, 2011 11 comments

在刚刚结束的Qcon 2011北京会议上我做了以下的分享:

淘宝商品库是淘宝网最核心的数据库之一,采用MySQL主备集群的架构,特点是数据量大且增长速度快,读多写少,对安全性要求高,并发请求高。

演讲内容包括淘宝商品库硬件的选型决策, 安全性和性能的平衡,特别是创新引入PCI-E Flash卡和Flashcache作为Cache提高IO性能,在保证安全性的前提下就包括MySQL、InnoDB引擎、文件系统、系统Page Cache、 IO调度算法、DM层(Flashcache)、Raid卡、设备驱动在内的整条IO路径的Cache进行优化,进一步挖掘了系统IO的潜能,重点介绍优化过程中的一些经验教训、测量手段和工具。

玩得开心!

Categories: Linux, 调优 Tags: ,

EEP 36: Line numbers in exceptions

April 2nd, 2011 1 comment

最近关于Erlang程序在异常打印堆栈时候带上行号信息的提案开始被讨论了,具体看这里:
EEP 36: Line numbers in exceptions: http://www.erlang.org/eeps/eep-0036.html

初学Erlang的人估计都有这个困惑,程序异常的时候打印堆栈不假,但是只打出函数名,如果模块很长的话,很难找到具体发生异常的点,通常再通过打日志的方式来定位,非常的低效无聊。有人开玩笑说是Erlang鼓励写短函数和模块. 我曾经想了个方法解决这个问题, 见 这里 , 但不是完美的方案。

EEP 36则是从编译器直接搞定这个问题,会爽很多, 我们看下他的效果:
Read more…

Categories: Erlang探索 Tags: ,

oprofile抓不到采样数据问题和解决方法

April 1st, 2011 15 comments

最近有同学反映在某些新机器上做性能调优的时候, oprofile 有时抓不到数据,我之前也遇到这个情况,很是无语,今天特地验证了下。


# 我们的操作系统和机器配置大概是这样的:
$sudo aspersa/summary
# Aspersa System Summary Report ##############################
        Date | 2011-03-31 16:26:05 UTC (local TZ: CST +0800)
    Hostname | my031226.sqa.cm4
      Uptime | 10:00,  4 users,  load average: 0.00, 0.78, 5.29
      System | Huawei Technologies Co., Ltd.; Tecal RH2285; vV100R001 (Main Server Chassis)
 Service Tag | 2102317716N0AA000062
     Release | Red Hat Enterprise Linux Server release 5.4 (Tikanga)
      Kernel | 2.6.18-164.el5
Architecture | CPU = 64-bit, OS = 64-bit
   Threading | NPTL 2.5
    Compiler | GNU CC version 4.1.2 20080704 (Red Hat 4.1.2-44).
     SELinux | Disabled
# Processor ##################################################
  Processors | physical = 2, cores = 12, virtual = 24, hyperthreading = yes
      Speeds | 24x2400.151
      Models | 24xIntel(R) Xeon(R) CPU X5670 @ 2.93GHz
      Caches | 24x12288 KB
..

$sudo rm -f /root/.oprofile/daemonrc

$sudo opcontrol --setup --no-vmlinux
$sudo opcontrol --init
$sudo opcontrol --reset
$sudo opcontrol --start
Using 2.6+ OProfile kernel interface.
Using log file /var/lib/oprofile/samples/oprofiled.log
Daemon started.
Profiler running.

$sudo opcontrol --status
Daemon running: pid 9253
Separate options: none
vmlinux file: none
Image filter: none
Call-graph depth: 0

#这里喝杯茶,让子弹飞一会儿

$sudo opcontrol --shutdown
Stopping profiling.
Killing daemon.

$opreport 
opreport error: No sample file found: try running opcontrol --dump
or specify a session containing sample files

$tree /var/lib/oprofile/samples/current/
/var/lib/oprofile/samples/current/

0 directories, 0 files

确实是没抓到sample文件!

经过无数次的分析和判断,再加上goolge大神的帮助,找到问题的根源了:
Read more…

Categories: Linux, 工具介绍, 调优 Tags: ,

Linux下方便的socket读写查看器(socktop)

March 31st, 2011 8 comments

晚上 雕梁 说要找个工具来调查下unix域套接字的发送和接受情况,比如说A程序是否送出,B程序是否接收到,他找了tcpdump ,wireshark什么的,貌似都不支持。

这时候还是伟大的systemtap来救助了。 因为所有的socket通讯都是通过socket接口来的,任何family的通讯包括unix域套接都要走的,所以只要截获了socket 读写的几个syscall 就搞定了.

systemtap发行版本提供了个工具socktop, 位于 /usr/share/doc/systemtap/examples/network/socktop, 是个非常方便的工具, 干这个事情最合适了。
Read more…