dpdk预备学习环境准备之多队列网卡认识及测试

简介: dpdk预备学习环境准备之多队列网卡认识及测试

dpdk学习预备之多队列网卡环境搭建

dpdk学习预备之环境搭建: 这里使用VMware+ubuntu虚拟机环境

这里涉及到的小知识点:

1:配置多个网卡,并使环境上多个网卡都能生效。

2:修改虚拟机网卡名称为传统的eth0

3:多队列网卡的测试

dpdk测试环境是怎样的?

个人理解:网卡一般接收到数据后会给内核相关内核协议栈,这里dpdk会代替这里的协议栈,接管网卡上的数据,实现定制性开发,对网络性能进行优化与提升。

所以:

1:dpdk要接管一个网卡上的数据,所以我们测试的时候需要专门提供一个网卡(可以是虚拟的)进行dpdk的测试。
2:dpdk环境要
支持多队列网卡
,如何配置环境多队列网卡?

3:dpdk源码编译,配置,测试等(这个后期实现)

配置环境支持多个网卡

1:在vmware环境中对应虚拟机的虚拟机设置中,增加网络适配器(一个或者多个),对应网卡的个数

2:启动虚拟机,查看网卡信息

当前生效的只有一个网卡,是桥接模式的第一个网卡:

ubuntu@ubuntu:~$ ifconfig
ens33     Link encap:Ethernet  HWaddr 00:0c:29:b2:2f:c4  
          inet addr:192.168.50.56  Bcast:192.168.50.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feb2:2fc4/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1636 errors:0 dropped:0 overruns:0 frame:0
          TX packets:122 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:120640 (120.6 KB)  TX bytes:15158 (15.1 KB)
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:160 errors:0 dropped:0 overruns:0 frame:0
          TX packets:160 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:11840 (11.8 KB)  TX bytes:11840 (11.8 KB)

但是实际上我们已经配置了三个网卡,并且都在环境中:

ubuntu@ubuntu:~$ ifconfig -a
ens33     Link encap:Ethernet  HWaddr 00:0c:29:b2:2f:c4  
          inet addr:192.168.50.56  Bcast:192.168.50.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feb2:2fc4/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2240 errors:0 dropped:0 overruns:0 frame:0
          TX packets:167 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:164047 (164.0 KB)  TX bytes:20750 (20.7 KB)
ens38     Link encap:Ethernet  HWaddr 00:0c:29:b2:2f:ce  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
ens39     Link encap:Ethernet  HWaddr 00:0c:29:b2:2f:d8  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:160 errors:0 dropped:0 overruns:0 frame:0
          TX packets:160 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:11840 (11.8 KB)  TX bytes:11840 (11.8 KB)
3:配置使多个网卡都能生效

修改 /etc/network/interfaces,参考默认的一个网卡,增加其他没有增加的网卡

ubuntu@ubuntu:~$ sudo vim /etc/network/interfaces
ubuntu@ubuntu:~$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto ens33
iface ens33 inet dhcp
#这里以下:是我对应环境新增的
auto ens38
iface ens38 inet dhcp
auto ens39
iface ens39 inet dhcp
ubuntu@ubuntu:~$ service networking restart    #重启了网络服务
4:查看网卡信息并进行测试

重启网络服务,并查看当前生效网卡的情况: 发现多个网卡,都已经生效了

ubuntu@ubuntu:~$ service networking restart    #不同的linux环境重启网络命令是不同的
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to restart 'networking.service'.
Authenticating as: ubuntu,,, (ubuntu)
Password: 
==== AUTHENTICATION COMPLETE ===
ubuntu@ubuntu:~$ ifconfig
ens33     Link encap:Ethernet  HWaddr 00:0c:29:b2:2f:c4  
          inet addr:192.168.50.56  Bcast:192.168.50.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feb2:2fc4/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7546 errors:0 dropped:0 overruns:0 frame:0
          TX packets:524 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:563423 (563.4 KB)  TX bytes:86418 (86.4 KB)
ens38     Link encap:Ethernet  HWaddr 00:0c:29:b2:2f:ce  
          inet addr:192.168.11.155  Bcast:192.168.11.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feb2:2fce/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:14 errors:0 dropped:0 overruns:0 frame:0
          TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1976 (1.9 KB)  TX bytes:1566 (1.5 KB)
ens39     Link encap:Ethernet  HWaddr 00:0c:29:b2:2f:d8  
          inet addr:192.168.11.156  Bcast:192.168.11.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feb2:2fd8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:986 (986.0 B)  TX bytes:1262 (1.2 KB)
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:160 errors:0 dropped:0 overruns:0 frame:0
          TX packets:160 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:11840 (11.8 KB)  TX bytes:11840 (11.8 KB)

网卡名称修改为eth0 …,可参考上一步改为多网卡

描述:发现网卡的命名是ens33, 不是eth0

(网络上有说eth0是物理网卡命名,ens33是虚拟网卡命名,代表不同的网卡特性,这个是可以配置修改的)

1:修改命名规则,改为eth0

修改配置文件/etc/default/grub,在配置文件中”GRUB_CMDLINE_LINUX“字段对应值新增:net.ifnames=0 biosdevname=0

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"    #这里只新增net.ifnames=0 biosdevname=0 字段,如果有其他,保留就好
2:执行命令:update-grub
ubuntu@ubuntu:~$ sudo update-grub
[sudo] password for ubuntu: 
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.4.0-206-generic
Found initrd image: /boot/initrd.img-4.4.0-206-generic
Found linux image: /boot/vmlinuz-4.4.0-186-generic
Found initrd image: /boot/initrd.img-4.4.0-186-generic
done
3:查看是否生效,用ifconfig /ifconfig -a

注:如果没有生效,观察配置文件**/etc/network/interfaces**中相关配置,修改完对应的网卡后,重启网络服务,并查看

ubuntu@ubuntu:~$ ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0c:29:5c:4d:0c  
          inet addr:192.168.11.138  Bcast:192.168.11.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe5c:4d0c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:176 errors:0 dropped:0 overruns:0 frame:0
          TX packets:180 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:16619 (16.6 KB)  TX bytes:26760 (26.7 KB)
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:576 errors:0 dropped:0 overruns:0 frame:0
          TX packets:576 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:44256 (44.2 KB)  TX bytes:44256 (44.2 KB)
4:eth配置多网卡,可以参考上文
5:不同的ubuntu环境可能有差异。(ubuntu20 修改网卡配置文件为/etc/netplan/00-installer-config.yaml)
1: 修改grub配置文件/etc/default/grub,在GRUB_CMDLINE_LINUX对应字段中增加: net.ifnames=0 biosdevname=0
2: 修改使环境识别eth,一般修改的是文件/etc/network/interfaces,参考其中默认的,在对应的网卡中,修改或者增加其他网卡配置。
    ubuntu20环境中修改/etc/netplan/00-installer-config.yaml,用命令 sed -i "s/ens32/eth0/" /etc/netplan/00-installer-config.yaml 注意,其中的ens32为00-installer-config.yaml文件中对应的网卡字符,可能是其他。
3: 执行sudo update-grub
4: 重启环境进行查看

配置网卡支持多队列

简单理解:就是网卡的DMA队列有多个,有自己对队列的分配机制。

1:修改虚拟机配置,使支持多队列

主要修改的是vmware工具上我们安装的虚拟机的配置文件:

1:修改虚拟机配置,处理器个数增加一点(方便观察),这里我设为4

2:再对应虚拟机目录中的“Ubuntu 64 位.vmx”(这是我的配置文件),用编辑器打开,修改要配置多队列网卡的网卡配置,这里修改的是

注意:最好在关闭虚拟机的状态下修改

#在Ubuntu 64 位.vmx 中打开,修改ethernet1配置,把e1000 改为 vmxnet3
#如果没有wakeOnPcktRcv 增加就好
#这里我的ethernet1 对应的是环境上的eth0
ethernet1.virtualDev = "vmxnet3"
ethernet1.wakeOnPcktRcv = "TRUE"
2:查看是否支持多队列网卡

1:使用cat /proc/interrupts 命令可以查看多队列网卡的效果。

ubuntu@ubuntu:~$ cat /proc/interrupts |grep eth0
  57:         13          0          4          0   PCI-MSI 1572864-edge      eth0-rxtx-0
  58:          2          0          0          0   PCI-MSI 1572865-edge      eth0-rxtx-1
  59:          6          0          0          0   PCI-MSI 1572866-edge      eth0-rxtx-2
  60:          0          0          0          0   PCI-MSI 1572867-edge      eth0-rxtx-3
  61:          0          0          0          0   PCI-MSI 1572868-edge      eth0-event-4

可以看到,配置了4个处理器,这里的队列个数为4个。

2:使用cat /proc/cpuinfo,可以查看支持的cpu个数(processor+1)

#可以自己查看细节
ubuntu@ubuntu:~$ cat /proc/cpuinfo |grep processor
processor : 0
processor : 1
processor : 2
processor : 3
3:修改ubuntu启动参数,支持大内存页,隔离cpu

isolcpus 配置的是隔离cpu,指定使用的cpu ==》可能有误,待理解,可以测试一下

在/etc/default/grub文件中修改GRUB_CMDLINE_LINUX对应值,

修改后执行 sudo update-grub

重启环境进行测试,如果启动不成功,可能是内存不够,内存设大一点。

#物理机:
  default_hugepages=1G hugepagesz=1G hugepages=20 isolcpus=0-7
#虚拟机:
  default_hugepages=1G hugepagesz=2M hugepages=1024 isolcpus=0-2
#具体大小视情况而定。重启虚拟机,使得hugepage和isocpus配置生效。

测试多队列网卡(虚拟机上的一个网卡)

1:概述

这里的测试:用wrk和nginx配合进行测试。

0:在多队列网卡的基础上,设置大内存页以及隔离cpu

1:配置nginx中进程数,以及配置cpu亲和性

2:查看多队列网卡,获取不同队列对应的中断号。

3:配置不同的中断号,与cpu核的绑定,特定的中断对应特定的核,方便测试。

2:安装nginx环境

在前面测试的基础上,有多队列网卡,设置了大内存页和隔离cpu的基础上,

进行nginx的安装以及测试:

tar -zxvf nginx-1.13.7.tar.gz
    tar -zxvf openssl-1.1.0g.tar.gz 
    tar -zxvf pcre-8.41.tar.gz 
    tar -zxvf zlib-1.2.11.tar.gz 
    ./configure --prefix=/usr/local/nginx --with-http_realip_module --with-http_addition_module --with-http_gzip_static_module --with-http_secure_link_module --with-http_stub_status_module --with-stream --with-pcre=/home/ubuntu/install_code/nginx/pcre-8.41 --with-zlib=/home/ubuntu/install_code/nginx/zlib-1.2.11 --with-openssl=/home/ubuntu/install_code/nginx/openssl-1.1.0g
    make
    sudo make install  ==》查看在/usr/local目录下产生nginx目录:
    cd /usr/local/nginx
    sudo ./sbin/nginx -c ./conf/nginx.conf
    #然后在网页上输入本机ip查看效果。
    #用ps afx|grep nginx查看效果
    #pcre ==>做正则表达式的
    #zlib ==》做编码的
3:修改nginx配置环境,设置cpu亲和性

参考:https://www.cnblogs.com/pangbing/p/6537188.html

#在nginx配置文件中修改/增加如下  支持4个进程对应4个cpu,其他的8个cpu,2个cpu,绑定多个cpu可以自己研究
worker_processes  4;
worker_cpu_affinity 0001 0010 0100 1000;
4:绑定中断和cpu

1:在/proc/interrupts 文件中查看对应的多队列网卡的中断号,可以看到这里是56-59

ubuntu@ubuntu:/usr/local/nginx$ cat /proc/interrupts |grep eth0
  56:         14          0          0         14   PCI-MSI 1572864-edge      eth0-rxtx-0
  57:          3          0          0          0   PCI-MSI 1572865-edge      eth0-rxtx-1
  58:          4          0          0          0   PCI-MSI 1572866-edge      eth0-rxtx-2
  59:          2          0          0          0   PCI-MSI 1572867-edge      eth0-rxtx-3
  60:          0          0          0          0   PCI-MSI 1572868-edge      eth0-event-4

2:手动对中断号进行cpu的绑定,

注意:需要su权限,

用xshell连接执行修改命令时会报错(bash: echo: write error: Invalid argument),试试直接在虚拟机环境上执行成功。

root@ubuntu:/proc/irq# cat /proc/irq/56/smp_affinity
00000000,00000000,00000000,00000008
root@ubuntu:/proc/irq# cat /proc/irq/57/smp_affinity
00000000,00000000,00000000,00000008
root@ubuntu:/proc/irq# cat /proc/irq/58/smp_affinity
00000000,00000000,00000000,00000008
root@ubuntu:/proc/irq# cat /proc/irq/59/smp_affinity
00000000,00000000,00000000,00000008
#如果xshell连接执行不成功,用vmware试试是成功的
root@ubuntu:/home# echo 00000001> /proc/irq/56/smp_affinity
root@ubuntu:/home# echo 00000002> /proc/irq/57/smp_affinity
root@ubuntu:/home# echo 00000004> /proc/irq/58/smp_affinity
root@ubuntu:/home# echo 00000008> /proc/irq/59/smp_affinity
#查看修改后的
root@ubuntu:/home# cat /proc/irq/56/smp_affinity
00000000,00000000,00000000,00000001
root@ubuntu:/home# cat /proc/irq/57/smp_affinity
00000000,00000000,00000000,00000002
root@ubuntu:/home# cat /proc/irq/58/smp_affinity
00000000,00000000,00000000,00000004
root@ubuntu:/home# cat /proc/irq/59/smp_affinity
00000000,00000000,00000000,00000008
#可以通过查看/proc/irq/56/smp_affinity_list  最后生效的,其实是对应的smp_affinity_list 其实是绑定的cpu号,可以多个
ubuntu@ubuntu:~$ cat /proc/irq/56/smp_affinity_list 
0
ubuntu@ubuntu:~$ cat /proc/irq/57/smp_affinity_list 
1
ubuntu@ubuntu:~$ cat /proc/irq/58/smp_affinity_list 
2
ubuntu@ubuntu:~$ cat /proc/irq/59/smp_affinity_list 
3
#如果有多于4个的,是继续如下配置的
root@ubuntu:/home# echo 00000010> /proc/irq/60/smp_affinity
root@ubuntu:/home# echo 00000020> /proc/irq/61/smp_affinity
root@ubuntu:/home# echo 00000040> /proc/irq/62/smp_affinity
root@ubuntu:/home# echo 00000080> /proc/irq/63/smp_affinity
5:使用wrk性能测试工具对多队列网卡进行测试

注意,这里测试的是多队列网卡,要注意网卡的ip。

安装wrk( http 性能测试工具):

git clone https://gitee.com/mirrors/wrk.git
make
#这里可以直接在库下用生成的可执行文件wrk直接测试
#测试命令:
./wrk -c400 -d60s -t100 http://192.168.50.58/

测试环境的信息,建立在上文基础上,其实可以一个网卡进行测试的:

root@ubuntu:/usr/local/nginx# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0c:29:b2:2f:ce  
          inet addr:192.168.50.58  Bcast:192.168.50.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feb2:2fce/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1096442 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1123779 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:87994929 (87.9 MB)  TX bytes:505500636 (505.5 MB)
eth1      Link encap:Ethernet  HWaddr 00:0c:29:b2:2f:c4  
          inet addr:192.168.50.56  Bcast:192.168.50.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feb2:2fc4/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:19445 errors:0 dropped:0 overruns:0 frame:0
          TX packets:52 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1522713 (1.5 MB)  TX bytes:5112 (5.1 KB)
eth2      Link encap:Ethernet  HWaddr 00:0c:29:b2:2f:d8  
          inet addr:192.168.50.60  Bcast:192.168.50.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feb2:2fd8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:19441 errors:0 dropped:0 overruns:0 frame:0
          TX packets:52 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1522455 (1.5 MB)  TX bytes:5112 (5.1 KB)
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:160 errors:0 dropped:0 overruns:0 frame:0
          TX packets:160 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:11840 (11.8 KB)  TX bytes:11840 (11.8 KB)
6:查看测试结果:

查看多队列网卡中中断产生所在cpu上的情况:主要看eth0,(中断号56,57,58,59) ===》这里数据以及隔离cpu的那个数字细节没有分析

可以从现象看出,56号中断数据在最后测试时,数据在cpu0, 57在cpu1, 58在cpu2, 59在cpu3 (cpu3上中断次数过多,是因为测试前的数据)

root@ubuntu:/usr/local/nginx# cat /proc/interrupts |grep eth
  17:       5726          0          0       4420   IO-APIC   17-fasteoi   ehci_hcd:usb1, ioc0, eth2
  19:        405          0          0       3824   IO-APIC   19-fasteoi   eth1
  56:      79311          0          0     223321   PCI-MSI 1572864-edge      eth0-rxtx-0
  57:          3      38030          0      81500   PCI-MSI 1572865-edge      eth0-rxtx-1
  58:          7          0      38853      81592   PCI-MSI 1572866-edge      eth0-rxtx-2
  59:          7          0          0     116604   PCI-MSI 1572867-edge      eth0-rxtx-3
  60:          0          0          0          0   PCI-MSI 1572868-edge      eth0-event-4

注意:一次中断,保证一个包的完整接收,但是并不是限定了连接就一致在这个cpu上。

这里的测试成功,我是建立在网络适配器修改为桥接模式,第一次net模式,没观察到数据变化(暂时没做测试和分析原因)。

总结:

1:概述实现
1:vmware环境通过增加网络适配器,增加多个网卡,并配置使网卡生效。
2:修改网卡名称为传统上的eth格式
3:多队列网卡的认识及测试(配置支持多队列网卡,绑定cpu进行)
4:认识wrk 性能测试工具
2:阻塞问题
1:增加适配器后,ifconfig查看依然没有增加的网卡对应信息,

===》需要在对应的配置文件中进行设置(ubuntu20和低版本有差异)

2:虚拟机环境上的网卡名并不是eth,

===》其实这个应该使没影响的,但是也是可以修改配置的,在/etc/default/grub做配置,增加的两个字段影响网络命名,可以查阅

3:明明在/etc/default/grub配置文件中已经增加字段,但是重启等各种手段都没有生效。

===》一定要执行sudo update-grub命令后,重启环境才会生效

4:如果ifconfig中还是没有相关多个网卡的信息。

===》注意/etc/network/interfaces中配置是否正确。

5:xshell连接测试虚拟机,执行echo 00000001> /proc/irq/56/smp_affinity命令时总报错。

===》直接在测试虚拟机上执行没有问题。

6:第一次测试的时候,多队列网卡虚拟机的网络适配器用的net模式,没观察到具体数据(待测试)
7:隔离cpu对cpu使用的影响(待测试)

参考:修改网卡eth:https://www.cnblogs.com/itwangqiang/p/14302252.html

dpdk环境搭建:https://zhuanlan.zhihu.com/p/336938230

nginx配置worker_cpu_affinity:https://blog.csdn.net/u011957758/article/details/50959823

Biosdevname & net.ifnames 命名规则: http://benjr.tw/93340

目录
相关文章
|
19天前
|
人工智能 边缘计算 搜索推荐
AI产品测试学习路径全解析:从业务场景到代码实践
本文深入解析AI测试的核心技能与学习路径,涵盖业务理解、模型指标计算与性能测试三大阶段,助力掌握分类、推荐系统、计算机视觉等多场景测试方法,提升AI产品质量保障能力。
|
3月前
|
机器学习/深度学习 存储 算法
强化学习算法基准测试:6种算法在多智能体环境中的表现实测
本文系统研究了多智能体强化学习的算法性能与评估框架,选用井字棋和连珠四子作为基准环境,对比分析Q-learning、蒙特卡洛、Sarsa等表格方法在对抗场景中的表现。实验表明,表格方法在小规模状态空间(如井字棋)中可有效学习策略,但在大规模状态空间(如连珠四子)中因泛化能力不足而失效,揭示了向函数逼近技术演进的必要性。研究构建了标准化评估流程,明确了不同算法的适用边界,为理解强化学习的可扩展性问题提供了实证支持与理论参考。
134 0
强化学习算法基准测试:6种算法在多智能体环境中的表现实测
|
5月前
|
监控 安全 测试技术
【01】卓伊凡收到冒充税务机关的诈骗程序-决定在沙盒Sandbox环境中运行测试下-广大企业同胞们注意防诈骗
【01】卓伊凡收到冒充税务机关的诈骗程序-决定在沙盒Sandbox环境中运行测试下-广大企业同胞们注意防诈骗
148 14
【01】卓伊凡收到冒充税务机关的诈骗程序-决定在沙盒Sandbox环境中运行测试下-广大企业同胞们注意防诈骗
|
8月前
|
存储 人工智能 编译器
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
324 10
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
|
8月前
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
854 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
|
11月前
|
机器学习/深度学习 人工智能 算法
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
BALROG 是一款用于评估大型语言模型(LLMs)和视觉语言模型(VLMs)在复杂动态环境中推理能力的基准测试工具。它通过一系列挑战性的游戏环境,如 NetHack,测试模型的规划、空间推理和探索能力。BALROG 提供了一个开放且细粒度的评估框架,推动了自主代理研究的进展。
288 3
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
|
11月前
|
缓存 Ubuntu Linux
Linux环境下测试服务器的DDR5内存性能
通过使用 `memtester`和 `sysbench`等工具,可以有效地测试Linux环境下服务器的DDR5内存性能。这些工具不仅可以评估内存的读写速度,还可以检测内存中的潜在问题,帮助确保系统的稳定性和性能。通过合理配置和使用这些工具,系统管理员可以深入了解服务器内存的性能状况,为系统优化提供数据支持。
665 4
|
4月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
750 23
|
9月前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
6月前
|
SQL 安全 测试技术
2025接口测试全攻略:高并发、安全防护与六大工具实战指南
本文探讨高并发稳定性验证、安全防护实战及六大工具(Postman、RunnerGo、Apipost、JMeter、SoapUI、Fiddler)选型指南,助力构建未来接口测试体系。接口测试旨在验证数据传输、参数合法性、错误处理能力及性能安全性,其重要性体现在早期发现问题、保障系统稳定和支撑持续集成。常用方法包括功能、性能、安全性及兼容性测试,典型场景涵盖前后端分离开发、第三方服务集成与数据一致性检查。选择合适的工具需综合考虑需求与团队协作等因素。
721 24