badO1a5A90 / Performance

Xray/v2ray/trojan/shadowsocks 基础性能测试及针对性测试.

Home Page:https://github.com/badO1a5A90/Performance

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

评测方法不具有实际意义

klzgrad opened this issue · comments

虽然测试结果符合预期,但测试环境不能代表典型用户环境。一是在算力上,Xeon很少有用户使用。二是在带宽上,没有用户具有10Gb国际专线。实验室环境测试指标再高,并不会直接转化为用户实际效果。

用户实际环境中,如果是高算力低带宽,那么TLS开销便不成为瓶颈,这个吞吐指标便没有意义。如果是低算力高带宽,TLS开销才可能成为瓶颈。但是考虑到国际线路高带宽的成本远高于提高用户设备算力的成本,第二种情况是罕见的。

所以这个评测如果要具有实际意义,必须在TLS开销可能成为瓶颈的低算力硬件上,定位不同软件的满载带宽。如果用户的可用国际带宽高于测得的满算力带宽,选用不同软件才可能产生实际性能差异。

实际测试过程中B为满负荷运行

B的CPU限制,使用cgroup精确限制

我知道你可能不会看完整个测试报告,所以我把其中两句话在此引用出来

更多详情在 #2 中有大量地、重复地进行讨论过了,基本情况和你说的一致,这个项目一直以来就按照这种思维进行测试的

所以这个评测如果要具有实际意义,必须在TLS开销可能成为瓶颈的低算力硬件上,定位不同软件的满载带宽。如果用户的可用国际带宽高于测得的满算力带宽,选用不同软件才可能产生实际性能差异。

首先,理论性能不用实验室理想环境测试还应该怎么测试.

你的这个说法是没错的,但测试方法全部做到了,甚至做的更好.
请看具体的试验说明.可以看这里
这里测试方式(需要点击展开),数据流向,限制等等都说明的非常详细了.

@SekiBetu 说的很精准.整个试验中就是刻意制造了瓶颈的低算力硬件(所有测试中满负荷),并且是客户端瓶颈(更具实际意义如硬路由),而其他部分均不会成为瓶颈(包括AD的数据制造接收能力,网络带宽等等),然后算出的不同软件的满载带宽.

所以这个测试成为了相同算力下,选用不同软件,产生实际性能差异的对比.

因此,评测方法很具有实际意义

另外关于你其他说法的补充,我文档里也有说明

  • 关于测试数据的意义
    • 各种组合配置的速率测试是性能对比测试, 不是吞吐量上限测试.
    • 测试可以体现在不同使用模式下,或不同程序版本下性能有差异.
    • 测试代表测试环境下的差异,并不表示绝对差异,也不是每个人使用后的实际性能提升.
    • 通常情况下硬件性能越低,XTLS对性能影响越大,尤其是没有AES指令的硬件设备上,会有更多倍数相差.

其实测试方式中第一句我就说了

要测试协议之间性能差距,那么必然是硬件CPU负荷满的情况下,其他变量不变,仅有协议组合差别下测试的情况才是有意义的。

然后下面的方式都是围绕这个构建的测试模式

测试通过合理的方式测试得出了不同软件/协议组合的性能差异.

测试的对于开发者和用户实际意义在于

  • 帮助开发者优化性能,这是每个优秀开发者应该追求的.
  • 帮助使用者在满足安全性伪装性和自己需求(如CDN)的前提下,选择性能最好的软件/协议组合

这也是我在文档中第一句就提到了的.

首先cgroup限制CPU使用时间只能是一种极不准确的模拟,cgroup可以限制cache使用吗,可以限制内存带宽吗,可以限制指令集特性吗,可以限制TDP吗?而且cgroup在x86上模拟出来的性能跟用户目标硬件的arm和mips怎么比较?用cgroup限制出来的硬件反而不代表任何实际硬件。

帮助开发者开发当然没问题,具有实验室意义。但是所谓实际意义就是用户实际工况下产生的效果,如果你的测试不能代表实际工况,那用评测指标来引导用户便是一种误导行为。

就现在的评测结果来看,绝大多数人根本没有大于100Mbps的国际线路,也不是将代理软件运行到cgroup限制的Xeon服务器上,所以具体的评测结果与实际工况并没有相关性。

我的推测是大多数用户的硬件算力要大于他的国际线路的带宽,这种情况下选用哪种软件都不会产生性能上的实际区别。如果要用这个评测去证明选用软件会产生性能差异,就要证明有用户实际使用的常用硬件会导致算力瓶颈低于线路带宽,而不是你人为弄残废的一个模拟环境。

严格来说,很多基于实验室环境的测试都可以这么说:这个结论只有实验室意义不具有用户环境意义,因为实验室环境只能模拟用户实际环境。但是总要有近似的办法,变量可控且可比较的办法去测试性能才行。
这个其实可以用一个例子来比较,就手机系统中浏览网页速度,大概近些年的手机客户感官体验其实变化不大(相当于上面提到的用户环境100M以下国际带宽),但是人们还是在升级手机(部分为了玩游戏更快,相当于要求极限性能;更多新接口/小新屏幕/5G等特性,相当于vless提供的更多新特性;部分人单纯是看着各种测试中速度更快,耗电更低)
这个测试的意义对于用户来说,相同的有限网络环境下,需要的硬件最低,比如在软硬路由上已经得到了实际上的验证。当然对于大多数人来说,可能没有实际可肉眼感知的差别,可这也并不妨碍人换新手机啊。所以也不需要指责卖手机的各种实验室测试不具有用户意义。

首先cgroup限制CPU使用时间只能是一种极不准确的模拟,cgroup可以限制cache使用吗,可以限制内存带宽吗,可以限制指令集特性吗,可以限制TDP吗?而且cgroup在x86上模拟出来的性能跟用户目标硬件的arm和mips怎么比较?用cgroup限制出来的硬件反而不代表任何实际硬件。

帮助开发者开发当然没问题,具有实验室意义。但是所谓实际意义就是用户实际工况下产生的效果,如果你的测试不能代表实际工况,那用评测指标来引导用户便是一种误导行为。

实际状况下的实际硬件情况千千万,本来就不可能被代表,协议或软件调用的资源和效能也不近相同,这时使CPU满负荷不恰好是实际意义吗?代表软件在当前情况下的最大性能,而是不是cgroup不重要。
不同架构之间当然不能直接比较,测试也只能代表测试时的实际情况,但测试也没说任何情况下提升是两倍或几倍啊,为何这就是误导了呢?为何不说网上大篇大篇的各种比较的文章或视频是误导?照你逻辑那像电子设备续航啊,防水等在实验室按特定方法测得的数据就全是误导消费者了?测试的实际意义是提供参照啊,之前的测试有arm设备的测试,性能提升是两倍,这不就是一个例子?

就现在的评测结果来看,绝大多数人根本没有大于100Mbps的国际线路,也不是将代理软件运行到cgroup限制的Xeon服务器上,所以具体的评测结果与实际工况并没有相关性。

我不知道你在哪看到的结果,但你这句话肯定错的,现在美西的vps卖最多吧,大多数都不止100Mpbs,搬瓦工美西差不多都是1G共享,跑个几百Mpbs没问题,难道你说的绝大部分人用的都是香港小水管?你要说本地带宽我还认为有可能。
代理软件运行的设备不同就没有相关性?Xtls,splice恰好是设备越差越吃香,更有可能跑出比测试还大的提升!这相关性被你吃了?

我的推测是大多数用户的硬件算力要大于他的国际线路的带宽,这种情况下选用哪种软件都不会产生性能上的实际区别。如果要用这个评测去证明选用软件会产生性能差异,就要证明有用户实际使用的常用硬件会导致算力瓶颈低于线路带宽,而不是你人为弄残废的一个模拟环境。

除了桌面端,我不敢赞同你的推测,而我也有个推测与你恰恰结论相反,大多数用户根本跑不满本地带宽,硬件算力、不同软件的性能差异有时候是很大影响因素,要不然为啥软路由这么火?大家都是吃饱了撑买性能好的CPU来翻墙?为啥都说SS和trojan-go快,说到v2ray就嫌慢?

Xtls和splice是实实在在的巨大提升,测试也只是反应了这一事实而已。

我的推测是大多数用户的硬件算力要大于他的国际线路的带宽,这种情况下选用哪种软件都不会产生性能上的实际区别。

何不食肉糜

测试结果用的千兆IPLC(大误);
当然核心观点:进步是好事。只是CPU性能强的和弱的一同比较,观感更好
另外试过xtls-rprx-splice mode效能果真比trojan还高些,这个进步是明显的

首先cgroup限制CPU使用时间只能是一种极不准确的模拟,cgroup可以限制cache使用吗,可以限制内存带宽吗,可以限制指令集特性吗,可以限制TDP吗?而且cgroup在x86上模拟出来的性能跟用户目标硬件的arm和mips怎么比较?用cgroup限制出来的硬件反而不代表任何实际硬件。
帮助开发者开发当然没问题,具有实验室意义。但是所谓实际意义就是用户实际工况下产生的效果,如果你的测试不能代表实际工况,那用评测指标来引导用户便是一种误导行为。
就现在的评测结果来看,,也不是将代理软件运行到cgroup限制的Xeon服务器上,所以具体的评测结果与实际工况并没有相关性。

已经解释过了,测试验证的是,同样的环境下不同软件/协议组合的性能高低,并不表示绝对差异,也不是每个人使用后的实际性能提升.

  1. "绝大多数人根本没有大于100Mbps的国际线路"--不要臆测和代表所有人.

  2. 你所谓的"你的测试不能代表实际工况"--实际工况千差万别,测试当然不能代表每一个人具体使用情况,你这想法本身就不可能成立的,而且这里你的说法很模糊,偷偷混淆了概念.

准确的说,测试可以代表实际工况的理论表现,只是不能代表每一个用户实际工况的具体的精确差异.但,重要的是,测试可以证明相同的实际工作环境下,不同软件/协议组合的性能有差异.
证明相同的实际工作环境下,不同软件/协议组合的性能有差异,就是有意义的,意义在于可以供用户参考选择然后投放到自己实际工况去.
何来误导?何来没有实际意义?

  1. "具体的评测结果与实际工况并没有相关性"--因为可以证明有差异,就有相关性.
    正如上面其他人的回复中说的,测试的实际意义是提供参照啊,因为
    用户可以因此知道这些不同软件/协议组合在相同环境下,性能有差异,然后可以选择相对性能最好的.
    何来误导?何来没有实际意义?

我的推测是大多数用户的硬件算力要大于他的国际线路的带宽,这种情况下选用哪种软件都不会产生性能上的实际区别。如果要用这个评测去证明选用软件会产生性能差异,就要证明有用户实际使用的常用硬件会导致算力瓶颈低于线路带宽,而不是你人为弄残废的一个模拟环境。

  1. "我的推测是大多数用户的硬件算力要大于他的国际线路的带宽"--不要臆测和代表所有人

  2. 所谓"这种情况下选用哪种软件都不会产生性能上的实际区别"--根本就是错误理解,你把性能等同于网速?
    请你理解性能,当网络物理带宽不为瓶颈时,性能可以转化成网速.当网络物理带宽成为瓶颈时,性能可以转化为低资源消耗.(比如很多硬路由用户实测cpu明显降低,低到令人发指(群友原话))
    何来误导?何来没有实际意义?

  3. "就要证明有用户实际使用的常用硬件会导致算力瓶颈低于线路带宽"--这里直接打脸,事实就是有大量硬路由用户使用后,实际提升了网速,因为原先无法跑满网络带宽.
    何来误导?何来没有实际意义?

  4. 你总是说"实际工况",实际工况就是有用户原先没有跑满带宽然后跑满了带宽,或者同样跑满带宽的情况下但是CPU显著下降.
    我的文档里面也有用户以树莓派做服务器的实际具体数据,有显著提升(从跑不满带宽到跑满带宽).
    何来误导?何来没有实际意义?

PS: 我喜欢上面回复中的一句话.
“绝大多数人都在用蜡烛,你发明电干嘛?”

开发者是车头,应该去追求性能和优化,尽力给所有人带来更好的体验.
即便个人不追求性能和优化,也不应该说性能和优化没有意义.

#4 (comment)

绝大多数人根本没有大于100Mbps的国际线路

“绝大多数人都在用蜡烛,你发明电干嘛?”,
“绝大多数人根本没有买5G套餐,你们研发什么6G?”
【吐槽:最低价格的5G套餐比搬瓦工2.5Gbps宽带的CN2-GIA-E线路的机子还贵】
很喜欢Jim Jefferies的一句话:世界就像一列火车,车头是科学家,后面的车厢是民众,你知道把车厢断开之后车头能跑多快吗?

编辑4

我的推测是大多数用户的硬件算力要大于他的国际线路的带宽,这种情况下选用哪种软件都不会产生性能上的实际区别。

100Mbps带宽跑满了,性能好的软件CPU占用比性能差的软件少一半,但是不会产生性能上的实际区别?
两个人干活只给一份工资,资本家听了都落泪
等等,我现在才意识到,你不会把网速当成性能了吧?不会吧不会吧不会吧

据我所知CN2-GIA-E虽然标称2.5Gbps,但这这是网口指标,实际性能远低于标称,高峰期实测甚至低到10Mbps,然而这些瓶颈都不在本地可控范围内,也许是太多人开始使用KCP这类环境污染协议。我很奇怪,以CN2-GIA-E线路高昂费用,然后接上一个廉价低算力的软路由,造成软路由因廉价成为瓶颈,如果用户在这里有经济理性的话,这应该是不会发生的事情。

那么所谓用户实际情况有三种情况:

  • 有钱。那么高带宽,高算力,用什么软件无所谓。
  • 没钱。那么低带宽,低算力,即使用低效软件,算力还用不完。
  • 中等。这才是这个评测需要设计的目标场景。我一进来看见什么4000Mbps,是完全不现实的指标。

优化当然是好事。假如性能优化了十倍二十倍,但优化的只是整个系统里占据10%的部分,那整个系统也就提升了10%。这就是这类microbenchmark常见脱离实际的问题所在。

据我所知CN2-GIA-E虽然标称2.5Gbps,但这这是网口指标,实际性能远低于标称,高峰期实测甚至低到10Mbps,然而这些瓶颈都不在本地可控范围内,也许是太多人开始使用KCP这类环境污染协议。我很奇怪,以CN2-GIA-E线路高昂费用,然后接上一个廉价低算力的软路由,造成软路由因廉价成为瓶颈,如果用户在这里有经济理性的话,这应该是不会发生的事情。

那么所谓用户实际情况有三种情况:

  • 有钱。那么高带宽,高算力,用什么软件无所谓。
  • 没钱。那么低带宽,低算力,即使用低效软件,算力还用不完。
  • 中等。这才是这个评测需要设计的目标场景。我一进来看见什么4000Mbps,是完全不现实的指标。

你用不到不等于别人用不到.
还是那句话,不要以自己臆测所有人,不要我即世界.
"我一进来看见什么4000Mbps,是完全不现实的指标"--你完全不懂测试的意义,一直混淆概念和目的.
测试是为了验证相同环境下各种不同软件/协议组合的相对性能,不是让你看什么绝对数值.

优化当然是好事。假如性能优化了十倍二十倍,但优化的只是整个系统里占据10%的部分

任何优化都不一定所有人都能享受到,觉得优化能服务到的用户不是全部就不做了吗?
所以 又不是不能用.jpg 了是吧,你的逻辑太混乱了.
不会因此就不去优化,而是尽量优化,各个角度的优化以及增加功能,是一个逐渐完善的过程.

#4 (comment)

行了行了,已经知道你不懂什么叫性能测试了,李说是,辣就是,你就当我们这群人自娱自乐行了吧😅

@badO1a5A90 下次把文档里类似以下内容的字体放大点然后加粗,有必要的话写三遍,以免某些眼瞎的人来指责说误导路人

  • 关于测试数据的意义
    • 各种组合配置的速率测试是性能对比测试, 不是吞吐量上限测试.
    • 测试可以体现在不同使用模式下,或不同程序版本下性能有差异.
    • 测试代表测试环境下的差异,并不表示绝对差异,也不是每个人使用后的实际性能提升.
    • 通常情况下硬件性能越低,XTLS对性能影响越大,尤其是没有AES指令的硬件设备上,会有更多倍数相差.

image

我也不想再回复了.

身为开发者,有意义的争论应该是
如何更好的去完善测试-->完善软件-->提供用户更好的体验.

而不是在这里扯淡有没有意义/有没有人能用到这优化(事实上至少硬路由/手机用户群体都享受的到)/多少人用到才有意义.

他说不具有实际意义,那就是不具有实际意义,为什么你们知道吗,因为他这个位置很尴尬,他说的话就像是一位癌症晚期患者说的话。
他都已经这样了,你为什么不顺从他,你总得给人留一段美好的回忆吧,最后的时光里。
因为他这个位置很尴尬,在往上一点,哎,开发了一个代理类的项目,可能有丶实力,还能操作一下,在往下,连性能测试的概念都搞不懂。
人家就纯属过来装装逼的,自己也知道自己垃圾,上不去又下不来,他觉得搞测试的人不配反驳自己,
但是呢他想上去,他又上不去,想操作又操作不起来,卡在这个位置,掉下去了又不值得。
他说你们脱离实际的问题所在,为什么呢?因为他看不懂实际的问题所在。
"只要你性能测试分数比我高,那你说的所有话都是脱离实际的问题所在,我不管你说的有没有道理。"
但是,他的想法还是对的,为什么呢?因为他癌症晚期,对不起哈,可能是我膨胀了。

咋那个项目的赞都挺多的,开发者一到这就拉了胯呢

楼上在干嘛?????

他说不具有实际意义,那就是不具有实际意义,为什么你们知道吗,因为他这个位置很尴尬,他说的话就像是一位癌症晚期患者说的话。
他都已经这样了,你为什么不顺从他,你总得给人留一段美好的回忆吧,最后的时光里。
因为他这个位置很尴尬,在往上一点,哎,开发了一个代理类的项目,可能有丶实力,还能操作一下,在往下,连性能测试的概念都搞不懂。
人家就纯属过来装装逼的,自己也知道自己垃圾,上不去又下不来,他觉得搞测试的人不配反驳自己,
但是呢他想上去,他又上不去,想操作又操作不起来,卡在这个位置,掉下去了又不值得。
他说你们脱离实际的问题所在,为什么呢?因为他看不懂实际的问题所在。
"只要你性能测试分数比我高,那你说的所有话都是脱离实际的问题所在,我不管你说的有没有道理。"
但是,他的想法还是对的,为什么呢?因为他癌症晚期,对不起哈,可能是我膨胀了。

咋那个项目的赞都挺多的,开发者一到这就拉了胯呢

请大家友善讨论,勿搞人身攻击.

也罢,为了避免无谓的骂战,此贴终结.

他说不具有实际意义,那就是不具有实际意义,为什么你们知道吗,因为他这个位置很尴尬,他说的话就像是一位癌症晚期患者说的话。
他都已经这样了,你为什么不顺从他,你总得给人留一段美好的回忆吧,最后的时光里。
因为他这个位置很尴尬,在往上一点,哎,开发了一个代理类的项目,可能有丶实力,还能操作一下,在往下,连性能测试的概念都搞不懂。
人家就纯属过来装装逼的,自己也知道自己垃圾,上不去又下不来,他觉得搞测试的人不配反驳自己,
但是呢他想上去,他又上不去,想操作又操作不起来,卡在这个位置,掉下去了又不值得。
他说你们脱离实际的问题所在,为什么呢?因为他看不懂实际的问题所在。
"只要你性能测试分数比我高,那你说的所有话都是脱离实际的问题所在,我不管你说的有没有道理。"
但是,他的想法还是对的,为什么呢?因为他癌症晚期,对不起哈,可能是我膨胀了。

咋那个项目的赞都挺多的,开发者一到这就拉了胯呢

人身攻击,没必要吧?