Archive

Author Archive

qperf测量网络带宽和延迟

June 10th, 2012 18 comments

我们在做网络服务器的时候,通常会很关心网络的带宽和延迟。因为我们的很多协议都是request-reponse协议,延迟决定了最大的QPS,而带宽决定了最大的负荷。 通常我们知道自己的网卡是什么型号,交换机什么型号,主机之间的物理距离是多少,理论上是知道带宽和延迟是多少的。但是现实的情况是,真正的带宽和延迟情况会有很多变数的,比如说网卡驱动,交换机跳数,丢包率,协议栈配置,光实际速度都很大的影响了数值的估算。 所以我们需要找到工具来实际测量下。

网络测量的工具有很多,netperf什么的都很不错。 我这里推荐了qperf,这是RHEL 6发行版里面自带的,所以使用起来很方便,只要简单的:

yum install qperf

就好。

我们看下man qperf的介绍:

qperf measures bandwidth and latency between two nodes. It can work over TCP/IP as well as the RDMA transports. On one of the nodes, qperf is typically run with no arguments designating it the server node. One may then run qperf on a client node to obtain measurements such as bandwidth, latency and cpu utilization.
In its most basic form, qperf is run on one node in server mode by invoking it with no arguments. On the other node, it is run with two arguments: the name of the server node followed by the name of the test. A list of tests can be found in the section, TESTS. A variety of options may also be specified.

使用起来也相当简单: Read more…

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

了解系列之-内存

May 28th, 2012 7 comments
Categories: 了解系列 Tags: ,

MySQL和IO(下)

May 12th, 2012 Comments off

MySQL和IO(上)在这里可以看到。

Categories: 体系结构, 数据库, 调优 Tags: ,

了解系列之-Cpu

May 12th, 2012 4 comments
了解Cpu

View more PowerPoint from Feng Yu

Erlang虚拟机基础设施dtrace探测点介绍和使用

April 28th, 2012 2 comments

最新的Erlang虚拟机(R15B01)很大的一个改进就是加入了对dtrace探测点的支持了, 具体参见这里, 主要目标是方便在生产实践中定位复杂的性能问题。

目前Erlang的虚拟机的探测点支持Linux的systemtap和freebsd的dtrace,我们刚好能够享受的到。

作者Scott Lystig Fritchie在去年的euc中做了个很有意思的报告,参见这里,该PPT很详细的介绍了利用dtrace的探测点可以观察到erlang的行为如下:

Processes: spawn, exit, hibernate, scheduled, …
Messages: send, queued, received, exit signals
Memory: GC minor & major, proc heap grow & shrink
Data copy: within heap, across heaps
Function calls: function & BIF & NIF, entry & return
Network distribution: monitor, port busy, output events
Ports: open, command, control, busy/not busy
Drivers: callback API 100% instrumented
efile_drv.c fifile I/O driver: 100% instrumented

这些探测点基本上属于IO,进程调度,消息发送,driver等虚拟机最底层的和操作系统耦合的部分,对性能的影响巨大。

目前Erlang自己的基础设施并没有涵盖到这部分内容,如dbg,trace机制都无法了解到这些数据,导致在大型的集群系统里面一旦发现性能问题无法很好的展开调查,所以这些探测点刚好填补了空白。

目前这些dtrace probe点是用static marker实现的,细节可以参看这里这里,好处是不用这些特性的时候,不会对性能有任何的影响,只需要为使用付代价。目前支持这种机制的语言和系统有java,python,mysql,pgsql等,可见威力强劲。

好拉,废话少说,我们来体验下。
Read more…

了解系列之-IO设备

April 10th, 2012 2 comments

了解系列之-IO协议栈

April 10th, 2012 Comments off