Blog

iperf测试TCP性能

Content #

  1. 在目标机器上启动 iperf 服务端:
# -s表示启动服务端,-i表示汇报间隔,-p表示监听端口
$ iperf3 -s -i 1 -p 10000
  1. 在另一台机器上运行 iperf 客户端,运行测试:
# -c表示启动客户端,192.168.0.30为目标服务器的IP
# -b表示目标带宽(单位是bits/s)
# -t表示测试时间
# -P表示并发数,-p表示目标服务器监听端口
$ iperf3 -c 192.168.0.30 -b 1G -t 15 -P 2 -p 10000
  1. 稍等一会儿(15 秒)测试结束后,回到目标服务器,查看 iperf 的报告:
[ ID] Interval           Transfer     Bandwidth
...
[SUM]   0.00-15.04  sec  0.00 Bytes  0.00 bits/sec                  sender
[SUM]   0.00-15.04  sec  1.51 GBytes   860 Mbits/sec                  receiver

最后的 SUM 行就是测试的汇总结果,包括测试时间、数据传输量以及带宽等。按照发送和接收,这一部分又分为了 sender 和 receiver 两行。

...

pktgen测试PPS

Content #

pktgen 支持丰富的自定义选项,方便你根据实际需要构造所需网络包,从而更准确地测试出目标服务器的性能。

不过,在 Linux 系统中,你并不能直接找到 pktgen 命令。因为 pktgen 作为一个内核线程来运行,需要你加载 pktgen 内核模块后,再通过 /proc 文件系统来交互。下面就是 pktgen 启动的两个内核线程和 /proc 文件系统的交互文件:

$ modprobe pktgen
$ ps -ef | grep pktgen | grep -v grep
root     26384     2  0 06:17 ?        00:00:00 [kpktgend_0]
root     26385     2  0 06:17 ?        00:00:00 [kpktgend_1]
$ ls /proc/net/pktgen/
kpktgend_0  kpktgend_1  pgctrl

pktgen 在每个 CPU 上启动一个内核线程,并可以通过 /proc/net/pktgen 下面的同名文件,跟这些线程交互;而 pgctrl 则主要用来控制这次测试的开启和停止。

如果 modprobe 命令执行失败,说明你的内核没有配置 CONFIG_NET_PKTGEN 选项。这就需要你配置 pktgen 内核模块(即 CONFIG_NET_PKTGEN=m)后,重新编译内核,才可以使用。

...

均值回归

Content #

高尔顿找到了 100 组家庭测量了他们父母和孩子的身高,通过一元线性回归分析建立了一个公式来预测孩子和父母身高的关系,如下图。

你可以通过这个图很明显地看到,通过公式计算出来的值和实际孩子最后成长的结果是不太一样的,最终孩子的身高其实趋向于平均身高。身材高大的双亲,子女不一定高;身材矮小的双亲,孩子也不一定矮。

高尔顿把这个现象叫做回归平凡,后来的统计学家把它叫做“均值回归”,意思就是实际发生的数据比我们理论上的预测更加接近平均值,整体趋势上会慢慢向一个平均值发展。比如最近比较火的一个例子,就是北大的教育学院的丁延庆教授的吐槽。

丁教授自己 6 岁时就能背一下整本新华字典,本科在北大,后来在哥伦比亚获得了教育学博士学位,他的妻子也是北大毕业的。丁教授与妻子都非常学霸,按理来说孩子也会走一条学霸的道路。但是丁教授的女儿却几乎完美规避了父母所有的学霸基因,在学渣的道路上越走越远。以至于丁教授在视频里面吐槽女儿“不辅导作业父慈女孝,一辅导作业鸡飞狗跳”。其实这就是均值回归的一个典型例子。

还有一个著名的例子就是美国《体育画报》的“封面诅咒”。《体育画报》是美国非常著名的一个体育杂志,但是每次杂志封面登了哪个队伍胜利之后,后面一定会有一场大败在等着这个队伍。

比如当年在俄克拉何马队连续赢得 47 场大学橄榄球比赛之后,《体育画报》刊登了《俄克拉何马为何战无不胜》的封面故事。紧接着在下一场比赛中,俄克拉何马队就以 21∶28 输给了圣母大学队,这样的事情还发生了好几次。

其实这也是一种均值回归的情况,对于任何优秀的人和团队来说,很多时候其实是运气、能力、时机多种因素来造就成功的。好的没你想得那么好,差的也没有你想得那么差,最终还是会回到平均水平。就像我接触了很多大佬,我发现我们和最优秀的人之间,也没有那么大的智商和情商的距离,但是人家一直在坚持努力,同时再加上天时地利人和,所以他成功了。我们如果三天打鱼两天晒网,那就很难成功。

实际上,我们每天都会遇到均值回归的情况。我们不要过分夸大优秀者的能力,也不要因为某几次失败就一蹶不振,过度小看自己。只要你不懈努力,就算你现在在谷底,也最终会到达平均值水平,甚至超过平均值。

Viewpoints #

From #

13 | 趋势分析与回归:父母高,孩子一定高么?

精确率与召回率

Content #

精确率为预测正确的正例 (TP) 在所有预测为正例的样本中出现的概率,即分类正确的正样本个数占分类器判定为正样本的样本个数的比例。 Precision = TP / (TP + FP)

召回率是预测正确的正例 (TP) 在原始的所有正例样本中出现的概率,即分类正确的正样本个数占真正的正样本个数的比例。 Recall = TP / (TP + FN)

From #

替代终点问题

Content #

还有一些数据在分析和统计的时候,由于时间长度不够,会造成数据统计的结果不准确。这个在学术上我们叫做“替代终点问题”( surrogate endpoint problem)。

比如我们要检测某种药物是不是可以延年益寿,这其实就需要投入大量的时间和资金,因为我们必须得等到人们去世以后才能知道他们的寿命。

所以对于现在各种各样的保健品,如果它的宣传的作用是可以延年益寿的话,那大部分都是收你“智商税”的,因为这种测试非常难以完全实现。即使服用这些药物的人最后长寿了,那也不能够代表这两种之间存在着因果关系,很有可能只是前面讲到的相关性。

同理,你看这么多风险投资人在选择创业公司的时候,其实是靠大的方向和辨识团队来进行投资,而不是靠具体某些数据来表明这个创业公司是否靠谱。因为相对一个创业公司来讲,公司的成立时间太短了,公司的数据不代表趋势,这就是替代终点问题。

Viewpoints #

From #

11 | 因果倒置:星座真的可以判定你的性格吗?

得克萨斯神枪手谬误

Content #

当年在美国西部得克萨斯州发现一个神枪手,他经常在各地的民居的墙上练习射击,几乎他所有的弹孔都集中在十环左右这个中心的区域。他已经成为了神话,人们一直在寻找他。

但是当人们真的找到了这个神枪手后,发现他自己打枪其实一点都不准,也不敢跟其他人去决斗。那他墙上的这些靶子和子弹点是怎么形成的呢?后来人们才发现,原来他是先朝墙上开很多枪,然后在弹孔最密集的地方画上了十环的靶子,再把散布在其它地方的弹孔用原来的泥土补起来。这样看上去,他每个地方打的靶子都很准确,因为先有弹孔,再有靶子。

Viewpoints #

From #

07 | 散点图和相关性:怎样快速从数据当中找到规律?

伯克松悖论

Content #

伯克松悖论指的是当不同个体被纳入研究样本的机会不同时,研究样本中的两个变量 X 和 Y 表现出统计相关,而总体中 X 和 Y 却不存在这种相关性。

第一个例子是著名的“海军与平民死亡率”的例子。在 1898 年“美西战争”期间,美国海军的死亡率是 9%,而同期纽约市市民的死亡率为 16%。后来海军征兵部门就拿这个数据跟大家讲,待在部队里其实比大家待在家中更加安全。

这逻辑肯定是错误的,但是错误不在具体数据,而是这两组数据其实没有什么可比性。因为海军主要是年轻人,他们身强体壮、不会出现太多身体疾病;而纽约市民里面包含了新出生的婴儿、老年人、病人等等,这些人无论放在哪里,他的死亡率都会高于普通人。

所以,参军不能说比大家待在家中更加安全,但反过来你也无法证明待在家中就比参军更安全,因为比对的对象不是在同一个人群里,这就是伯克森悖论。

第二个例子,现在的城市女孩会觉得,对他很热情的男生往往都长得不帅,长得很帅的男生往往对她都不够热情。但其实帅和不帅并不是导致男孩热不热情的原因,只是因为只有长得帅或者对女生够热情的男生,才有更多机会和女孩子接触,你看下图就明白了,还是从局部看整体的逻辑不对。

第三个例子,现在我们有一个用户访谈的数据结果:购买某品牌产品的 100 人中,有 72% 的人说在一个月内看过该品牌的广告 ;而在未购买商品的 300 人中,有 76% 的人说一个月内没看到过这个品牌的广告。

通过这个数据我们能看到什么呢?我们可以下结论说是广告提高了我们的用户转化率吗?

这是不可以的,因为实际购买的人会对广告更有印象,而没有购买的人也许也看了广告,只不过他没有印象而已。因为统计范围不同,所以不能够根据这个数据给出转化率比较高的结论,然后大肆提高广告投放。

看上去有因果关系的数据,还要看数据集的比对性才可以给出数据最终的结果。

Viewpoints #

From #

11 | 因果倒置:星座真的可以判定你的性格吗?

母乳喂养应该多久

Content #

现在都非常讲究母乳喂养,但究竟母乳喂养应该多久呢?世界卫生组织在《婴幼儿喂养指南》中建议母乳喂养两年或更长的时间。相关研究也表明,与非母乳喂养的婴幼儿相比,母乳喂养的婴幼儿患某些传染病的风险更低,也有更低的死亡率。

然而,在一些研究中研究人员发现,对接受母乳喂养时间更长的婴幼儿来说,营养不良的风险更高。这是对的么?应该缩短母乳喂养的时间么?1997 年,来自美国约翰斯·霍普金斯大学的研究人员专门就此进行了分析,发现真实原因是收入比较低的家庭通常其他食物非常有限,更倾向于接受更长时间的单一母乳喂养。

所以没有充足的辅食才会导致婴儿营养不良,现在新生儿家庭都已经知道除了母乳喂养,在后期要增加辅食才可以让孩子更健康。

Viewpoints #

From #

11 | 因果倒置:星座真的可以判定你的性格吗?

虱子让人健康

Content #

在英国瓦努阿图岛上的居民有一个奇怪的信仰:他们相信虱子有益于身体健康。因为经过数百年的观察,这里的人发现身体健康的人身上通常都有虱子,而生病的人就没有。

数据本身是准确无误的,科学家们也发现同样的数据,但不代表着岛上居民这个“虱子让人健康”的信仰就正确。后来经过自然学家实地考察发现了真相,原来这里几乎所有人的身上都有虱子,但是如果有人发烧,随着体温升高,虱子会因为受不了高体温而离开。

所以看上去是虱子使人健康,其实是体温高导致虱子不栖息在人身上。所以,岛上居民的结论应该是看到没有虱子的人应该让他去就医,因为他发生了疾病。在原始部落并没有体温计,这个结论的确可以帮助到他们,而不是盲目的相信“虱子让人健康”。

Viewpoints #

From #

11 | 因果倒置:星座真的可以判定你的性格吗?