Performance

libev ev_io源码分析

6

最近用libev做项目,在使用libev时遇到了一些问题,最近看了libev的代码,整理了一部分libev实现。

1. ev_watcher和ev_loop

ev_watcher:

libev中所有事件的基础类型ev_watcher,所有的事件都可以通过(W)watcher转换成ev_watcher,大写的W在libev定义的是ev_watcher *。抽象出ev_watcher作用是所有的watcher都可以共用ev_start、ev_stop函数
(更多…)

Flashcache新添加驱逐空闲脏页参数

0

我在之前的博文提过Flashcache的cache是以set为单位管理的,每个set默认2M。 当单个set里面的脏页数量超过dirty_thresh_pct的时候,就会启动背景工作队列来把超过设置的脏页回写到后备磁盘去。 这里有别的同学对flashcache设计文档的翻译.

参看dirty_thresh_pct的文档解释:

dev.flashcache..dirty_thresh_pct = 20
Flashcache will attempt to keep the dirty blocks in each set
under this %. A lower dirty threshold increases disk writes,
and reduces block overwrites, but increases the blocks
available for read caching.

Flashcache之所以这样做的目的是当它在处理用户IO请求需要cache块的时候,保证马上可以拿的出来。因为读写的时候,如果需要的cache块不能满足的话,flashcache选择简单的绕过cache机制,直接走uncache io, 同时启动页面回收,一下子收回超过设置部分的页面,对性能有很大的损失。
特别是顺序写的时候,写一圈,再回绕在写的场合,性能特别差,就是这个原因。

那么如何保持一定量的可用cache块就很重要。通常cache数据都有冷热点,而且和时间很大关系。flashcache对冷热的判断是透过LRU类似的算法来判断的,这个是基于使用频度的维度。但是缺乏时间维度的判断。

新版本的flashcache引入了fallow_delay参数来解决这个问题,如果一个脏页超过fallow_delay秒,默认15分钟,都没有重新被访问到,那么数据就会被回写。 回写后,作为候选页面可以被新的cache重新利用。
(更多…)

淘宝Web服务器Tengine正式开源

29

我们很高兴的宣布由淘宝网核心系统部开发的Tengine服务器终于正式开源了。

淘宝网是亚洲最大的电子商务网站,Alexa全球排名第12位。每天访问淘宝网的PV超过了几十亿。大压力的访问,对淘宝网的Web服务器提出了严苛的要求。经过一系列的对比,我们最终选择了Nginx作为我们的Web服务器,因为它性能高,又非常节省资源(CPU和内存),并且有足够的灵活性。

一开始我们使用Nginx还仅仅用它来处理静态文件、PHP等,接着我们又在Nginx上开发了几十个各种用途的模块。随着对Nginx的越来越了解,我们发现它本身已经不能够完全满足我们的需求了,所以我们就开始对Nginx核心进行定制和开发。考虑到我们开发的功能中的一些对其它的互联网用户也可能有用处,所以我们就想到了把这些公用的功能开源出来。淘宝网是开源软件的用户和受益者,我们也想成为开源软件的贡献者。这就是我们决定开源Tengine的原因。
(更多…)

RethinkDB & TokuDB调研测试报告

5

点击 这里 下载

latencytop深度了解你的Linux系统的延迟

8

我们在系统调优或者定位问题的时候,经常会发现多线程程序的效率很低,但是又不知道问题出在哪里,就知道上下文切换很多,但是为什么上下文切换,是谁导致切换,我们就不知道了。上下文切换可以用dstat这样的工具查看,比如:
[shell]
$dstat
—-total-cpu-usage—- -dsk/total- -net/total- —paging– —system–
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
9 2 87 2 0 1|7398k 31M| 0 0 | 9.8k 11k| 16k 64k
20 4 69 3 0 4| 26M 56M| 34M 172M| 0 0 | 61k 200k
21 5 64 6 0 3| 26M 225M| 35M 175M| 0 0 | 75k 216k
21 5 66 4 0 4| 25M 119M| 34M 173M| 0 0 | 66k 207k
19 4 68 5 0 3| 23M 56M| 33M 166M| 0 0 | 60k 197k

#或者用systemtap脚本来看
$sudo stap -e ‘global cnt; probe scheduler.cpu_on {cnt< <<1;} probe timer.s(1){printf("%d\n", @count(cnt)); delete cnt;}'
217779
234141
234759
[/shell]

每秒高达200k左右的的上下文切换, 谁能告诉我发生了什么? 好吧,latencytop来救助了!

它的官网:http://www.latencytop.org/

Skipping audio, slower servers, everyone knows the symptoms of latency. But to know what’s going on in the system, what’s causing the latency, how to fix it… that’s a hard question without good answers right now.

LatencyTOP is a Linux* tool for software developers (both kernel and userspace), aimed at identifying where in the system latency is happening, and what kind of operation/action is causing the latency to happen so that the code can be changed to avoid the worst latency hiccups.

它是Intel贡献的另外一个性能查看器,还有一个是powertop,都是很不错的工具.
(更多…)

开源混合存储方案(Flashcache)

0

Linux下新系统调用sync_file_range提高数据sync的效率

6

我们在做数据库程序或者IO密集型的程序的时候,通常在更新的时候,比如说数据库程序,希望更新有一定的安全性,我们会在更新操作结束的时候调用fsync或者fdatasync来flush数据到持久设备去。而且通常是以页面为单位,16K一次或者4K一次。 安全性保证了,但是性能就有很大的损害。而且我们更新的时候,通常是更新文件的某一个页面,那么由于是更新覆盖操作,对文件系统的元数据来讲的话,无需变更,所以我们通常不大关心元数据是否写入。 当更新非常频繁的时候,我们时候能够有其他方法减少性能损失。sync_file_range同学出场了。
(更多…)

调查服务器响应时间的利器 tcprstat

7

我们在做服务器程序的时候,经常要知道一个请求的响应时间,借以优化或者定位问题。 通常的做法是在代码里面加入日志计算时间,这个方法有问题,时间不准确。因为数据从网卡到应用程序,从应用到网卡的时间没有被计算在内。 而且这个时间随着系统的负载有很大的变化。
那同学说,我wireshark, tcpdump抓包人肉统计不行吗。 可以的,只不过我会很同情你,此举需要耐心且不具可持续性。 所以我们希望有个工具能够最少费力的做这个事情。

这时候来自percona的tcprstat来救助了! 这个工具原本开发用来调查mysqld的性能问题,所以不要奇怪它的默认端口是3306, 但是我们可以用这个工具来调查典型的request->response类型的服务器。

什么是tcprstat:
(更多…)

好消息,O’Reilly Velocity大会来到中国

0

淘宝网核心系统的叔度曾于今年6月份代表淘宝参加了在美国Santa Clara举行的Velocity 2010大会,回来后感觉收获不小。所以淘宝网和O’Reilly合力把这个关于Web性能和运维的高端会议引入了中国,旨在为提高中国互联网的性能贡献一份力量——这也是Velocity除美国以外的第二个分会场。

大会将于12月7号至8号在北京召开。国际著名Web优化专家Steve Souders(Google)和淘宝网核心系统的章文嵩博士是本次大会的联合主席。 Steve将在大会上宣告:WPO(Web Performance Optimization ,网站性能优化)—— 一种新的互联网产业即将诞生。而章文嵩博士将在大会介绍淘宝近年来在软件基础设施构建上的一些实践,淘宝网业务的指数级增长是如何促使企业寻求”稳定、高效、低碳”的基础架构方案的。淘宝奉献给业界的实战经验,绝对不容错过。

其他参会的国外嘉宾还包括 Yahoo!、Facebook、Youtube等知名互联网企业。其中,Facebook 的BigPipe网站流技术,Youtube的视频优化和Yahoo!新版邮箱的优化技术都备受关注。

国内互联网企业阵容也空前强大,除淘宝网外还包括谷歌、Cisco、阿里巴巴、阿里云、百度、腾讯、盛大、新浪、网易、凤凰网、基调网络、网宿科技、土豆网等诸多名企的技术专家都有相关技术主题分享。

本次大会将充分体现淘宝网勇于开放和分享的气魄,正如淘宝把TFS和Tair等重量级软件的开源一样,本次大会上淘宝将和国内外同行分享淘宝的优化实践经验题目有5个之多。精彩敬请期待!

详情请参考大会主页:http://velocity.oreilly.com.cn/

P.S. 对于学生来说一个好消息是只要2.4折即可参加,花400多块就可以和章文嵩博士、Steve Souders等国内外大牛过招,有兴趣的同学请抓紧了~~~

SystemTap –Linux下的万能观测工具

5
Go to Top