开始新对话

此帖子已超过 5 年

Solved!

Go to Solution

3303

2014年5月22日 20:00

请教这个该怎么求,如果有一百个点那么每个点对应一个大于0小于100的数值。

Dear 各位前辈:

     弄个题外话。

     请教这个该怎么求,如果有一百个点那么每个点对应一个大于0小于100的数值想求一个均值。但是,

A,简单的把100个数值求和再除以100

B,数值从大到小排列取前20个,求着20个的平均值。

C,做出散点图可以在点最密集的地方画曲线再求上下限之间的均值。

A 做法简单粗暴 ;B 可行好像也简单了点;C,好像是啥算法的用专业的数学软件可以画出曲线来,但要把集成在程序中或者SQL语句中不太现实。

有前辈想起来 ,step C是啥方法么?有近似算法么?

2 Intern

 • 

1.4K 消息

2014年5月24日 09:00

都是统计知识而已。。。

均值有均值的用武之地,其它诸如方差、标准差、概率分布等相对复杂的公式也只是用在特定的分析案例中。关键还是要理解每种统计公式的使用场景是什么,否则简单和复杂根本没区别。

2 Intern

 • 

3.2K 消息

2014年5月25日 02:00

Dear 前辈,由于新的地方没有统计标准。偶准备每15分钟取一次CPU和内存的百分比数值,这样一天24小时就有96个相对应的值,那么求整体均值显然不太可能,之前的地方去前25%最高值,然后再在这25%中求均值。只是想知道这样做有啥数学理论支持。如同周期变换可以用傅里叶变换表示等。哈哈,想多了。

1.6K 消息

2014年5月25日 20:00

http://msdn.microsoft.com/en-us/library/ms176080.aspx

看看这个函数,SQL Server提供的标准方差

你还可以学习一下股票,搞些移动平均线玩玩

2 Intern

 • 

3.2K 消息

2014年5月25日 21:00

谢谢,太好了。偶看看Oracle有没有这样的,哈哈

2 Intern

 • 

1.4K 消息

2014年5月26日 00:00

拿CPU来讲,有的时候均值会hide一些outliers,就是一些异常值,特别高的,比如100% Utilization持续几秒,造成故障发生,但其它时间UT都非常低。你拿到的performance log可能每个点都是一个均值而已,如果是5分钟内的均值,那么你看到的点通常是正常的,比如20%~30%,所以这就掩盖了那发生问题的几秒钟。

这种情况用均值来分析是解决不了问题的,得看full distribution,比如heat map、Histogram,记录的粒度非常细,可以看到outliers。

2 Intern

 • 

3.2K 消息

2014年5月26日 04:00

谢谢前辈,偶也只是通过AIX命令把这一数值存储起来。您说的非常有道理,如果要实现您的功能那么粒度要达到秒级,即使有了秒级的数值如果没有相应的SQL信息,那么这些数值也没啥用。 这也估计是许多第三方性能监控软件存在的空间。

2 Intern

 • 

1.4K 消息

2014年5月26日 19:00

秒级其实粒度也不算细的,通常也是均值,比如IOPS。若Outlier Delay 发生在函数级别,只有做tracing才能看到,比如Microsoft ETW framework,Solaris/Linux/MacOS DTrace framework,RedHat SystemTap Framework。这些框架可以trace function call stack,只要有对应模块的symbols,就可以看到对应的函数名,每个function call duration都可以看到,从而找出issue code path -> find developer。

下图是抓的一个ETW tracing,可以看到,每个event的call stack一目了然,只要添加对应的Duration column,就可以看到哪个function call contribute了相对较多的delay。

5-27-2014 10-51-12 AM.jpg

2 Intern

 • 

3.2K 消息

2014年5月26日 22:00

Wow , 真的是professional的呀。太牛了!

找不到事件!

Top