一封模块短板分析的邮件

今天整理资料的时候,发现了刚毕业的时候发的一封短板分析的邮件

那个时候虽然很菜,但做事非常有激情!怀念跟着老大和兄弟们出差到北京那段日子!


-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


From:zhouxiaomin
Sent: 2010年9月15日 9:52
To: shiguojun; yanfei; xieyongkang; huangzhou; wuhao; wangjimei;luyiming; zhaobomin
Cc: holmes-qa; holmes-rd
Subject: 答复: 【9-9】 holmes-stat/rcv性能测试进度

 

Hiall

 

针对国君提出的map1-stat在极限情况下cpu idle33%,无法再压下去,而目前处理的瓶颈在与统计线程的计算。统计线程处理逻辑存在短板,没有最有效的利用CPU,”(简称短板问题),进行了如下场景分析:

 

1)初步分析

8个统计线程,使用文件极限压,无dumpclicklog,使用iostatvmstat观察系统性能,极限情况下cpu idle33%左右,io util 1%以下,wa0

 

根据io util wa值,以及国君先前给出的“dump数据时间间隔对CPUMEM没有明显影响”的结论,初步判断短板不在文件io

从单线程短板以及多线程同步造成的短板来考虑。

 

 

2)考虑多线程同步

a. 1个统计线程,使用文件极限压,无dumpclicklog。有2个核出于繁忙状态,cpu idle分别为0.7%(数据解析)和1.0%(统计)


b.2个统计线程,使用文件极限压,无dumpclicklog。有3个核出于繁忙状态,cpu idle分别为2.3%(数据解析)、6.3%(统计)、6.3%(统计)

c.4个统计线程,使用文件极限压,无dumpclicklog。有5个核出于繁忙状态,cpu idle分别为9.6%(数据解析)、15.4%(统计)、17.3%(统计)、18.1%(统计)、17.7%(统计)



工作的两类线程(主要,还有一些周期性运行的线程):

数据解析线程(只有一个),将log从文件中取出,push进队列,需要加锁-解锁

统计线程(可配),将数据从队列中取出,两个阶段frontpop,都需要对队列进行加锁-解锁。

 

针对上面几个场景进行分析,随着统计线程的增多,由于线程同步的需要,数据解析线程的idle越来越大,同时统计线程的idle也越来越大。

初步判断,短板问题是由多线程同步带来的。

 

 

3)考虑统计线程统计逻辑本身的短板

a.开1个统计线程,使用文件极限压,无dumpclicklog先使用数据解析线程将统计队列压满,在统计队列满后,停数据解析线程,开统计线程进行统计

开数据解析进程(统计线程不运行),有一个核cpu idle0%(数据解析)

停数据解析线程,开统计线程进行统计,有一个核cpu idle18%(统计线程)

 

由该场景推断,统计线程本身也存在短板。

                                                                                                                                                              

b.开1个统计线程,使用文件极限压,无dumpclicklog,先使用数据解析线程将统计队列压满,在统计队列满后,停数据解析线程,开统计线程进行统计,统计线程不发送key-value数据给armor

统计线程idle可以到达0%

 

由以上两个场景分析可得出结论,统计线程本身也存在短板,短板在于将数据发送给armor。主要是由于网络交互带来的等待。

 

4)综合考虑

结合2)和3),制造如下场景:

8个统计线程,统计线程不发送数据给armor,使用文件极限压,无dumpclicklog

Cpu idle平均为26%,在解决掉统计线程本身的短板后,开多个统计线程进行统计,cpu idle依然无法压到0%

可以得出结论,多线程同步造成的等待使cpu  idle无法压到0%

 


结论:

综上分析,map1  短板主要在以下两个方面:

1)  统计线程本身的短板:数据发送给armor带来的网络交互

2)  多线程的同步:map1中存在很多线程需要同步的点

 

针对于统计线程本身的短板,可以考虑增大发送给armor的数据包的大小或者使用多线程来减缓

针对于多线程同步带来的开销,可以考虑对锁的粒度进行细化来减缓

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值