specCPU 2006 备忘


前言

首先 specCPU是收费的,好像是800$还是1000$,缴费了才有软件分发给你,关键是你要提交结果,那估计得需要购买了,因为测试报告里面有个序列号,应该是购买后给的一个号,测试的时候也要写到配置文件里,但是个人1测试或者普通项目摸底测试,都是百度或者找整机,CPU或者操作系统厂家给。

specCPU和其他性能测试工具类似,基本上都是在被测试机器现场编译测试程序,再运行测试程序得出测试结果以获得最优测试结果。

但specCPU还有个特殊的地方在于除了测试程序外,还自带了一些工具包,在编译specCPU之前,这些工具包得处于可用状态。

所以,如果是完全全新测试,整个测试过程首先是编译工具包,工具包包括好几个工具用于调用或者验证speccpu测试的,比如xz,md5sum perl tar make diff specinvoke。

编译好工具包后,specCPU的编译以及测试是通过runspec来调用和完成的。

因此,全新的specCPU测试需要进行两个部分的编译,分别是

  • 工具包的编译
  • specCPU的编译

但实际测试过程中,可能存在2种情况:

  • 厂家可能给的编译好的针对特定CPU或者机型的,里面已经包含编译好的工具包,可以直接开始runspec运行测试;
  • 但对于工作做的更到位的情况,厂家也给你编译好的二进制及相关调用的相应的库文件。可以通过runspec --nobuild 直接开始跑测试。

但是如果要自己编译speccpu工具包以及specCPU,根据官网说明,需要至少满足以下编译器。

Requirements SPEC CPU2006https://www.spec.org/cpu2006/Docs/system-requirements.html#compiler

  1. For SPECint2006: Both C99 and C++98 compilers
  2. For SPECfp2006: All three of C99, C++98 and Fortran-95 compilers

编译specCPU工具包

编译speccpu工具包参考如下官网地址:

Tools Build SPEC CPU2006https://www.spec.org/cpu2006/Docs/tools-build.html编译器需求: 官网说明,C99 compiler. Most of the tools are C++ or C89, but XZ is C99.

编译过程很简单,如果在specCPU目录下tools/src下已经有源文件了,直接运行tools/src/buildtools,就可以完成编译了。如果没有源文件,直接从install_archives/cpu2006.tar.xz解压到tools/src下再编译就行。

xz -dc install_archives/cpu2006.tar.xz | tar -xf - tools/src

编译过程会提示perl测试有错,直接y忽略,编译完成后

. ./shrc
runspec -V

进行检查编译是否成功,可以运行runspec --test进行perl的更综合测试。

下一步是编写工具描述文件description

在tools/bin/下新建一个能记住的名字比如linux-uos-aarch64的目录,直接从tools/bin/其他目录拷贝一个description文件到tools/bin/linux-uos-aarch64/下,修改内容,符合当前工具适合的平台描述就行。

最后一步就是打包

. ./shrc
bin/packagetools

直接运行,会自动在specCPU根目录下生成 linux-uos-aarch64-118.tar 这样的压缩包。

将spectar linux-uos-aarch64-118.tar 拷贝到其他未编译specCPU工具的目录下,spectar xf linux-uos-aarch64-118.tar 解压到对应未知后,使用

install.sh -u linux-uos-aarch64

就安装好工具了。

在飞腾2000/4编译过程遇到的坑:

1 make

glob/glob.c:xxx:  undefined  reference  to  `__alloca'`×

在编译前面也有警告提示,到连接的时候会报找不到alloca,直接注视掉宏定义的前面和后面,让这个alloca定义上就好了。

//      #if  !defined  __alloca  &&  !defined  __GNU_LIBRARY__
 
#  ifdef        __GNUC__
#    undef  alloca
#    define  alloca(n)        __builtin_alloca  (n)
#  else        /*  Not  GCC.    */
#    ifdef  HAVE_ALLOCA_H
#      include  <alloca.h>
#    else        /*  Not  HAVE_ALLOCA_H.    */
#      ifndef  _AIX
#        ifdef  WINDOWS32
#          include  <malloc.h>
#        else
extern  char  *alloca  ();
#        endif  /*  WINDOWS32  */
#      endif  /*  Not  _AIX.    */
#    endif  /*  sparc  or  HAVE_ALLOCA_H.    */
#  endif        /*  GCC.    */
 
#  define  __alloca        alloca
 
//      #endif

2 tar  specsum

报/stdio.h:474:1: error: 'gets' undeclared here (not in a function); did you mean 'fgets'?
直接给退出了。

直接编辑tar-1.25/gnu/stdio.in.h文件,注视掉#undef gets的两行。

142 
 143 /* It is very rare that the developer ever has full control of stdin,
 144    so any use of gets warrants an unconditional warning.  Assume it is
 145    always declared, since it is required by C89.  */
 146 //#undef gets
 147 //_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
 148 

3 timedate test报错

直接修改tools/src/TimeDate-1.20/t/getdate.t文件第159行

my $offset = Time::Local::timegm(0,0,0,1,0,70);

修改为

my $offset = Time::Local::timegm(0,0,0,1,0,1970);

参考unmatched(riscv64)上编译,安装和移植SPEC CPU 2006 - 知乎unmatched系统信息: Linux ubuntu 5.11.0-1021-generic #22-Ubuntu SMP Tue Sep 28 15:19:16 UTC 2021 riscv64 riscv64 riscv64 GNU/Linux Linux version 5.11.0-1021-generic (buildd@riscv64-qemu-lcy01-078) (…https://zhuanlan.zhihu.com/p/429399630

运行测试

实际测试(编译好和未编译好specCPU)都是通过runspec来调用,但实际上最主要的部分在于配置文件的修改。

运行的命令可以简单的用如下格式来:

runspec -c linux-uos-aarch64

这里linux-uos-aarch64对应在config目录下linux-uos-aarch64.cfg内容,所有测试的参数以及优化参数都在这个文件里指定。

简单介绍下specCPU2006的测试情况:

测试主要是测试计算能力,所以基本上只和CPU 内存 编译器参数和优化有关,对磁盘图形等等其他的性能五官

  • 测试分为speed和rate两种情况,是通过参数rate指定来确定是那种模式,speed是测试计算机完成单个任务计算能力,rate是测试机器运行多个任务的吞吐量或者速率。 测试结果不带rate的就是speed
  • 测试内容分整数和浮点数两项,分别是int fp.  对应测试CINT2006和CFP2006
  • 测试还分base peak两项。这个区别在啥地方待查。测试结果不带base的,就是peak。

peak  compiled with aggressive optimization for each benchmark.  积极优化

base  compiled with conservative optimization for each benchmark. 保守优化

运行参数 :

参数用-n  1 每个测试的运行次数,默认3 ,如果要出报告,需要是3,配置文件用iterations ,

参数用--tune=base或者--tune=all运行是否包括peak 配置文件用tune  = base 不包括peak ,all 包括base peak

运行例子:

#运行整数计算能力,int换成fp则计算浮点,换成all表示整数浮点数都运行
 runspec --config test.cfg --noreportable int
#可以直接指定某个整数或者浮点数的测试项,这在调整编译优化参数的时候很有用。-n 1表示只运行一次,默认每个测试项会运行三次。
runspec --config mat_dec25j.cfg -n 1 --noreportable 482.sphinx
#只运行base,如果--tune换成all,则base peak都运行,这个在针对单个spec项调整参数做编译或者优化的时候最有用
runspec --config mat_dec25j.cfg -n 1 --tune=base --noreportable 482.sphinx 


gcc 参数笔记:

-D 定义宏用,如果代码有ifdef可以编译的时候通过-D定义宏来开关,或者 -DNAME=Peter来定义宏的值,但不知道代码里面如果定义了,是代码定义的优先级高还是这里的搞。

-l (小写L)  是指要链接的库名,如果是-lz 表示连接libz ,如果还加了-static 则寻找libz.a静态库。

-L 表示寻找库的目录,-I (大写i) 表示寻找头文件的目录

-lz      压缩库(Z)

-lrt     实时库(real time):shm_open系列

-lm     数学库(math)

-lc     标准C库(C lib)

-dl ,是显式加载动态库的动态函数库

-ftree-parallelize-loops=8 开启多线程并行,这对某些整数和浮点数CPUspeed成绩有提高,具体的可以参考

AutoParInGCC - GCC Wikihttps://gcc.gnu.org/wiki/AutoParInGCC

  • 462.libquantum 2.5X

  • 410.bwaves 3.3X

  • 436.cactusADM 4.5X

  • 459.GemsFDTD 1.27X

  • 481.wrf 1.25X

不过查看specCPU 2006提交的报告,基本上都是开了并行的。如果要在报告中显示并行,还需要在编译参数-ftree-parallelize-loop=8的flag描述文件中添加并行说明

<flag name="F-ftree-parallelize-loops:8"
        class="optimization"
        parallel = "yes"
        >
<![CDATA[
<p>Supported 8 core parallelize</p>
]]>
</flag>

编译403.gcc遇到的问题

如果指定了-static的优化参数,/usr/bin/ld: cannot find -lm

需要补充yum install glibc-static  libgfortran-static

据说用gcc9会获得更好的成绩。

配置文件

配置文件和命令行优先级关系:

配置文件内命名选项 > 命令行  > 配置文件头部选项

配置文件的主要三个组成部分:

头部选项:绝大部分选项都在头部

用户定义的命名选项 :用于提前定义编译的时候各种优化参数,在编译的时候,根据优先级合并后确定编译参数。

命名选项基本格式由四个部分组成,

 benchmark[,...]=tuning[,...]=extension[,...]=machine[,...]:
  • benchmark可以是default int fp 以及单独的测试项如403.gcc
  • tuning 可以是default base peak 
  • extension  可以是default 或者任意的字符串
  • machin 可以是default  或者任意字符串

对于组成部分后面全是default的,可以省略,比如:

403.gcc=base=default:
403.gcc=base:

是相同的

具体测试的时候,命名选项内包含的参数优先级按命名的详细成都来确定的,命名选项名称指定的越具体,则编译的时候使用优先级越高。

$  cat tmp.cfg
   runlist       = sjeng
   size          = test
   iterations    = 1
   tune          = base
   output_format = text
   teeout        = 1

   default=default=default=default:
   OPTIMIZE = -xO2 -w

   int=default=default=default:
   OPTIMIZE = -xO3 -w

   $ runspec --config=tmp | grep sjeng.c
   cc -c -o sjeng.o -DSPEC_CPU -DNDEBUG   -xO3 -w     sjeng.c
   $

抄个官网的例子,上面的例子重,最终在测试的时候,编译选项使用的

int=default=default=default:部分定义的-xO3 ,是因为int=default=default=default:指定的比default=default=default=default:更具体。如果还有458.sjeng=default=default=default:这样的命名选项部分,那458.sjeng=default=default=default:下面跟的参数优先级更高,如果文件中出现重复的
458.sjeng=default=default=default:那谁排后面谁的优先级更高。

上面的情况对于命名选项的第二个部分也是一样的原理。

除了用benchmark和tune来命名,还可以用自定义extension名称来指定优化选项,从而在命令行可以指定--extension=xxx来使用extension部分的命名,下面再抄一个官网例子。

$ cat tmp.cfg
   runlist       = sjeng
   size          = test
   iterations    = 1
   tune          = base
   output_format = text
   teeout        = 1

   default=default=default:
   LIBS = -lslowmalloc

   default=default=myke:
   LIBS = -lbsdmalloc

   default=default=yusuf:
   LIBS = -lthread -lmtmalloc
   $
   $ runspec --config=tmp --extension=myke | grep sjeng.o
   cc -c -o sjeng.o -DSPEC_CPU -DNDEBUG                    sjeng.c
   cc  attacks.o book.o crazy.o draw.o ecache.o epd.o eval.o leval.o moves.o 
   neval.o partner.o proof.o rcfile.o search.o see.o seval.o sjeng.o ttable.o 
   utils.o     -lbsdmalloc          -o sjeng
   $
   $ runspec --config=tmp --extension=yusuf | grep sjeng.o
   cc -c -o sjeng.o -DSPEC_CPU -DNDEBUG                    sjeng.c
   cc  attacks.o book.o crazy.o draw.o ecache.o epd.o eval.o leval.o moves.o 
   neval.o partner.o proof.o rcfile.o search.o see.o seval.o sjeng.o ttable.o 
   utils.o     -lthread -lmtmalloc          -o sjeng
   $ 
   $ cd $SPEC/benchspec/CPU2006/458.sjeng/exe
   $ ls -lt | head -3
   total 5888
   -rwxrwxr-x   1 alan  staff      244688 May 11 16:32 sjeng_base.yusuf
   -rwxrwxr-x   1 alan  staff      244628 May 11 16:31 sjeng_base.myke

可以看到这里不光编译选项使用了自定义的,生成的spec二进制文件后缀也应用上了。

如果多个命名选项部分并无冲突,那,几个部分的编译参数都会合并应用到测试编译上(当然有相同参数的,以命名选项最详细的参数为高优先级)。

如果不同的命名选项参数有冲突,优先级如下:

benchmark > suite(官网例子就是去掉测试号的benchmark,比如bzip2,虽然指定benchmark是401.bzip2) > tune > extension

MD5部分:  (用于校验编译好的specCPU测试的二进制是不是和cfg的值匹配,不匹配应该要重新编译)这部分不用管,测试的时候会自动更新进去的。

其他

要跑好specCPU其实最主要还是对cpu以及编译器的细节要熟悉,才知道调整哪些编译选项是有用的,所以一般都是找CPU厂商 提供cfg,实际自己跑一跑就是了,最多优化下内存,比如双通道,或者BIOS放开了内存的参数调整,可以细调下内存参数。

如果对gcc优化参数不了解,会出现跑不过的情况,反正我目前遇到是不加优化参数gcc测试都跑不过,借鉴别人的cfg,浮点部分有一个benchmark,base跑不过(编译通过但运行的时候直接报非0错误退出)但peak反而跑过了。很是费解,要学习的东西太多了。

以上内容是自己测着玩的笔记,后面遇到有新的东西再做补充。

Invalid run 状态

跑完后报告Invalid run 状态,他会在报告里面说明是啥原因,只需要查看报告Errors部分就行。

最主要的原因就是,缺少关于编译器使用的参数有效的flags xml描述文件。

在配置文件里可以用如下参数补充:

flagsurl0     = config/flags/Example-gcc4x-flags-revA.xml
flagsurl1     = config/flags/Example-linux-platform-revA.xml

但是最主要的是要检查两个xml文件的内容描述是否覆盖了编译器使用的参数。因为官方的目标是,让你公开尽可能多的细节,以便让别人也能理解你的测试结果,所以,如果你使用了什么编译器参数,需要描述清楚,让别人阅读你测试报告的人也能理解。

flags xml 文件修改

在specCPU 2006 1.2版本里面,flags xml 被分离成两个单独的xml文件,一个描述系统平台相关,一个描述编译器参数相关。

对有些参数的描述,不是好确定是属于系统配置描述还是编译参数描述。可以放在任意文件里面。

关于描述系统相关的xml,好像可以增加一些系统相关信息,比如BIOS配置,系统sysctl参数 ulimit,内存页面等相关的说明。从测试报告看,暂时还没出现因为系统描述不完整出现invalid run的情况,所以,如果不是要向spec官网提供测试报告,可以不用管。

关于编译器的参数描述,必须要在flags xml文件里面找到对应的描述。所以需要在这个文件里面增加参数的说明。格式可以参考官网:

Flag Description Files SPEC CPU2006http://www.spec.org/cpu2006/Docs/flag-description.html#ElementOrderxml的文件结构大致如下:

 其中每个xml必须要有的部分

  • 文件名
  • 标题

具体的,其实可以打开config/flags/Example-gcc4x-flags-revA.xml这个示例查看,如果我们要自己写一个描述文件,可以复制一份修改,这个文件是描述编译参数的。可以看到前面的文件名,标题,style,都是有的。

关于 <![CDATA[  xxxxxxxxxxxxxxxxx ]]>标记说明,这是用来让xml里面包含html带<>的标记的比如<p>xxx</p>之类

主要需要在文件增加如下flag部分格式的内容:

<flag name="F-Wno-write-strings"
      class="optimization"
      regexp="-Wno-write-strings">
<![CDATA[
<p>Supported values for this flag are</p>
]]>
</flag>
<flag name="F-123"
      class="optimization"
      regexp="-fprefetch-loop-arrays">
<![CDATA[
<p>Supported values for this flag are</p>
]]>
</flag>

用于说明编译器参数的含义。上面两段内容增加了2个参数说明,-Wno-write-strings  -fprefetch-loop-arrays

关于每一段flag内容的含义,主要包含三个部分 name class regexp 

name是为参数说明起名,但名字本身命名还可能推断出regexp部分的内容。这个和regexp正则表达式部分有点关系。

class 有7个类,截图如下,具体放那个class根据具体情况写了。反正绝大部分都是优化class

regexp 正则表达式,这个貌似是perl的正则表达式,如何写的规则先看官网的吧,一般参数就按实际参数原封不动放进去就好了。单对某些有特殊符号的参数还是需要正则表达式来过滤匹配的。

如果name的名字是F- xxx开头,那么可以不写regexp,他默认根据name推断参数就是-xxx,当然也可以像我第二段起名叫F-123,然后写好regexp。

比如有个参数-march=armv8-a+crc+fp+crypto ,直接把这部分放到regexp后面是不行的,=在里面不是字符是特殊含义了。最终我简单研究了下,用-march(?:=\S*) 匹配-march=开头的任意参数了。我的测试只有这个-march=开头的参数,所以无所谓,但如果有多个-march=开头的参数,那么需要单独写匹配。复杂的还是需要稍微花时间看看官网参数如何运用正则表达式。

写完后,可以使用specCPU提供的工具来检查格式和是否有重复描述。

specrxp -s -V ../config/flags/test-gcc931.xml

如果都没问题,那么可以使用这个xml来重新格式化已经跑完的结果。

rawformat --flagsurl ../config/flags/test-gcc931.xml ./CINT2006.063.ref.rsf

这样,会重新生成html或者PDF等测试报告。

XML的其余部分,用到的时候再做记录吧,目前我主要目的就是让他跑出来不要有Invalid run水印了。

配置文件变量,宏以及 FDO优化

配置文件中可用的变量比如CC, CPORTABILITY OPTIMIZE等等,可以参考官网:

makevars (CPU2006)https://www.spec.org/cpu2006/Docs/makevars.html或者在speccpu的安装目录下也有相同的html页面说明,如果有不清楚某个变量是什么意义,可以查询这个文档,有比较详细的说明。

对于加在配置文件编译变量或者说可移植性参数部分的宏比如-DSPEC_CPU_LINUX ,-DSPEC_CPU_LP64这些 ,最开始我确实是不知道这些参数干嘛用的,后面查询了下,才明白,主要是用于让spec实际的测试代码具有可移植性的,因为speccpu一套代码要适应win linux aix solaris 操作系统,还要适应x86 amd64,power,arm64等各种不同类型的CPU,必须要配置对应的宏,来适应不同的硬件软件组合,实际上,这些宏都有对应的flag.xml进行说明的,可以参考官网

Index of /auto/cpu2006/flagshttps://www.spec.org/auto/cpu2006/flags/这个目录下的flags说明文件。或者其实在speccpu目录下grep -r DSPEC_CPU_LINUX 这样区搜,业能搜出来针对这些宏开关的说明的。所以实际上需要我们针对具体的操作系统和CPU来确定配置什么样的宏开关让代码正常且最优运行。

比如下面:

-DSPEC_CPU_LP64   整数部分是32位,长整型以及指针式64位。
https://www.spec.org/auto/cpu2006/flags/400.perlbench.flags.html#b400.perlbench_DSPEC_CPU_LP64

-DSPEC_CPU_LINUX  编译的代码是在Linux上执行
https://www.spec.org/auto/cpu2006/flags/400.perlbench.flags.html#b400.perlbench_DSPEC_CPU_LINUX

可以看出,这些开关都是对CPU或者操作系统类型以及特性做说明。

对gcc的可用参数,直接参考官网就好,比如:

Option Summary (Using the GNU Compiler Collection (GCC))Option Summary (Using the GNU Compiler Collection (GCC))https://gcc.gnu.org/onlinedocs/gcc-8.5.0/gcc/Option-Summary.html#Option-Summary关于GCC的FDO基于反馈的导向优化,需要开启的话直接在配置文件中写PASSn_CFLAGS之类的变量,speccpu运行的时候就会使用FDO来优化程序了,大概过程就是先使用插入指令的方式编译程序,然后使用speccpu提供的负载数据来跑(这些负载貌似还不允许人为去更改),然后根据跑的结果再重新编译程序,以提高被测spec程序的测试性能。具体可以参考:

Config files - SPEC CPU2006https://www.spec.org/cpu2006/docs/config.html#sectionVI官网的说明,关于gcc的FDO优化,估计要深入研究就比较复杂了,看来所谓的调优真的是永无止境啊,对硬件特性以及编译器要很了解,并且要做大量实验才能取得比较好的效果。

这里照抄一段别人的specCPU的FDO参数:

default=peak:
PASS1_CFLAGS     =  -fprofile-generate 
PASS2_CFLAGS     =  -fprofile-use 
PASS1_CXXFLAGS   =  -fprofile-generate 
PASS2_CXXFLAGS   =  -fprofile-use 
PASS1_FFLAGS     =  -fprofile-generate 
PASS2_FFLAGS     =  -fprofile-use
PASS1_LDFLAGS   =  -fprofile-generate 
PASS2_LDFLAGS   =  -fprofile-use 

应该有少量提升。

gcc 官网关于优化参数的参考文档,除了profile-generate profile-use,还有什么auto-profile,有空再看吧。

Optimize Options (Using the GNU Compiler Collection (GCC))Optimize Options (Using the GNU Compiler Collection (GCC))https://gcc.gnu.org/onlinedocs/gcc-8.5.0/gcc/Optimize-Options.html#Optimize-Options

其他的关于FDO,简单了解可以参考一些别人的文章看看效果,比如

A Fresh Look At The PGO Performance With GCC 8 (Profile Guided Optimizations) - Phoronixhttps://www.phoronix.com/review/gcc-82-pgo/2

更多相关推荐


云服务器怎么开发?

发布时间:2022-10-28 域名 云服务器开发 服务器
云服务器如今被各大企业和站长应用于自己的网站上,但是很多人并不知道云服务器的开发过程,比如:怎么进行云服务器开发?服务器开发的步骤复杂吗?事实上,云服务器的开发需要严格精细的操作,以下是一些详细的知识介绍。1、云服务器数据采集在云服务器上建立一个接收处理程序,这个接收处理程序有多种形式,只要能够提供接收数据的连接即可。通常我们可以使用以下方式:①TCP服务:创建socket-》绑定端口-》list...

hadoop集群安装(二):克隆服务器集群并免密

发布时间:2022-11-23 大数据 HADOOP HADOOP安装 服务器
说明已上篇创建模型虚拟机为基础构建hadoop集群分享大数据博客列表开发记录汇总个人java工具库项目https://gitee.com/wangzonghui/object-tool包含json、string、集合、excel、zip压缩、pdf、bytes、http等多种工具,欢迎使用。集群构建集群规划vmware克隆模型服务器,克隆步骤参照vmware虚拟机克隆,创建3台子服务器,主机名分别...

JDBC事务管理

发布时间:2012-08-27 JAVA和SOA 运维 JAVA 设计模式
好吧,我承认,我蛋疼了。真的很疼很疼。。。。。公司的项目不许用ssh,也不许用ssi... 1&gt;好吧。。action写个调度还是比较easy的..用了三天把调度了,采用的是struts2的思想,一个reuquest一个实例,不过没有为action产生代理。。这个我想也没啥好蛋疼的。。 2&gt;连结池采用的是c3po,自己写连接池管理器。。 3&gt;也就是今天碰到的问题:事务..... 加...

2.3 rk平台DRM驱动一些理解

发布时间:2022-09-05 PX30/RK3358 LINUX
文章目录写在前面DRM驱动路径写在前面其实写这个是因为工作中遇到了要在rklinux平台上的应用程序要使用fb的方式去画图,但是底层驱动是使用DRM框架实现的,因为刚开始接触DRM驱动,在这里走了一些弯路,我这边的现象是,本来就有一个Qlauncher的QT程序,我把这个程序杀掉之后,我的fb程序就map失败了,然后写了一个drm的测试程序,这个程序运行之后,fb程序就正常了,一直在想为什么DRM...

linux下搭建svn版本控制软件

发布时间:2018-03-29 运维 GIT 操作系统
  svn作为曾经流行的版本控制控制软件,它优异的版本控制功能在有意无意间已经深入IT人的工作了。然而虽然有后起之秀的git,但现在使用svn的项目并不在少数。最近有个项目需要协同开发,由于对svn用得比较熟悉,因此也就采用svn来做版本管理。下面来看看如何使用安装和使用svn吧。  环境:    版本管理服务器:Linuxversion2.6.18-308.el5    客户端:win7  一、...

Jenkins的安装设置

发布时间:2015-04-01 JAVA 运维
sudowget-O/etc/yum.repos.d/jenkins.repohttp://pkg.jenkins-ci.org/redhat/jenkins.reposudorpm--importhttp://pkg.jenkins-ci.org/redhat/jenkins-ci.org.keyyuminstalljenkins安装完成后,默认的端口是8080,修改端口/etc/sysconf...

windows2008 设置多人同时远程账户

发布时间:2021-07-02 运维
windows2008设置多人同时远程账户添加账户控制面板-用户账户-管理其他账户远程桌面设置,选择刚刚创建的账户控制面板-系统-远程设置-选择用户设置组策略,规定远程的人数上限键盘【wind+r】,输入:gpedit.msc,调出组策略进入:计算机配置-管理模板-Windows组件-终端服务-终端服务器-连接修改允许的TS最大连接数**注意:开始-程序-管理工具-终端服务-终端服务配置,修改【限...

centos7创建用户并授权

发布时间:2018-10-30 LINUX
用户相关文件#用户列表文件/etc/passwd#用户组列表文件/etc/group 1创建用户adduserking2.添加组groupaddking3.用户修改组usermod-Gkingking#groupnameusername4.修改密码passwdking5.通过root账号赋权,修改/etc/sudoers添加下面语句[用户名]ALL=(ALL)ALL  ...

贯穿BPS始终的对象

发布时间:2010-06-17 活动 产品 服务器 工作 任务 工作流 引擎
在使用BPS产品的过程中,无论是开发者在BPSStudio中定义业务流程,还是BPS流程引擎控制流程流转,或是流程参与者使用"客户端",或管理员使用BPS流程管理监控台,在这期间都会贯穿BPS的5个主要对象------业务流程(流程定义)、活动定义、流程实例、活动实例,以及工作项。在了解BPS各部分所包含的概念前,应首先熟识这5个贯穿BPS始终的对象。业务流程也称流程定义。描述一个完整的业务过程,...

git版本控制系统入门

发布时间:2020-08-28 路径表达式 LINUX GIT
git版本控制系统入门花了小半个月的时间学习的,下面根据我用的时候遇到的问题来一步步探索这个软件。git官网的教程挺好的,我就是看的这个,下面都是我的总结,作为大家的参考什么是git?git就是一个软件而已,他的功能可以用一个例子来说,当用word写一个小论文的时候,比如周四你写完了,把他保存。周五你打算检查一遍上交,发现内容还可以改改,你又花了一天时间改。到了周六,你打算上交,突然又觉得还是周四...

Kafka开发环境搭建

发布时间:2022-11-25 运维 LINUX KAFKA # KAFKA 服务器 后端
一、安装Java环境1.1、下载Linux下的安装包(1)登录官网下载地址https://www.oracle.com/java/technologies/downloads/#java8,找到对应压缩包。(2)点击下载链接弹出如下窗口,勾选协议,继续点击下载链接。(3)需要登录账户。如果已经有账户则直接登录;没有就需要注册一个账户。登录账户后就可以直接下载了。1.2、解压缩安装包tar-zxvf...

【计算机网络】【链路层和局域网-3】

发布时间:2022-11-24 网络 服务器
小白笔记本节学习LANsMAC地址和ARP(地址解析协议(ARP))实际上并不是主机或路由器具有链路层地址,而是它们的适配器(即网络接口)具有链路层地址。·32bitIP地址:  ·网络层地址  ·用于使数据报到达目的IP子网,而n-1跳  ·从而到达子网中的目标节点:最后一跳ARP协议是完成IP地址到mac地址的自动转换·LAN(MAC/物理/以太网)地址:  ·用于使帧从一个网卡传递到与其物理...

linux SVN 安装配置

发布时间:2017-07-17 运维 操作系统 数据库
svn服务器有2种运行方式1.独立服务器(例如:svn://xxx.com/xxx);2.借助apache。(例如:http://svn.xxx.com/xxx);为了不依赖apache,选择第一种方式-独立的svn服务器。svn存储版本数据也有2种方式:1.bdb;2.fsfs。因为BDB方式在服务器中断时,有可能锁住数据(搞ldap时就深受其害,没法根治),所以还是FSFS方式更安全一点,我也...

安装mysql,在./configure时出现错误:error: No curses/termcap library found的解决办法

发布时间:2015-04-24 运维 数据库
mysql版本:5.1.30 已经不记得这次是第几次安装mysql了,遇到这个问题倒是第一次。之前在tar,./configure,make,makeinstall经典四步时,从来没有想过其中的过程,只觉得像例行公事一样,做就是了。不幸的是,这次在./configure后,make时出现以下错误:make:***Notargetsspecifiedandnomakefilefound.stop. ...

wsl kali 安装 中文 输入法

发布时间:2022-11-25 排错 LINUX 笔记
wslkali安装输入法总是有一些奇奇怪怪的需求,又不想将就,就产生了该文。图片及文字均来自参考文档,简单缝合一下,以备系统奔溃,重新来过。输入法安装参考:wsl2官方gui安装IDEA踩坑记录输入法使用参考:kali安装中文中文输入法(一遍成功无错误)安装fcitxsudoaptinstallfcitxdbus-x11im-configfcitx-sunpinyin编辑/etc/locale.g...

物理层知识点

发布时间:2022-07-09 计算机网络 网络 服务器 人工智能
通信基础数据是传送信息的实体信号则是数据的电气或电磁表现,是数据在传输过程中的表现形式模拟信号:连续变化的信号数字信号:取值仅允许为有限的几个离散数值的信号数据传输方式:串行传输:远距离,按时间顺序传输并行传输:多条信道同时传输码元是指用一个固定时长的信号波形表示一位k进制数字,代表不同离散数值的基本波形,是数字通信中数字信号的计量单位信源是产生和发送数据的源头新宿是接收数据的终点信道是信号的传输...

【centos7查看cpu是几核】

发布时间:2022-11-12 LINUX 常用LINUX命令学习
一、物理cpu个数、核数、逻辑cpu数的概念1.物理cpu数:主板上实际插入的cpu数量,可以数不重复的physicalid有几个(physicalid)2.cpu核数:单块CPU上面能处理数据的芯片组的数量,如双核、四核等(cpucores)3.逻辑cpu数:一般情况下,逻辑cpu=物理CPU个数×每颗核数,如果不相等的话,则表示服务器的CPU支持超线程技术(HT:简单来说,它可使处理器中的1颗...

Linux Command htpasswd 创建密码文件

发布时间:2022-11-25 命令 运维 LINUX COMMAND 服务器
LinuxCommandhtpasswd创建密码文件1.简介htpasswd是Apache的Web服务器内置的工具,用于创建和更新储存用户名和用户基本认证的密码文件。2.安装centos7、redhat:yum-yinstallhttpd-toolsfedora:dnf-yinstallhttpd-toolsubuntu:apt-get-yinstallhttpd-tools3.语法htpassw...

使用反射操作channel

发布时间:2022-11-16 数据库 SQL 服务器 JAVA 前端
今年教师节极客时间送给讲师4999SVIP卡,一直没顾过来用,上周激活后在极客时间的众多精品课和专栏中徜徉,收获颇丰。尤其是在拜读鸟窝老师的《Go并发编程实战课》[1] 后,get到一个以前从未用过的“技能点”:使用reflect操作channel,这里整理一下,把它分享给大家。1.channel常规语法的“限制”Go语言实现了基于CSP(CommunicatingSequentialProces...

ubuntu 16.04 samba服务器快速配置

发布时间:2017-07-27 运维 服务器 UBUNTU
1、安装sambasudo apt-get install samba samba-common2、备份配置文件sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak3、建立共享目录mkdir/home/share添加权限sudochmod-Ra+rwx/home/share3、添加samba用户添加用户:sudouseraddsmbuser设置密码...

MHA 手动故障转移

发布时间:2015-04-23 运维 数据库
       MHA提供了3种方式用于实现故障转移,分别自动故障转移,需要启用MHA监控;在无监控的情况下的手动故障转移以及基于在线手动切换。三种方式可以应对MySQL主从故障的任意场景。本文主要描述在无监控的情形是手动实现故障转移。供大家参考。     有关MHA的其他两种切换方式,可以参考:           MHA在线切换过程           MHA自动故障转移步骤及过程剖析 1、手动...

Jenkins02:Jenkins+maven+svn集成

发布时间:2018-05-17 JAVA 运维 操作系统
1、安装Maven并配置环境变量          下载maven(windows下载zip包,linux下载tar.gz包),然后配置环境变量          在项目中使用maven,可以从java中央仓库中获取到项目所依赖的jar包,才能完成项目的部署。1.1Linux配置环境变量内容exportMAVEN_HOME=/usr/local/apache-maven-3.5.3 --选择自己正...

linux安装二

发布时间:2007-06-01 网络 LINUX INTERFACE 工作 虚拟机 DEBIAN
选择“是”之后会建立分区表,然后等待分区。如果是在已经存在分区的硬盘上安装,在这里应该会看到目前硬盘的分区情况。因为是新建的分区表,所以硬盘上还没有分区。在已经存在FAT32分区的硬盘上真实安装系统的时候是不会看到这个画面的。为了控制分区过程还是选择手工“创建新分区”。在这里填写要分割的分区的大小,这个要根据个人情况。但是如果需要安装图形系统的话,分区大小应该不小于2G,否则会给日后的使用带来麻烦...

RHCSA第五天

发布时间:2022-08-28 CENTOS LINUX 服务器
  装包命令练习1、RPM软件管理1)通过rpm安装vsftpd软件。rpm-ivhvsftpd-3.0.5-150400.1.6.x86_64.rpm2)查询vsftpd软件包的信息。rpm-qivsftpd3)卸载软件包vsftpd。rpm-evhvsftpd2、YUM软件管理1)挂载本地光盘,配置yum源为rhel8.repo。cd  /etc/yum.repos.d        vim ...

CentOS 6 / 7 防火墙?让我进去!

发布时间:2020-03-20 CENTOS LINUX FIREWALL
CentOS6/7防火墙?让我进去!Linux常用防火墙有2种。CentOS7.x及以后默认防火墙是firewall。CentOS6.x及以前默认防火墙是iptables。先来谈谈CentOS6/7的服务管理。CentOS6。通过RPM安装的程序可以通过service命令管理(开启或关闭)。/etc/init.d/独立服务名start|stop|status|restart/etc/init.d/...

linux iptables 防火墙简介

发布时间:2019-04-18 LINUX IPTABLES
   iptables防火墙简介Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的安全自由的基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入和流出服务器的数据包进行很精细的控制。特别是它可以在一台非常低的硬件配置下跑的非常好Iptables是Linux2.4及2.6内核中集成的服务。提供近400人的上网服务丝毫不逊色...

centos5 下 lighttpd的安装

发布时间:2013-03-28 LINUX
接到任务安装配置一个lighttpd在网上搜到的大多不能用,于是自己试试按照自己安装的方式写一个,由于对直接安装的./configure的参数不熟悉,就准备采用最简单的yum方法找了几个yum源都不好用 下面是我自己试验的最好用的一个 如果你是64位的系统:wgethttp://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2...

Linux:用户组和权限管理

发布时间:2018-07-28 创建用户 LINUX 权限
linux用户和组管理及权限管理useradd命令添加用户时使用的参数-g设置主组,-G设置基本组,-s这种默认shell,-M不创建家目录等内容。熟悉rwx权限分别应用在文件和目录上的意义,八进制数子表示权限。理解什么情况下需要设置特殊权限suid、sgid、sticky、acl。1、useradd命令:在系统中添加用户【例1】添加一个用户名称为:dushan[root@centos7~]#us...

Mysql多实例安装

发布时间:2019-03-06 运维 PYTHON 数据库
2019独角兽企业重金招聘Python工程师标准&gt;&gt;&gt;参考文档:https://www.cnblogs.com/xuchenliang/p/6843990.html1.部署环境:Centos6.9,Mysql5.62.解压迁移mkdir/usr/local/mysqltar-xvfmysql-5.6.21-linux-glibc2.5-x86_64.tar.gzmvmysql-5...

07年下半年技术学习计划

发布时间:2007-07-01 网络 数据库 EJB 服务器 SERVLET JAVA
  今天正好是7月1号,制定一下下半年的技术学习计划。  下半年的技术学习还是以JAVA知识学习为主,辅以服务器知识、网络知识、数据库知识。以上这些学习下半年的计划是以增加实战经验为主。 JAVA学习按排: A、7.1-7.31:servletspecification研究; B、8.1-8.31:EJBspecification研究; C、9.1-9.30:结合以上两项研究心得对一些开源项目的源...

使用 GDB 调试 uCLinux 内核

发布时间:2008-01-21 DEBUGGING INCLUDE LINUX DOWNLOAD WINDOWS SIGNAL
2007-12-2509:33:44慢慢的大家的uClinux都可以跑起来了,也能够自己编译一个内核出来了。但是,如果自己要写驱动、或者修改内核的一些代码、或者像nickmit一样要自己写一个内核的移植,那么调试就是不可或缺的了。在这里我摸索了一个使用我们廉价的Wiggler+GDB+OCDLibremote来调试内核的方法。关于Wiggler和GDB在这里我就不介绍了,说一下Cygwin和OCD...

遇到的linux问题汇集

发布时间:2011-07-11 SHELL 运维 操作系统
A.umask   1.作用   umask设置用户文件和目录的文件创建缺省屏蔽值,若将此命令放入profile文件,就可控制该用户后续所建文件的存取许可。它告诉系统在创建文件时不给谁存取许可。使用权限是所有用户。   2.格式   umask[-p][-S][mode]   3.参数   -S:确定当前的umask设置。   -p:修改umask设置。   [mode]:修改数值。   4.说明...

twitterfeed

发布时间:2011-09-24 运维
今天用上vpn,速度感觉上比ssh好,总算可以无忧无虑了,用上了twitterfeed以我的blog为数据源,向外辐射...

FastDFS安装部署

发布时间:2022-10-18 LINUX PERL 服务器
1.1安装libfastcommon由于我的centOS7是最小化安装,我里面没有安装zip解压。先安装:yum-yinstallunzipzip用yum安装gcc:yum-yinstallgcc-c++安装成功后解压libfastcommon-master.zipunziplibfastcommon-master.zip进入我们刚刚解压的目录:cdlibfastcommon-master编译li...

docker

发布时间:2022-10-20 DOCKER LINUX 容器 运维
1.Docker简介Docker是一个开源的容器引擎,它可以帮助我们更快地交付应用。Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用Docker,可更快地打包、测试以及部署应用程序,并可减少从编写到部署运行代码的周期。Docker官方网站:https://www.docker.com/1.1、Docker版本1、DockerEE(企业版)DockerEE由公司支...

Linux下安装mysql数据库完整教程

发布时间:2019-01-27 服务器 数据库
1.查看系统是否安装了mysql软件#rpm-qa|grep-imysql2.将已经安装过的软件卸载掉。注意:这样的卸载是不彻底,不过这里够用了#yumremove'软件名'3.CentOS7的yum源中默认是没有mysql的。所以,为了解决这个问题我们首先下载安装mysql的repo源。#wgethttp://repo.mysql.com//mysql57-community-release-e...

【安装Ubuntu18.04遇到的问题】未找到WIFI适配器

发布时间:2022-11-24 适配器模式 LINUX UBUNTU
  大家好,我是小政。好久没有更新文章,近期开始陆续分享一些研究生阶段正在学习的知识和遇到的一些问题。1.Ubuntu18.04  研究生第一学期选修了一门视觉SLAM课程,该课程配备的书籍是高翔编写的《视觉SLAM十四讲》,书中的例题代码是基于Ubuntu18.04系统下进行编写,所以我通过查找博客下载并安装了Ubuntu系统。这里提供给大家两个博客:安装Ubuntu系统:Ubuntu18.04...

iwconfig的用法(转)

发布时间:2016-07-15 计算机网络 LINUX
1.打开无线网卡电源iwconfigwlan0txpoweron2.列出区域内的无线网络iwlistwlan0scan3.假设要连接到网络MyHome(即essid为MyHome的网络),那么输入命令iwconfigwlan0essid“MyHome” 如果网络是加密的,密码是0123456789,那么就输入命令iwconfigwlan0essid“MyHome”key0123-4567-894....

linux 中文显示乱码解决办法

发布时间:2009-07-22 SSH LINUX LINUX学习
#vi/etc/sysconfig/i18n将内容改为LANG="zh_CN.GB18030"LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"SYSFONT="lat0-sun16"这样中文在SSH,telnet终端就可以正常显示了。...

CRON表达式

发布时间:2022-11-22 JAVA 分布式 LINUX
**1、主要解释CRON表达式是有不同字符组成的,用来表达时间的一种定时形式.主要从在执行各种定时任务中.可以在服务器端使用.或者在分布式调度器Xxljob中使用.2、组成2.1表达式一般由6个或者7个域组成.以空格分隔.2.2从左到右分别为秒分时年月份中的日期月份星期中的日期年份3每个域可使用值域允许数字允许字符秒0-59,-*/分0-59,-*/小时0-23,-*/月份中的日期0-31(注意具...

【WINDOWS / DOS 批处理】for命令详解(六)

发布时间:2022-10-19 运维 WINDOWS WINDOW MICROSOFT 服务器
 for命令详解(一)【共十篇】   for命令详解(二)【共十篇】 for命令详解(三)【共十篇】 for命令详解(四)【共十篇】 for命令详解(五)【共十篇】       for命令详解(六)【共十篇】 for命令详解(七)【共十篇】   for命令详解(八)【共十篇】  for命令详解(九)【共十篇】   for命令详解(十)【共十篇】 【格式六】     【注意】DO后面必须存在空白,即...

2021-12-5 Servlet day3(HttpServletRequest)

发布时间:2021-12-06 JAVA WEB 服务器
一、HttpServletRequest类Tomcat服务器会把请求过来的HTTP协议信息解析封装到Request对象中,然后传递到service方法(doGet,doPost)中给我们使用常用方法getRequestURI()获取请求的资源路径getRequestURL()获取请求的统一资源定位符(绝对路径)getRemoteHost()获取客户端的ip地址getHeader()获取请求头get...

Linux rpm 命令参数使用详解[介绍和应用]

发布时间:2013-05-08 运维 PYTHON 数据库
 RPM是RedHatPackageManager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序” rpm执行安装包二进制包(Binary)以及源代码包(Source)两种。二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译、安装。源代码包经常以src.rpm作为后缀名。常用命令组合:-ivh:安装显示安装进度--install--verbose--hash-U...

Awstats实现站点信息统计

发布时间:2013-04-03 LINUX
Awstats是一个免费非常简洁而且强大有个性的统计工具。它可以统计您站点的如下信息: 一:访问量,访问次数,页面浏览量,点击数,数据流量等 二:精确到每月、每日、每小时的数据 三:访问者国家 四:访问者IP 五:Robots/Spiders的统计 六:纺客持续时间 七:对不同Filestype的统计信息 八:Pages-URL的统计 九:访客操作系统浏览器等信息 十:其它信息(搜索关键字等等) ...

产品运行所需的信息检索失败.请重新安装Xshell.

发布时间:2022-07-16 大数据 运维
###产品运行所需的信息检索失败。请重新安装xshell很久没有应用Xshell进行远程服务器连接了,由于需要应用远程云计算资源,因此有需要使用这个软件,但是在今天的使用过程中出现了问题:打开Xshell之后,找到可执行文件之后,点击运行/管理员运行,都无法成功启动,且报错:“产品运行所需的信息检索失败。请重新安装xshell”对应软件打包zip压缩包在我上传的资源里面可以找到:本来应该是点击上面...

Linux安装Zookeeper

发布时间:2017-09-03 ZOOKEEPER LINUX XSHELL
1、修改了系统主机映射vi/etc/hosts,添加了一个映射192.168.135.130(我本机IP)  server-provider-01 2、解压zookeeper压缩包tar-xvf **.tar.gz -C 解压到的路径 3、在zookeeper目录下,新建zkdata和zkdatalog两个目录,分别用来存放zookeeper数据和日志然后进入zookeeper/conf,将zoo...

Jenkins 语言设置

发布时间:2022-09-13 JENKINS 运维
LocaleUsageLocale官网地址:LocalePipeline这个插件控制Jenkins的语言。通常,如果首选语言的翻译可用,Jenkins会尊重浏览器的语言首选项,并在构建期间使用系统默认语言环境来获取消息。该插件允许您:将系统默认语言环境覆盖为您选择的语言完全忽略浏览器的语言偏好此功能有时对多语言环境很方便。Usage在ManageJenkins&gt;ConfigureSystem...