1.������� Դ��
2.中科大测速网 - 简单纯粹、宽带宽免费开源的测试测试在线测速工具,使用免费无广告,源码源码代码开源
3.网络性能测试工具 iperf 的宽带宽使用
4.全球网速测量(上传和下载)数据(测量实验室(M-Lab))
5.Linux网络性能测试工具——Iperf
6.内存延迟与带宽分析
������� Դ��
您可以在VPS上搭建speedtest测速网站以测试VPS的带宽,或在内网中搭建speedtest测试内网带宽。测试测试本文将介绍如何在Linux、源码源码月子会所门户源码Windows和群晖上搭建speedtest服务器。宽带宽
高性价比和便宜的测试测试VPS/云服务器推荐: blog.zeruns.tech/archiv...
什么是speedtest
speedtest主要使用HTML和JavaScript,通过客户端浏览器上传和下载垃圾数据来测试HTTP传输速度,源码源码与常用的宽带宽speedtest.net相似。speedtest可以使用任何操作系统上的测试测试任何Web服务器作为服务端,理论上支持Windows/MacOS/Linux/Unix等系统,源码源码IIS/Nginx/Apache/lig/?宽带宽...
安装好后会显示面板地址和账号密码,复制到浏览器打开。测试测试
然后按照下图选择安装套件
接着添加网站,源码源码域名那里填自己的域名,如果没有域名可以直接填IP
接着下载speedtest源码然后上传到服务器: blogs.com/yingsong/p/... 进行查阅。常用的参数包括但不限于这些。
iperf3 输出的结果可分为两类。若使用 --get-server-output 参数,将能看到服务端输出的报告。接下来,我们将探讨输出报告包含的内容。
总结使用经验时,应关注工具的安装步骤、特定参数的使用方法以及输出结果的解读。正确理解和运用 iperf3,可以有效提升网络性能测试的效率和准确性。
全球网速测量(上传和下载)数据(测量实验室(M-Lab))
全球最大的开源互联网测量机构——测量实验室(M-Lab),通过其网络诊断工具(NDT)数据集,为网络研究人员和工程师提供了宝贵的研究资源。这些数据集由大量用户主动运行NDT工具产生的测试结果组成,涵盖下载和上传带宽、延迟和数据包丢失等互联网连接性能指标,真实反映了用户的实际体验,而非传统的mui-ellipsis源码服务提供商监控。
年6月1日,从一天内,个样本中提取的NDT数据样本,揭示了互联网性能的实时变化。M-Lab的独特之处在于其用户主动性的监测方式,网络问题的增多往往导致测试频率提升,为分析互联网健康趋势、识别问题瓶颈和理解用户网络问题提供了丰富的数据来源。
M-Lab作为开放源码项目,由民间组织、教育机构和私营企业共同支持,其使命是为全球互联网性能提供一个公开且可验证的测量平台,通过收集和分享海量数据,帮助所有人理解互联网的性能,并推动相关研究。透明度和科学合作是M-Lab的核心原则,它欢迎所有具备技能的人审查和改进其工具和方法。
对于科研人员,M-Lab提供广泛的服务器和资源,支持精确的测量研究。所有数据对公众开放,无论是政策制定者、消费者还是公民社会,都能借此了解互联网的历史状态和质量。M-Lab的诞生源于年对互联网性能研究挑战的讨论,年由新美国开放技术研究所等机构共同创立。
通过访问M-Lab的测试数据,如code.earthengine.google.com...,并遵循No Rights Reserved Creative Commons Zero Waiver许可,你可以进一步探索和利用这些数据。截至年7月2日,M-Lab继续为提升全球互联网的理解和优化贡献力量。
Linux网络性能测试工具——Iperf
Iperf是一款用于测试网络性能的工具,它能够评估TCP和UDP带宽,具有多种参数和UDP特性,能够提供带宽、场地借用网站源码延迟抖动和数据包丢失的数据报告。Iperf3在NLNR/DAST的原始版本基础上重新设计,旨在提供更小、更简单的代码库,并增加Iperf不具备的新功能,如nuttcp和netperf。
Iperf适用于Linux、Windows、Android、Mac等多个操作系统。该工具的源代码可以从官方网站或GitHub进行下载。在Ubuntu .下,可以首先下载压缩包iperf-3.1.3.tar.gz,解压后进入目录,然后进入build/bin安装目录,查看并运行iperf3可执行文件。运行时,输入“iperf3 -h”可查看命令列表。
以下为具体命令的解释:
表1:服务器端专用选项的含义
表2:客户端专用选项的含义
表3:客户端与服务器端公用选项的含义
使用Iperf进行TCP吞吐量测试时,首先在服务器端(如IP地址为...的服务器)运行“iperf3 -s”以开启服务器模式。默认情况下,iperf3将在服务端打开一个监听端口。此时,另一台服务器作为客户端执行iperf功能。默认运行时间为秒,每秒输出一次传输状态,显示每秒传输的数据量,约为MB。网络卡的带宽速率维持在Mbits/sec左右,与千兆网卡的性能相符。输出包括总的数据发送和接收量以及带宽速率的平均值,通过这些值可以判断网络带宽是否正常、网络传输状态是否稳定。
进行UDP丢包和延迟测试时,使用以下参数:
- 参数:-u 使用UDP
- 参数:-b 指定UDP模式使用的家居定制网站源码带宽
- 参数:-f 指定带宽输出单位
- 参数:-i 指定每次报告之间的时间间隔,单位为秒。Jitter代表抖动时间或传输延迟,Lost/Total列表示丢失的数据报和总的数据报数量,Datagrams”列显示的是总共传输数据报的数量。服务器端和客户端输出分别表示了测试结果。
以下为推荐网站资源:
[1] Iperf官网
[2] Iperf-Github
[3] Iperf3详细介绍
[4] Iperf论坛
[5] 更详细的参数介绍
[6] Linux网络性能评估工具iperf、CHARIOT测试网络吞吐量
内存延迟与带宽分析
在现代计算机环境中,内存访问效率往往成为性能瓶颈。处理器访问内存的速度,即延迟,以及每秒可以传输的数据量,即带宽,是影响应用程序性能的关键因素。这两个因素在各种场景中都至关重要。本节将专注于评估内存子系统组件的峰值性能。
在x平台上,英特尔内存延迟检查器(MLC)是一个非常有用的工具,可以在Windows和Linux上免费使用。MLC可以通过不同的访问模式和负载来测量缓存和内存的延迟和带宽。在基于ARM的系统上,虽然没有类似的工具,但用户可以从源代码中下载并构建内存延迟和带宽基准测试,例如lmbench 2、bandwidth 4和Stream等。
本节将讨论空闲读取延迟和读取带宽这两个子集指标。空闲读取延迟是指系统处于空闲状态时,从内存系统组件获取数据所需的最小时间。当系统被其他内存消耗大的应用程序加载时,此延迟会增加。MLC通过进行相关加载(也称为指针追踪)来测量空闲延迟。一个测量线程分配一个非常大的缓冲区,并对其进行初始化,以便缓冲区内的每个(字节)缓存行包含指向该缓冲区内另一个非相邻缓存行的指针。通过适当调整缓冲区的大小,我们可以确保几乎所有的网卡驱动 内核源码加载都命中某个级别的缓存或主存。
以下是一个测试系统的示例,包括英特尔Alderlake主机、Core i7-P CPU和GB DDR4 @ MT/s双通道内存。该处理器有4个性能P(实际上是两个物理核*2个超线程)超线程核心和8个E(高效)核心。每个P核心有KB的L1数据缓存和1.MB的L2缓存。每个E核心有KB的L1数据缓存,而四个E核心组成一个集群,可以访问共享的2MB L2缓存。系统中的所有核心都由MB的L3缓存支持。以下是示例mlc命令:
选项--idle_latency用于测量读取延迟。MLC具有--loaded_latency选项,用于在由其他线程生成的内存流量存在时测量延迟。选项-c0将测量线程固定在逻辑CPU 0上,该CPU位于P核心上。选项-L启用大页以限制我们的测量中的TLB效应。选项-bm告诉MLC使用MB缓冲区,在我们的系统上可以放在L3缓存中。
以下图表显示了L1、L2和L3缓存的读取延迟。左侧的第一个区域对应于L1d缓存,该缓存是每个物理核心私有的。我们可以观察到E核心的延迟为0.9ns,而P核稍高为1.1ns。此外,我们可以使用此图来确认缓存大小。请注意,当缓冲区大小超过KB时,E核心的延迟开始上升,但是在KB之前P核心的延迟保持不变。这证实了E核心的L1d缓存大小为KB,而P核心的L1d缓存大小为KB。
第二个区域显示L2缓存延迟,E核的延迟几乎是P核的两倍(5.9ns vs. 3.2ns)。对于P核,延迟在我们超过1.MB缓冲区大小后会增加,这是预期的。但我们期望E核的延迟保持不变,直到2MB,但在我们的测量中没有发生这种情况。
第三个区域从2MB到MB对应于L3缓存延迟,对于两种类型的内核都大约为ns。系统中所有内核共享的L3缓存的总大小为MB。有趣的是,我们从MB开始看到一些意想不到的动态变化,而不是MB。这很可能是因为一些访问错过了L3,需要去主内存。
第四个区域对应于内存延迟,图表上只显示了其开始部分。当我们越过MB的边界时,延迟会急剧上升,并在E核心的MB和P核心的MB处开始趋于稳定。使用更大的缓冲区大小为MB时,E核心的访问延迟为ns,P核心为ns。这测量了内存延迟,因为几乎没有加载会命中L3缓存。
使用类似的技术,我们可以测量内存层次结构的各个组件的带宽。为了测量带宽,MLC执行的加载请求不会被任何后续指令使用。这允许MLC生成可能的最大带宽。MLC在每个配置的逻辑处理器上生成一个软件线程。每个线程访问的地址是独立的,线程之间没有数据共享。与延迟实验一样,线程使用的缓冲区大小确定了MLC是在测量L1/L2/L3缓存带宽还是内存带宽。
这里的新选项是-k,它指定了用于测量的CPU编号列表。-Y选项告诉MLC使用AVX2加载,即每次加载字节。MLC使用不同的读写比例来测量带宽,但在下图中,我们只显示了全部读取带宽,因为它可以让我们对内存带宽的峰值有一个直观的了解。但其他比例也可能很重要。我们在使用Intel MLC测量的系统的组合延迟和带宽数字如图下所示。
核心可以从较低级别的缓存(如L1和L2)中获得比从共享的L3缓存或主内存中更高的带宽。共享缓存(如L3和E核心L2)相当好地扩展,可以同时为多个核心提供请求。例如,单个E核心L2的带宽为GB/s。使用来自同一集群的两个E核心,我测量了GB/s,三个E核心为GB/s,而所有四个E核心可以从共享L2中获得GB/s。对于L3缓存也是如此,单个P核心的带宽为GB/s,而单个E核心只有GB/s。但是当所有核心都被使用时,L3缓存可以维持GB/s的带宽。
我们用纳秒测量延迟,用GB/s测量带宽,因此它们还取决于核心运行的频率。在各种情况下,观察到的数字可能不同。例如,假设仅在系统上以最大睿频运行时,P核心的L1延迟为X,L1带宽为Y。当系统负载满时,我们可能观察到这些指标分别变为1.X和0.Y。为了减轻频率效应,与其使用纳秒,延迟和度量可以使用核心周期来表示,并归一化为一些样本频率,比如3Ghz。
了解计算机的主要特征是评估程序如何利用可用资源的基本方法。通过屋顶线性能模型了解系统的瓶颈在哪里,是CPU运算的瓶颈还是内存读取的瓶颈。如果经常在单个平台上分析性能,最好记住内存层次结构的各个组件的延迟和带宽,这有助于建立对测试系统的心理模型,将有助于进一步的性能分析。
测量网络吞吐量的工具:iperf
网络性能测试工具iperf3是一个实用的Client/Server架构程序,用于评估网络的最大带宽和质量,包括吞吐量、网络波动、丢包率及MTU大小等信息,对于网络性能调试和瓶颈查找非常有帮助。它支持多种平台,如Linux、MacOS、FreeBSD、Windows、Android、iOS和Docker等。
要开始使用iperf3,首先需要下载并安装。官方下载地址和GitHub源码地址供你选择。Windows用户需要准备特定的DLL文件,并将iperf.exe和cygwin1.dll文件放置在指定目录。推荐使用he.net - Network Tools这类网络测试软件进行安装,可通过官网获取安装包(提取码:y9rd)。
执行iperf3测试需在服务器和客户端上操作。基本命令格式如下:iperf3 -c 目标IP -i 测试间隔 -t 测试时长。例如,测试...的带宽,每秒输出一次结果,持续秒,命令为:iperf3 -c ... -i -t 。
在使用过程中,请注意查看iperf3的详细帮助文档以了解所有可用参数。最后,尽管文章没有明确提及,但请记得支持作者,你的认可将鼓励他们继续分享知识。
CUDA编程OneFlow Softmax 算子源码解读之WarpSoftmax
深度学习框架中的Softmax操作在模型中扮演关键角色,尤其在多分类任务中,其用于将logits映射成概率分布,或在Transformer结构中衡量query与key的相似度。Softmax的CUDA实现直接关系到模型训练效率。本文以OneFlow框架中的一种优化Softmax实现为例,即Warp级别的Softmax,特别适用于矩阵宽度不超过的场景。
Softmax操作的计算公式如下:
[公式]
为解决数值溢出问题,通常先减去向量的最大值。优化后的公式为:
[公式]
Softmax计算涉及五个关键步骤:reduceMax、broadcastSub、exp、reduceSum、broadcastDiv。本篇文章将深入探讨OneFlow源码中的实现技巧。
OneFlow采用分段函数优化SoftmaxKernel,针对不同数量的列选择不同实现策略,以适应各种场景。为实现优化,OneFlow提供三种Softmax实现方式,以期在所有情况下达到较高的有效带宽。
对于WarpSoftmax分支,源码中函数调用关系清晰,实现细节分为四部分:数据Pack、调用链、DispatchSoftmaxWarpImpl、DispatchSoftmaxWarpImplCols、DispatchSoftmaxWarpImplPadding、LaunchSoftmaxWarpImpl。各部分分别专注于提升访问带宽、确定函数参数、实现核心计算逻辑。
在WarpSoftmax的核函数SoftmaxWarpImpl中,重点实现以下步骤:核函数启动参数确定、线程网格形状定义、数据加载到寄存器、计算最大值、计算指数和、规约操作、通信优化等。实现过程中,OneFlow通过优化数据访问模式、利用寄存器存储中间结果、并行规约操作,以及束内通信,提升了计算效率。
总结WarpSoftmax源码中的关键点,本文详细解读了其优化策略与实现细节,旨在提高模型训练速度。通过深入分析OneFlow框架中的Softmax实现,读者可以更全面地理解深度学习框架在CUDA环境下进行优化的策略。