【存储】cosbench对象存储测试工具

目录

简略说明

原理

用法

详细说明

简介

用法

一 安装

二 简单验证

三 编写配置文件

四 提交配置文件下IO

五 测试结果查看

结果概览

查看详情

每秒钟的io情况查看

工作负载配置

参数配置(controller和driver)

查看错误的方法和错误记录

查看错误的方法

错误记录

简略说明

COSBench是一个用于测试对象存储系统的分布式基准测试工具

原理

存储集群建立网关,cosbench连接网关,根据用户提交的xxx.xml向集群下IO(网关地址,key,和怎么下IO在配置文件xxx.xml中配置了)

用法

1,安装:

下载cosbench:https://github.com/intel-cloud/cosbench工具,放到压力机上,解压。

(COSBench0.4.2.c4.zip资源-CSDN文库)

2,启动cosbench服务:

sh start-all.sh

这个时候就可以访问你启动的cosbench了: http://<IP>:19088/controller/index.html     #<IP>替换成实际地址

3,编写xml配置文件

(集群提前创建好网关,客户端(key))样例如下,文章后面会教你怎么写。

4,提交任务(xml配文件)

 在主页  http://<IP>:19088/controller/index.html 点击submit new workloads,然后选择你编写的xml配置文件,提交,cosbench就开始向你xml里面知道网关,按xml里面定义的操作,向集群下IO

详细说明

简介

COSBench是Intel团队基于java开发,对云存储的测试工具,全称是Cloud object Storage Bench

cosbench 由两个主要组件组成Driver和Controller。

Driver(Load Generator,打工的):

        负责生成工作负载,向目标对象存储发出操作(读取用户的xml配置,向集群下IO);性能统计。可通过http://:18088/driver/index.html访问

Controller(工头):

        负责协调drivers集体执行工作,收集和汇总聚合来自driver实例的运行时状态或基准测试结果。(就是比如你要多台服务器做压力机,在一台机器做Controller,Controller根据配置控制多台压力机下某个集群下IO)

        两个组件可以混合部署在一个节点上,也可以分开来部署.(比如,我们如果只有一台服务器做压力机,那我们就Controller和Driver都在这台机器上启动,这台机器既是工头又是打工的,自己控制自己下IO)

下图是,一个服务器做Controller,控制两台机器下IO)

做工头(Controller)的服务器启动start-Controller.sh脚本,做打工(driver)的服务器启动start-driver.sh脚本,(只有一台服务的情况)即做工头(Controller)又打工(driver)的,即启动start-all.sh

工头控制那些打工的,通过conf/controller.conf文件配置,如下,只有一个打工的driver1:

更详细的配置见后面的《参数配置(controller和driver)》

用法

一 安装

1、 下载COSBench工具

下载地址为:https://github.com/intel-cloud/cosbench,下载最新的包

(COSBench0.4.2.c4.zip资源-CSDN文库)

2、 将包放至linux任意目录中,进行解压unzip xxx.zip

3、 解压后,里面有说明文档:COSBenchUserGuide.pdf

4、 安装依赖java 和curl

yum install java curl

(COSBench底层调用了linux nc来做数据分析,所以如果linux没装nc的需要手工安装nc)

2、文件说明

官方英文使用文档(超详细,可以翻翻看)

[root@ceph-node1 0.4.2.c4]# ll *.pdf
 3rd-party-licenses.pdf
 COSBenchAdaptorDevGuide.pdf
COSBenchUserGuide.pdf

服务调用脚本说明

[root@ceph-node1 0.4.2.c4]# ll *.sh
cli.sh              #通过命令行操作cosbench
cosbench-start.sh   #其他启动脚本调用的脚本
cosbench-stop.sh    #其他启动脚本调用的脚本
start-all.sh          #在当前节点启动driver和controller组件
stop-all.sh           #在当前节点停止driver和controller组件
start-controller.sh   #在当前节点启动controller
start-driver.sh       #在当前节点启动driver
stop-controller.sh    #在当前节点关闭controller
stop-driver.sh        #在当前节点关闭driver

二 简单验证

启动cosbench

启动前为了保证driver和controller之间交互正常,需要关闭HTTP代理

[root@ceph-node1 0.4.2.c4]# unset http_proxy

启动controller和driver (服务器即做工头又做打工的)

[root@ceph-node10.4.2.c4]# sh start-all.sh

  验证

 controller在初始化时读取conf/controller.conf配置文件启动控制器服务,看配置文件可知controller的访问地址是http://<IP>:19088/controller/index.html

访问http://<IP>:19088/controller/index.html验证。

三 编写配置文件

cosbench使用负载配置文件向对象存储下发测试任务。

负载配置文件含如下参数:

  1. 网关节点ip和端口,或者高可用组的vip和端口,或者域名和端口;
  2. 对象存储用户的ak/sk;

在conf目录下有很多配置样例,详细说明,见后面的《工作负载配置》

四 提交配置文件下IO

有两种方法:

1,命令行:

bash cli.sh submit conf/s3-config-sample.xml 

访问http://<IP>:19088/controller/index.html 就可以看到执行情况

2,web界面提交

 在主页  http://<IP>:19088/controller/index.html 点击submit new workloads,然后选择xml配置文件

五 测试结果查看

结果概览

每个阶段执行完后,可以在web界面看到iops、带段等结果:

General Report这一栏,每个值的含义如下:

  • Op-Type : 操作类型
  • Op-Count : 操作总数
  • Byte-Count : 操作产生的Byte
  • Avg-ResTime:平均时延,它为存储服务处理请求的时间,包含数据传输时间,一般小文件(比如KB级别)我们也会关注这个值,此值越低,小文件的IOPS越好
  • Avg-ProcTime:平均处理时间,它为存储服务处理请求的时间,不包含数据传输时间
  • Throughput:吞吐量,当我们的文件粒度为1M及以下时,着重关注这个值,描述了当前文件粒度下的读写等性能(IOPS)
  • Bandwidth:带宽,当我们的文件粒度为1M以上时,着重关注这个值,描述了当前文件粒度下的读写等性能(MB/s等单位)
  • Succ-Ratio:请求成功率,这里一般都要求100%

也可以在任务ID,在cosbench安装目录的archive子目录中看到测试结果:

每个任务ID对应的目录下,都按照阶段生成了相应的csv文件,下载对应的csv文件用execel查看即可:

查看详情

每秒钟的io情况查看

如查看wid=w12&sid=s2-prepare 的每秒钟IO

在将 http://10.255.136.7:19088/controller/stage.html?wid=w12&sid=s2-prepare 中的stage.html 改成 timeline.html ,回车即可

工作负载配置

在conf目录下有很多配置样例

  进入conf目录下,查看s3-config-sample.xml配置文件内容如下:

 配置参数和说明:

<?xml version="1.0" encoding="utf-8"?>

<!--workload name : 测试时显示的任务名称,可自定义;description : 描述信息-->

<workload name="s3-sample" description="sample benchmark for s3">

    <!--storage type: 存储类型,这里配置为s3即可-->

    <storage type="s3" config="accesskey='填访问key';secretkey='填安全key';proxyhost='填代理ip或域名,可以不使用代理';proxyport='如果用了代理,填代理端口';endpoint='填对象存储系统的网关的地址http:/ip:端口';" />

    <!--workflow工作流,workstage name:cosbench是分阶段按顺序执行,每个阶段的名字-->

    <workflow>

            <workstage name="init">

                <!--workers:该阶段开启多少工作线程;config:存储桶bucket的名称前缀;containers:轮询数,如本例创建以s3testqwer为前缀,后缀分别为12bucket-->

                <work type="init" workers="1" config="cprefix=s3testqwer;containers=r(1,2)" />

            </workstage>

            

             <!--prepare阶段,配置写入的数据;workers\config\containersinit阶段相同;objects:一轮写入多少个对象以及object的大小-->

            <workstage name="prepare">

                                     <!--一个worker处理该阶段,r就是range,轮询1,2两个容器(桶),前缀是s3testqwer,每个容器写入10个 objecter,尺寸是64KB-->

                <work type="prepare" workers="1" config="cprefix=s3testqwer;containers=r(1,2);objects=r(1,10);sizes=c(64)KB" />

            </workstage>

             <!--main阶段:测试阶段;runtime:运行的时间,默认为秒-->

            <workstage name="main">

                <work name="main" workers="8" runtime="30">

                     <!--op type:操作类型readwritedelete;ratio操作占比,read的比例为80%,write的比例为20%; -->

                    <operation type="read" ratio="80" config="cprefix=s3testqwer;containers=u(1,2);objects=u(1,10)" />

                    <operation type="write" ratio="20" config="cprefix=s3testqwer;containers=u(1,2);objects=u(11,20);sizes=c(64)KB" />

                </work>

            </workstage>

             <!--清理阶段:主要是删除bucket中的数据,保证测试后的数据不会保留在集群中-->

            <workstage name="cleanup">

                <work type="cleanup" workers="1" config="cprefix=s3testqwer;containers=r(1,2);objects=r(1,20)" />

            </workstage>

            

            <!--dispose阶段:删除bucket-->

            <workstage name="dispose">

                <work type="dispose" workers="1" config="cprefix=s3testqwer;containers=r(1,2)" />

            </workstage>

    </workflow>

</workload>

workload name : 测试时显示的任务名称,这里可以自行定义

description : 描述信息,这里可以自己定义

storage type: 存储类型,这里配置为s3即可

config : 对该类型的配置,

workstage name : 

    cosbench是分阶段按顺序执行,此处为init初始化阶段,主要是进行bucket的创建,

    workers表示执行该阶段的时候开启多少个工作线程,创建bucket通过不会计算为性能,所以单线程也可以;

    config处配置的是存储桶bucket的名称前缀;

    containers表示轮询数,上例中将会创建以s3testqwer为前缀,后缀分别为1和2的bucket

prepare阶段 : 

    配置为bucket写入的数据,workers和config以及containers与init阶段相同,除此之外还需要配置objects,表示一轮写入多少个对象,以及object的大小。

main阶段 :

     这里是进行测试的阶段,runtime表示运行的时间,时间默认为秒

    operation type : 操作类型,可以是read、write、delete等。

    ratio表示该操作所占有操作的比例,例如上面的例子中测试读写,read的比例为80%,write的比例为20%; 

    config中配置bucket的前缀后缀信息。注意write的sizes可以根据实际测试进行修改

cleanup阶段 :

     这个阶段是进行环境的清理,主要是删除bucket中的数据,保证测试后的数据不会保留在集群中

dispose阶段 : 

这个阶段是删除bucket

 

参数配置(controller和driver)

 测试案例配置

 cosbench工具使用按照流程可分为以下几个步骤:参数配置--服务启动--提交测试--分析结果

示例使用三个节点联机测试,配置示意如下:

调整时差,客户机和集群的时差不要太大。

4.1 参数配置

        controller和driver依赖不同系统配置来启动服务,在启动controller和driver服务时,需要先行定义角色配置

一、controller配置

        controller在初始化时读取conf/controller.conf配置文件启动控制器服务

[root@node241 0.4.2.c4]# cat conf/controller.conf

[controller]

concurrency=1

drivers=3

log_level=INFO

log_file=log/system.log

archive_dir=archive

 

[driver1]

name=driver1

url=http://66.66.66.241:18088/driver

 

[driver2]

name=driver2

url=http://66.66.66.242:18088/driver

 

[driver3]

name=driver3

url=http://66.66.66.243:18088/driver

 [controller]

concurrency:默认值为1,表示可以同时执行的工作负载数量

drivers:默认值为1,表示此controller控制的driver数量

log_level:默认值为INFO,可选值为TRACE、DEBUG、INFO、WARN、ERROR,表示日志打印等级

log_file:默认值为log/system.log,表示日志文件存放位置

archive_dir:默认值为archive,表示工作负载结果存放位置,当参数值为archive,则工作负载结果存放于0.4.2/archive目录内

 [driver#x]

        当有多个driver时,第{n}个driver命名为[driver{n}]

name:用于标识driver节点的标签,名称可以自定义

url:访问driver节点的地址

二、driver配置

  driver在初始化时读取conf/driver.conf配置文件启动负载器服务。

[root@node241 0.4.2.c4]# cat conf/driver.conf 

[driver]

name=127.0.0.1:18088

url=http://127.0.0.1:18088/driver

查看错误的方法和错误记录

查看错误的方法

1,点击download-log 下载log

查看下载下来log内容

1、main阶段failed

点击“view details”,找到Mission ID:

在cosbench安装目录的log/mission目录下,找到该mission id对应的日志文件,从日志文件中查看报错:

错误记录

Status Code: 500

Status Code: 500

2024-03-11 20:36:36,483 [ERROR] [AbstractOperator] - worker 13 fail to perform operation s3testqwer25

com.intel.cosbench.api.storage.StorageException: com.amazonaws.services.s3.model.AmazonS3Exception: We encountered an internal error, please try again.: cause(save bucket metadata to ns failed!s3testqwer25) (Service: Amazon S3; Status Code: 500; Error Code: InternalError; Request ID: 17BBB600BD8B7581), S3 Extended Request ID: 1a6d04ea-b557-4018-9ced-cc23e3798466
        at com.intel.cosbench.api.S3Stor.S3Storage.createContainer(S3Storage.java:149)
        at com.intel.cosbench.driver.operator.Preparer.doInit(Preparer.java:113)
        at com.intel.cosbench.driver.operator.Preparer.operate(Preparer.java:87)
        at com.intel.cosbench.driver.operator.AbstractOperator.operate(AbstractOperator.java:76)
        at com.intel.cosbench.driver.operator.Initializer.operate(Initializer.java:1)
        at com.intel.cosbench.driver.agent.WorkAgent.performOperation(WorkAgent.java:197)
        at com.intel.cosbench.driver.agent.WorkAgent.doWork(WorkAgent.java:177)
        at com.intel.cosbench.driver.agent.WorkAgent.execute(WorkAgent.java:134)
        at com.intel.cosbench.driver.agent.AbstractAgent.call(AbstractAgent.java:44)
        at com.intel.cosbench.driver.agent.AbstractAgent.call(AbstractAgent.java:1)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)

原因
1,对象数据池没有创建

which: no nc in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

如果不安装nc,会报错

which: no nc in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

Ncat: Connection refused.

No appropriate tool found to detect cosbench driver status.

        如果不安装java,会报

Ncat: Connection refused.

启动失败

摘自:尝试在CentOS 7上启动cosbench遭遇的一些问题 - 之一 - 中道学友 - 博客园 (cnblogs.com)

尝试启动cosbench,遭遇报错:

[root]hopisdtmelabs14# cat driver-boot.log                                                                                                                                      /tmp/cosbench/0.4.2/log
java.net.BindException: Address already in use (Bind failed)
         at java.net.PlainSocketImpl.socketBind(Native Method)
         at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387)
         at java.net.ServerSocket.bind(ServerSocket.java:375)
         at java.net.ServerSocket.<init>(ServerSocket.java:237)
         at java.net.ServerSocket.<init>(ServerSocket.java:128)
         at org.eclipse.osgi.framework.internal.core.ConsoleManager.startConsole(ConsoleManager.java:186)
         at org.eclipse.osgi.framework.internal.core.ConsoleManager.startConsole(ConsoleManager.java:132)
         at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:269)
         at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:175)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
         at java.lang.reflect.Method.invoke(Method.java:498)
         at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
         at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
         at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
         at org.eclipse.equinox.launcher.Main.main(Main.java:1386)

!SESSION 2020-06-03 06:04:23.609 -----------------------------------------------

eclipse.buildId=unknown
java.version=1.8.0_181
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Command-line arguments:  -console 18089
!ENTRY org.eclipse.osgi 4 0 2020-06-03 06:04:24.132
!MESSAGE Bundle plugins/cosbench-castor not found.

看起来像是网络端口18089已经被占用了,杀掉那些进程,问题解决。

如何找到占用18089端口的进程?举例如下:

# netstat -tulpn | grep 18089                                                                                                                                /tmp/cosbench/cos/conf

tcp6       0      0 :::18089                :::*                    LISTEN      4090/java

# ps aux | grep java                                                                                                                                         /tmp/cosbench/cos/conf

root      4090  0.0  0.4 21453452 315076 ?     Sl   10:39   0:18 java -Dcosbench.tomcat.config=conf/driver-tomcat-server.xml -server -cp main/org.eclipse.equinox.launcher_1.2.0.v20110502.jar org.eclipse.equinox.launcher.Main -configuration conf/.driver -console 18089

root      4822  0.3  0.3 20319980 262324 pts/0 Sl   21:13   0:07 java -Dcosbench.tomcat.config=conf/controller-tomcat-server.xml -server -cp main/org.eclipse.equinox.launcher_1.2.0.v20110502.jar org.eclipse.equinox.launcher.Main -configuration conf/.controller -console 19089

root      4965  0.0  0.0 112828  2316 pts/0    S+   21:46   0:00 grep --color=auto java

可以看出来在上面的例子中,4090就是占用了18089端口的进程号了,通过ps aux 还能看到详细的命令行参数。

但cosbench driver 还是启动不了。

[root]hopisdtmelabs14# bash ./start-driver.sh                                                                                                                                          /tmp/cosbench/cos

Launching osgi framwork ...
Successfully launched osgi framework!
Booting cosbench driver ...
which: no nc in (/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/tme/bin:/usr/local/tme/tme_portal/perf_web/bin)
No appropriate tool found to detect cosbench driver status.

看报错,应该是nc(ncat)这个软件没有安装。可是通过yum还没法正常安装。我通过下面的命令解决了这个问题:

​
# yum -y install wget
# wget  https://nmap.org/dist/ncat-7.80-1.x86_64.rpm
# yum localinstall ncat-7.80-1.x86_64.rpm
# cd /usr/bin
# ln -s ncat nc

装好了nc之后,还是有错误。

# bash ./start-driver.sh                                                                                                                                          /tmp/cosbench/cos

Launching osgi framwork ...
Successfully launched osgi framework!
Booting cosbench driver ...
...........................................................
Starting    cosbench-log_0.4.2    [ERROR]
...........................................................
Starting    cosbench-tomcat_0.4.2    [ERROR]
..........................................................
Starting    cosbench-config_0.4.2    [ERROR]
...........................................................
Starting    cosbench-http_0.4.2    [ERROR]

我怀疑是我的java的版本过高,所以卸掉java 8, 安装java 7。

# rpm -aq | grep -i jdk                                                                                                                                           /tmp/cosbench/cos

java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64
copy-jdk-configs-3.3-10.el7_5.noarch
java-1.8.0-openjdk-headless-1.8.0.181-3.b13.el7_5.x86_64


# rpm -e java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64
# rpm -e java-1.8.0-openjdk-headless-1.8.0.181-3.b13.el7_5.x86_64
# yum remove java

安装java 7.

#yum install java-1.7.0-openjdk

结果遇到了报错,说有两个软件包太旧了,达不到安装的要求。

尝试安装更新,结果还是报错,无法更新。

[Errno 14] HTTP/HTTPS Error 404

于是执行下面的命令,对yum进行修复。

#yum clean all

#rm -rf /var/cache/yum/*

之后java 7也成功安装了。

但还是报错:

# cat driver-boot.log                                                                                                                                         /tmp/cosbench/cos/log
Listening on port 0.0.0.0/0.0.0.0:18089 ...
!SESSION 2020-06-03 10:12:59.683 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.7.0_261
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Command-line arguments:  -console 18089
!ENTRY org.eclipse.osgi 4 0 2020-06-03 10:13:00.367
!MESSAGE Bundle plugins/cosbench-castor not found.
!ENTRY org.eclipse.osgi 4 0 2020-06-03 10:13:00.368
!MESSAGE Bundle plugins/cosbench-log4j not found.
!ENTRY org.eclipse.osgi 4 0 2020-06-03 10:13:00.368
!MESSAGE Bundle plugins/cosbench-log@6:start not found.
!ENTRY org.eclipse.osgi 4 0 2020-06-03 10:13:00.369
!MESSAGE Bundle plugins/cosbench-config@6:start not found.

…

…

Github的cosbench的站点里的issue#383里的步骤(具体步骤描述在这篇文章),即删掉cosbench-start.sh里的一行(如下),我也试过了,并没有解决问题。

TOOL_PARAMS="-i 0" -----Delete this line

经过查询,找到了这篇文章,推荐不要使用正式版的0.4.2,推荐试试0.4.2.c4, 于是下载了更早的一个版本0.4.2.c4。

问题解决了,终于成功启动了cosbench driver。

# bash ./start-driver.sh                                                                                                                                     /tmp/cosbench/0.4.2.c4
Launching osgi framwork ...
Successfully launched osgi framework!
Booting cosbench driver ...
.
Starting    cosbench-log_0.4.2    [OK]
.
Starting   cosbench-tomcat_0.4.2    [OK]
Starting    cosbench-config_0.4.2    [OK]
Starting    cosbench-http_0.4.2    [OK]
Starting    cosbench-cdmi-util_0.4.2    [OK]
Starting    cosbench-core_0.4.2    [OK]
Starting    cosbench-core-web_0.4.2    [OK]
Starting    cosbench-api_0.4.2    [OK]
Starting    cosbench-mock_0.4.2    [OK]
Starting    cosbench-ampli_0.4.2    [OK]
Starting    cosbench-swift_0.4.2    [OK]
Starting    cosbench-keystone_0.4.2    [OK]
Starting    cosbench-httpauth_0.4.2    [OK]
Starting    cosbench-s3_0.4.2    [OK]
Starting    cosbench-librados_0.4.2    [OK]
Starting    cosbench-scality_0.4.2    [OK]
Starting    cosbench-cdmi-swift_0.4.2    [OK]
Starting    cosbench-cdmi-base_0.4.2    [OK]
Starting    cosbench-driver_0.4.2    [OK]
Starting    cosbench-driver-web_0.4.2    [OK]
Successfully started cosbench driver!
Listening on port 0.0.0.0/0.0.0.0:18089 ...
Persistence bundle starting...
Persistence bundle started.
----------------------------------------------
!!! Service will listen on web port: 18088 !!!
----------------------------------------------

不知道为什么,在CentOS 7上运行0.4.2 明显的有问题,却还不被修复,结果还要去使用稍早的版本release candidate 4, 这个事儿弄的挺恶心的。

To the English readers:
I document the process and issues here in detail, hope other people hit on the same issue can see it, and save time.

参考资料


================

How to check if port is in use on Linux or Unix
https://www.cyberciti.biz/faq/unix-linux-check-if-port-is-in-use-command/
NETCAT THE MULTI-PURPOSE NETWORKING TOOL
landoflinux.com
Uninstall JDK rpm to reinstall
centos - Uninstall JDK rpm to reinstall - Unix & Linux Stack Exchange
yum-errors
https://wiki.centos.org/yum-errors
CosBench on Red Hat Linux
http://www.vtechdiary.com/2018/09/cosbench-on-red-hat-linux.html
Can't start the system #380
Can't start the system · Issue #380 · intel-cloud/cosbench · GitHub

​

参考资料

使用COSBench工具對ceph s3接口進行壓力測試--續 - JavaShuo

尝试在CentOS 7上启动cosbench遭遇的一些问题 - 之一 - 中道学友 - 博客园 (cnblogs.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/566041.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[BT]BUUCTF刷题第20天(4.22)

第20天 Web [GWCTF 2019]我有一个数据库 打开网站发现乱码信息&#xff08;查看其他题解发现显示的是&#xff1a;我有一个数据库&#xff0c;但里面什么也没有~ 不信你找&#xff09; 但也不是明显信息&#xff0c;通过dirsearch扫描得到robots.txt&#xff0c;然后在里面得…

123.Mit6.S081-实验1-Xv6 and Unix utilities

今天我们来进行Mit6.S081实验一的内容。 实验任务 一、启动xv6(难度&#xff1a;Easy) 获取实验室的xv6源代码并切换到util分支。 $ git clone git://g.csail.mit.edu/xv6-labs-2020 Cloning into xv6-labs-2020... ... $ cd xv6-labs-2020 $ git checkout util Branch util …

xshell的基本命令

1. 创建虚拟环境: conda create -n 虚拟环境名称 python3.7 2. 激活进入虚拟环境 conda activate 虚拟环境名称 3. 退出虚拟环境 conda deactivate 4. 查看所有虚拟环境 conda env list 5. 卸载环境 conda remove -n 虚拟环境名称 --all 6. 执行py文件: python3.py文…

微软刚开源就删库的WizardLM-2:MT-Bench 榜单评测超越GPT-4,7B追平Qwen1.5-32B

前言 微软最近发布的WizardLM-2大型语言模型因其先进的技术规格和短暂的开源后突然撤回&#xff0c;引起了科技界的广泛关注。WizardLM-2包括三个不同规模的模型&#xff0c;分别是8x22B、70B和7B&#xff0c;均展现了在多语言处理、复杂对话、推理和代理任务上的卓越能力。 H…

如何用PHP语言实现远程语音播报

如何用PHP语言实现远程语音播报呢&#xff1f; 本文描述了使用PHP语言调用HTTP接口&#xff0c;实现语音播报。通过发送文本信息&#xff0c;来实现远程语音播报、语音提醒、语音警报等。 可选用产品&#xff1a;可根据实际场景需求&#xff0c;选择对应的规格 序号设备名称1…

IDEA代码重构

重构 重构的目的&#xff1a; 提高代码的可读性、可维护性、可扩展性和性能。 重命名元素 重命名类 当我们进行重命名操作的时候可以看到第六行存在一个R(rename)&#xff0c;点击后就会弹出所偶有引用&#xff0c;这样可以避免我们在修改后存在遗漏引用处未修改。 我们可以通过…

操作系统安全:Windows与Linux的安全标识符,身份鉴别和访问控制

「作者简介」&#xff1a;2022年北京冬奥会中国代表队&#xff0c;CSDN Top100&#xff0c;学习更多干货&#xff0c;请关注专栏《网络安全自学教程》 操作系统有4个安全目标&#xff0c;也就是说想要保证操作系统的安全&#xff0c;就必须实现这4个需求&#xff1a; 标识系统…

YoloV9改进策略:下采样改进|自研下采样模块(独家改进)|疯狂涨点|附结构图

文章目录 摘要自研下采样模块及其变种第一种改进方法 YoloV9官方测试结果改进方法测试结果总结 摘要 本文介绍我自研的下采样模块。本次改进的下采样模块是一种通用的改进方法&#xff0c;你可以用分类任务的主干网络中&#xff0c;也可以用在分割和超分的任务中。已经有粉丝用…

单细胞+RIP-seq项目文章| Cell ReportshnRNPU蛋白在小鼠精原干细胞池建立的关键作用

精原干细胞&#xff08;SSCs&#xff09;是负责精子发生的干细胞&#xff0c;具有自我更新和分化产生功能性精子的能力。SSCs的持续再生对于维持雄性生育力至关重要。然而&#xff0c;SSC池的发育起源尚不清楚。在哺乳动物中&#xff0c;SSCs源自名为 prospermatogonia&#xf…

端口被占用的解决方案汇总

端口被占用的解决方案汇总 【一】windows系统端口被占用【二】Linux系统端口被占用【三】Linux的ps命令查找&#xff08;1&#xff09;ps命令常用的方式有三种&#xff08;2&#xff09;ps -ef |grep 8080 【一】windows系统端口被占用 &#xff08;1&#xff09;键盘上按住Wi…

Ubuntu-18.04本地化部署Rustdesk服务器

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、配置防火墙二、安装三大件1.下载三大件2.安装三大件 三、安装客户端1.下载客户端1.Windows2.Linux 四、配置客户端连接服务器五、总结 前言 如果你是想数据…

JS-47-Node.js06-fs模块-读写文件

Node.js内置的fs模块就是文件系统模块&#xff0c;负责读写文件。 和所有其它JavaScript模块不同的是&#xff0c;fs模块同时提供了异步和同步的方法。 一、回顾&#xff1a;异步方法VS同步方法 1-1、异步方法 因为JavaScript的单线程模型&#xff0c;执行IO操作时&#xff…

.gitignore语法及配置问题

语法及配置 前言.gitignore语法Git 忽略规则优先级gitignore规则不生效Java项目中常用的.gitignore文件c项目中常用的.gitignore注意事项 前言 在工程中&#xff0c;并不是所有文件都需要保存到版本库中&#xff0c;例如“target”目录及目录下的文件就可以忽略。在Git工作区的…

AI视频分析技术的常用开源模型及TSINGSEE青犀AI视频识别分析能力介绍

AI视频分析技术是指利用人工智能技术来对视频数据进行分析和处理的技术。开源模型是指可以免费获取和使用的代码模型&#xff0c;可以帮助开发人员快速构建和部署AI视频分析应用程序。 以下是一些业内常用的用于AI视频分析技术的开源模型&#xff1a; OpenCV&#xff1a;Open…

MySQL—一条查询SQL语句的完整执行流程

MySQL—一条查询SQL语句的完整执行流程 表结构和数据如下&#xff1a; 我们分析的sql语句如下&#xff1a; select tb_id,tb_name,tb_address from tb_user where tb_id 66;大体来说&#xff0c;MySQL可以分为Server层和存储引擎层两部分: Server层 包括:连接器、查询缓存、…

OpenCV-基于阴影勾勒的图纸清晰度增强算法

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 实现原理 大家在工作和学习中&#xff0c;无论是写报告还是论文&#xff0c;经常有截图的需求&#xff0c;比如图表、图纸等&…

【PCL】教程global_hypothesis_verification 通过验证模型假设来实现 3D 对象识别与位姿估计...

测试程序1 milk.pcd milk_cartoon_all_small_clorox.pcd 终端输出1&#xff1a; Model total points: 12575; Selected Keypoints: 193 Scene total points: 307200; Selected Keypoints: 7739 [pcl::SHOTEstimation::computeFeature] The local reference frame is not valid!…

若依集成mybatisplus报错找不到xml

引用&#xff1a;https://blog.csdn.net/qq_65080131/article/details/136677276 MybatisPlusAutoConfiguration中可以知道&#xff0c;系统会自动配置SqlSessionFactory&#xff0c;&#xff0c;但是&#xff0c;当你有自定义的SqlSessionFactory&#xff0c;&#xff0c;就会…

Spark-机器学习(4)回归学习之逻辑回归

在之前的文章中&#xff0c;我们来学习我们回归中的线性回归&#xff0c;了解了它的算法&#xff0c;知道了它的用法&#xff0c;并带来了简单案例。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请…

NCH WavePad for Mac:功能全面的音频编辑利器

NCH WavePad for Mac是一款功能全面的音频编辑软件&#xff0c;专为Mac用户设计。它集音频录制、编辑、处理和效果添加于一体&#xff0c;为用户提供一站式的音频解决方案。 NCH WavePad for Mac v19.16注册版下载 作为一款专业的音频编辑器&#xff0c;WavePad支持对音频文件进…