如何测试web服务器的网速

如何测试web服务器的网速,第1张

1用ping看看网络通信情况,一直ping下去

然后在场景中运行脚本。一般把服务器资源打开。一边压力测试一般查看服务器资源和网络情况。

如果脚本回放成功。那应该脚本是正确的。然后看大量的用户压力时候服务器资源利用率情况。是不是服务器压力过大导致页面响应时间或者中间件死掉。然后在看看运行这段时间网络是否有不稳定的情况。

cpu使用率反映了当前应用的运行情况,有时候CPU使用率很低、甚至为零。怎么办我为大家收集整理了cpu使用率低的解决方法,供大家学习借鉴参考,希望对你有帮助!

CPU使用率低一方面反映了当前应用对于cpu运算的需求较弱,另一方面对一些高需求的应用来说,CPU使用率低则表明你的配置实在是高、高、高啊。

cpu使用率低的解决方法

要简单地通过系统任务管理器查看CPU使用率,可以通过三个快捷方法打开任务管理器;

第一种适合鼠标党,任务栏鼠标右键选择”启动任务管理器“即可;

第二种适合键盘党,按照如图所示组合快捷键打开任务管理器,图一为直呼任务管理器,图二出现功能菜单,选择启动任务管理器即可;

切换任务栏至”性能“以查看CPU的使用率,图一为双核心四线程i5的待机CPU使用率,图二为六核心十二线程i7CPU;

使用中经常出现一些程序无响应且无法自行恢复的情况,则可通过任务管理器找到未响应程序,结束其进程快速解决问题。

END

注意事项

CPU使用率低,系统空闲情况下,可配合电源管理等软件以达到节能的目的。

KVM利用率最低。在虚拟化底层技术上,kvm是基于硬件辅助虚拟化实现。kvm作为一项虚拟化技术已经集成到linux内核之中,可以认为linux内核本身就是一个hypervisor,这也是kvm名字的含义,因此kvm技术只能在linux服务器上使用。kvm技术常常搭配gemu一起使用,成为kvm-gemu架构。x86架构CPU的硬件辅助虚拟化技术诞生之前,gemu就已经采用全套软件模拟的办法来实现虚拟化,这种方案下的执行能力非常低下。

常见 GPU 利用率低原因分析
1、数据加载相关
1)存储和计算跨城了,跨城加载数据太慢导致 GPU 利用率低
说明:例如数据存储在“深圳 ceph”,但是 GPU 计算集群在“重庆”,那就涉及跨城使用了,影响很大。
优化:要么迁移数据,要么更换计算资源,确保存储及计算是同城的。
2)存储介质性能太差
说明:不同存储介质读写性能比较:本机 SSD > ceph > cfs-15 > hdfs > mdfs
优化:将数据先同步到本机 SSD,然后读本机 SSD 进行训练。本机 SSD 盘为“/dockerdata”,可先将其他介质下的数据同步到此盘下进行测试,排除存储介质的影响。
3)小文件太多,导致文件 io 耗时太长
说明:多个小文件不是连续的存储,读取会浪费很多时间在寻道上
优化:将数据打包成一个大的文件,比如将许多文件转成一个 hdf5/pth/lmdb/TFRecord 等大文件
其他格式转换方式请自行谷歌
4)未启用多进程并行读取数据
说明:未设置 num_workers 等参数或者设置的不合理,导致 cpu 性能没有跑起来,从而成为瓶颈,卡住 GPU
优化:设置 torchutilsdataDataLoader 方法的 num_workers 参数、tfdataTFRecordDataset 方法的 num_parallel_reads 参数或者 tfdataDatasetmap 的 num_parallel_calls 参数。
5)未启用提前加载机制来实现 CPU 和 GPU 的并行
说明:未设置 prefetch_factor 等参数或者设置的不合理,导致 CPU 与 GPU 在时间上串行,CPU 运行时 GPU 利用率直接掉 0
优化:设置 torchutilsdataDataLoader 方法的 prefetch_factor 参数 或者 tfdataDatasetprefetch()方法。prefetch_factor 表示每个 worker 提前加载的 sample 数量 (使用该参数需升级到 pytorch17 及以上),Datasetprefetch()方法的参数 buffer_size 一般设置为:tfdataexperimentalAUTOTUNE,从而由 TensorFlow 自动选择合适的数值。
6)未设置共享内存 pin_memory
说明:未设置 torchutilsdataDataLoader 方法的 pin_memory 或者设置成 False,则数据需从 CPU 传入到缓存 RAM 里面,再给传输到 GPU 上
优化:如果内存比较富裕,可以设置 pin_memory=True,直接将数据映射到 GPU 的相关内存块上,省掉一点数据传输时间
2、数据预处理相关
1)数据预处理逻辑太复杂
说明:数据预处理部分超过一个 for 循环的,都不应该和 GPU 训练部分放到一起
优化:a、设置 tfdataDatasetmap 的 num_parallel_calls 参数,提高并行度,一般设置为 tfdataexperimentalAUTOTUNE,可让 TensorFlow 自动选择合适的数值。
b、将部分数据预处理步骤挪出训练任务,例如对的归一化等 *** 作,提前开启一个 spark 分布式任务或者 cpu 任务处理好,再进行训练。
c、提前将预处理部分需要用到的配置文件等信息加载到内存中,不要每次计算的时候再去读取。
d、关于查询 *** 作,多使用 dict 加速查询 *** 作;减少 for、while 循环,降低预处理复杂度。
2)利用 GPU 进行数据预处理 -- Nvidia DALI
说明:Nvidia DALI 是一个专门用于加速数据预处理过程的库,既支持 GPU 又支持 CPU
优化:采用 DALI,将基于 CPU 的数据预处理流程改造成用 GPU 来计算
3、模型保存相关
1)模型保存太频繁
说明:模型保存为 CPU *** 作,太频繁容易导致 GPU 等待
优化:减少保存模型(checkpoint)的频率
4、指标相关
1)loss 计算太复杂
说明:含有 for 循环的复杂 loss 计算,导致 CPU 计算时间太长从而阻塞 GPU
优化:该用低复杂度的 loss 或者使用多进程或多线程进行加速
2)指标上报太频繁
说明:指标上报 *** 作太频繁,CPU 和 GPU 频繁切换导致 GPU 利用率低
优化:改成抽样上报,例如每 100 个 step 上报一次
5、日志相关
1)日志打印太频繁
说明:日志打印 *** 作太频繁,CPU 和 GPU 频繁切换导致 GPU 利用率低
优化:改成抽样打印,例如每 100 个 step 打印一次
资料领取直通车:大厂面试题锦集+视频教程
Linux服务器学习网站:C/C++Linux服务器开发/后台架构师
四、常见数据加载方法说明
1、pytorch 的 torchutilsdataDataLoader
DataLoader(dataset, batch_size=1, shuffle=False, sampler=None,
batch_sampler=None, num_workers=0, collate_fn=None,
pin_memory=False, drop_last=False, timeout=0,
worker_init_fn=None, , prefetch_factor=2,
persistent_workers=False)
登录后复制
从参数定义中,我们可以看到 DataLoader 主要支持以下几个功能:
支持加载 map-style 和 iterable-style 的 dataset,主要涉及到的参数是 dataset
自定义数据加载顺序,主要涉及到的参数有 shuffle, sampler, batch_sampler, collate_fn
自动把数据整理成 batch 序列,主要涉及到的参数有 batch_size, batch_sampler, collate_fn, drop_last
单进程和多进程的数据加载,主要涉及到的参数有 num_workers, worker_init_fn
自动进行锁页内存读取 (memory pinning),主要涉及到的参数 pin_memory
支持数据预加载,主要涉及的参数 prefetch_factor
2、tensorflow 的 tfdataDataset
ds_train = tfdataDatasetfrom_tensor_slices((x,y))\
shuffle(5000)\
batch(batchs)\
map(preprocess,num_parallel_calls=tfdataexperimentalAUTOTUNE)\
prefetch(tfdataexperimentalAUTOTUNE)
登录后复制
Datasetprefetch(): 可以让数据集对象 Dataset 在 å 训练时预取出若干个元素,使得在 GPU 训练的同时 CPU 可以准备数据,提升训练流程的效率
Datasetmap(f): 转换函数 f 映射到数据集每一个元素; 可以利用多 CPU 资源,充分利用多核心的优势对数据进行并行化变换, num_parallel_calls 设置为 tfdataexperimentalAUTOTUNE 以让 TensorFlow 自动选择合适的数值,数据转换过程多进程执行,设置 num_parallel_calls 参数能发挥 cpu 多核心的优势
Datasetshuffle(buffer_size): 将数据集打乱,取出前 buffer_size 个元素放入,并从缓冲区中随机采样,采样后的数据用后续数据替换
Datasetbatch(batch_size):将数据集分成批次,即对每 batch_size 个元素,使用 tfstack() 在第 0 维合并,成为一个元素
五、分布式任务常见的 GPU 利用率低问题
分布式任务相比单机任务多了一个机器间通信环节。如果在单机上面运行的好好的,扩展到多机后出现 GPU 利用率低,运行速度慢等问题,大概率是机器间通信时间太长导致的。请排查以下几点:
1、机器节点是否处在同一 modules?
答:机器节点处于不同 modules 时,多机间通信时间会长很多,deepspeed 组件已从平台层面增加调度到同一 modules 的策略,用户不需要 *** 作;其他组件需联系我们开启。
2、多机时是否启用 GDRDMA?
答:能否启用 GDRDMA 和 NCCL 版本有关,经测试,使用 PyTorch17(自带 NCCL278)时,启动 GDRDMA 失败,和 Nvidia 的人沟通后确定是 NCCL 高版本的 bug,暂时使用的运行注入的方式来修复;使用 PyTorch16(自带 NCCL248)时,能够启用 GDRDMA。经测试,“NCCL248 + 启用 GDRDMA ” 比 “NCCL278 + 未启用 GDRDMA”提升 4%。通过设置 export NCCL_DEBUG=INFO,查看日志中是否出现[receive] via NET/IB/0/GDRDMA 和 [send] via NET/IB/0/GDRDMA,出现则说明启用 GDRDMA 成功,否则失败。
3、pytorch 数据并行是否采用 DistributedDataParallel ?
答:PyTorch 里的数据并行训练,涉及 nnDataParallel (DP) 和 nnparallelDistributedDataParallel (DDP) ,我们推荐使用 nnparallelDistributedDataParallel (DDP)。

linux查看cpu使用率的方法:首先确保linux环境能够上网,并且配置好源;然后执行命令“apt-get install dstat”来进行软件的安装;最后执行命令“dstat -c”显示系统整体的cpu情况即可。
在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。而监控CPU的性能一般包括以下3点:运行队列、CPU使用率和上下文切换。那么如何查看cpu使用率?下面本篇文章就来给大家具体介绍一下,希望对大家有所帮助。视频教程推荐:linux教程
1、使用top命令
这个命令很常用,在终端中直接执行top命令,即可在第三行看到cpu的使用率。
注:969id,表示空闲CPU,即CPU未使用率,100%-969%=31%,即系统的cpu使用率为31%。
如果有多个CPU,希望查询每个CPU的使用率,可以在top命令的界面,按数字键1,即可看到其它CPU的使用率,如下图:
2、使用vmstat命令
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存 交换情况,IO读写情况。
相比top命令,通过vmstat可以看到整个机器的 CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率。
句式:
1
vmstat -w-w
一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数。例:
说明:2表示每个两秒采集一次服务器状态,1表示只采集一次。
3、使用dstat命令
dstat命令是一个用来替换vmstat、iostat、netstat、nfsstat和ifstat这些命令的工具,是一个全能系统信息统计工具。
如果没有dstat命令,则需要进行下载安装。
首先我们需要确保linux环境能够上网,并且配置好源。在root账户登录下。执行命令apt-get install dstat 。进行软件的安装。
然后执行命令dstat -c。显示系统整体的cpu情况。
显示各个信息为CPU用户占用,系统占用,空闲,等待,中断,软件中断等信息。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13272143.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-05
下一篇 2023-07-05

发表评论

登录后才能评论

评论列表(0条)

保存