K8S Pod之间的网速测试
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8S Pod之间的网速测试相关的知识,希望对你有一定的参考价值。
参考技术A 说到两个节点间的网速测试,现在最通用的工具是iperf。iperf有两种运行模式,一种是server模式,一种是client模式。当我们要测试两个节点的网速的时候,就需要在其中一台机器上开启server模式,另一台机器则开启client模式。开启server模式很简单,一条简单的命令就可以了:开启iperf client的模式也比较简单
这里就有个问题,对于两台实体机,那么,serverip很容易就可以获得,但是如果两个节点都是K8S中的pod呢?serverip不光不容易获得,很有可能会在server pod发生故障之后变化,这样,iperf工具就没有办法正常工作了。
解决方法:
如果想要server pod固定一个访问ip给 client pod, K8S给我们提供了一个很方便的功能,就是service这个概念,如果把server pod绑定在某个service上,那这些pod对K8S集群内就可以暴露service ip,而这个抽象出来的ip地址是不会变化的,所以这样就可以给client pod 提供固定的ip地址去连接了。
server.yaml:
执行完上面的yaml文件后,可以获取到svc的信息:
我们可以看到,该service的ip地址,以及暴露的端口5201(iperf3 服务端默认暴露的端口)。
也就是说,client pod只需要将serverip 替换为10.97.191.10(cluster ip)就可以了。那么问题就转换为如何让client pod获取到server pod的service cluster ip地址。
这个地方我查阅了很多资料,最后发现,其实当service的yaml文件执行成功之后,在这之后启动的pod中会新增对应的环境变量:
客户端成功连接上了服务端!搞定!
假设检验和GPGPU
我是GPGPU和编程的新手。我很想知道是否可以使用CUDA在GPGPU(SIMD)中实现统计假设检验,如单样本Kolmogorov-Smirnov检验(K-S检验)和Levene检验?如果是这样,会有什么限制?
答案
我刚刚阅读了有关这些测试的Web定义,但是,如果我理解正确,它们可以通过SIMD表达的并行性(特别是由CUDA实现)来适当加速。
在K-S测试中,必须计算N个样本的函数和估计之间的差异,然后取最大差异。换句话说,必须对N个不同的值执行相同的操作,这恰好是SIMD(单指令,多数据)。
在Levene的测试中,在N个不同的值上再次存在相同的差异,平方和乘法。
SIMD可以做的是对N个值集的一种FOR语句,前提是迭代彼此独立。因此,例如在CUDA中,编译器可以将迭代分配给图形设备的处理元件,从而并行执行,在单次迭代时对所有数据运行FOR循环。
CUDA工具包提供了一个特定的C / C ++编译器(NVCC),其中特殊指令被分派到GPGPU而不是CPU,因此被分发到其并行处理元件。
以上是关于K8S Pod之间的网速测试的主要内容,如果未能解决你的问题,请参考以下文章