CentOS对XFS磁盘进行配额

1. 安装quota软件

若没有xfs_quota命令,则安装quota软件:

dnf install quota

2. 关闭SeLinux安全机制

临时关闭
setenforce 0

永久关闭
perl -p -i -e 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

3. 挂载磁盘时添加配额参数

mount -o remount,usrquota,grpquota /dev/sdb1 /home

或修改 /etc/fstab 文件永久生效(需要重新挂载目标分区才能生效):

/dev/sdb1 /home xfs defaults,usrquota,grpquota 0 0

然后使用mount命令查看挂载分区是否支持磁盘配额:

mount | grep home
/dev/sdb1 on /home type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota)

4. 开机时设置配额参数

虽然添加了挂载参数,使用mount命令检测时,其挂载方式依然是noquota。在使用xfs_quota进行配额时会失败,提示:

xfs_quota: cannot set limits: Function not implemented

此时,需要进行开机的配置设置,修改启动配置文件/etc/default/grub内容如下:

GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos/root crashkernel=auto  vconsole.keymap=us rhgb quiet rootflags=uquota,pquota"
主要添加了rootflags=uquota,pquota参数。

然后,重新生成启动文件:

对于Legacy启动
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.orig
grub2-mkconfig -o /boot/grub2/grub.cfg

对于UEFI启动
cp /boot/efi/EFI/centos/grub.cfg /boot/efi/EFI/centos/grub.cfg.orig
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

然后重启后,再检测mount参数。

5. 使用xfs_quota命令对分区进行配额

对user01用户的/home分区进行配额。软限制为3G,硬限制为3.5G。

xfs_quota -x -c 'limit bsoft=3000m bhard=3500m user01' /home
xfs_quota -x -c report /home

-x 允许执行管理员指令
-c 输入执行的指令

6. 使用xfs_quota命令对目录进行配额

对user01、user02、user03等多个用户的家目录进行配额。软限制为3G,硬限制为3.5G。按如下步骤进行:

第一步,生成/etc/projects文件
echo "1000:/home/user01
1000:/home/user02
1002:/home/user03" > /etc/projects
以上/etc/projects文件中设置了两个project编号。project编号是一个数字,可以随便给一个。其中1000对应两个文件夹,1002对应一个文件夹。后续设置好后,这1000对应的两个文件夹一起共享一个配额,而1002对应的文件夹独享一个配额。

第二步,生成/etc/projid文件
echo "user01_3G:1000
user03_3G:1002" > /etc/projid
该/etc/projid文件设置一个好记的project名称(随便取名,推荐取得有意义些),对应这project编号。

第三步,让project名称生效
xfs_quota -x -c 'project -s user01_3G' /home
xfs_quota -x -c 'project -s user03_3G' /home
命令行project的参数-s表示读取/etc/projects文件内容,标记目标文件夹进行配额。每当对/etc/projects文件内容进行修改后,则需要重新运行相应的命令,使修改生效。

第四步,设置project名称对应的磁盘配额。
xfs_quota -x -c 'limit -p bsoft=3000m bhard=3500m user01_3G' /home
xfs_quota -x -c 'limit -p bsoft=3000m bhard=3500m user03_3G' /home
命令行limit的参数-p表示使用project方式进行配额。若配额限制为0,则表示不进行配额限制。

7. 查看配额信息

查看磁盘配额及使用量:

xfs_quota -x -c report /home

查看磁盘分区和目录是否有quota设置:

xfs_quota -x -c print

查看磁盘配额的使用量:

xfs_quota -x -c “df -h”

Windows10激活

在新安装的Windows10专业版系统中,按Windows+x,再按a,可以打开管理员Windows PowerShell界面,输入如下命令来导入密钥并激活Windows10专业版系统。

slmgr.vbs /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX
slmgr.vbs /skms zh.us.to
slmgr.vbs /ato

以上命令能导入产品密钥,设置KMS服务器IP地址,并进行在线激活(联网状态下需要等待约一分钟)。然后使用如下命令检测激活状态。

slmgr.vbs -xpr
slmgr.vbs -dli
slmgr.vbs -dlv

清除产品密钥信息操作为:

slmgr.vbs -cpky

此外,若用于激活的域名并能正常连接,可以使用其他域名:

zh.us.to
kms.03k.org
kms.chinancce.com
kms.shuax.com
kms.dwhd.org
kms.luody.info
kms.digiboy.ir
kms.lotro.cc
ss.yechiu.xin
www.zgbs.cc
cy2617.jios.org

三阶魔方玩法

我在以下内容中记录了我学习的三阶魔方复原方法。按照该方法学习复原三阶魔方是比较简单且成功率很高的。特别是在有人直接教的情况下,10分钟就可以学会,30分钟可以成功完全靠自己恢复三阶魔方。当然,魔方的复原方法有多种,以下应该是学习起来最简单的方法了。

学习三阶魔方复原方法前,先了解一点相关常识和术语:

1. 三阶魔方有6面3层:顶面、底面和4个侧面;上中下三层,顶层,中间层和底层。
2. 每面包含9个色块:其中有1个位于最中心的,称为中心块;在4个位于角落上的,称为角块;其余4个位于边的中间,称为棱块。
3. 魔方6个面:双手拿起魔方,一面正对自己胸口,称为正面(F);一面位于左手边,称为左面(L);一面位于右手边,称为右面(R)。这3个面是我们眼睛经常能看到的面,是最重要的3个面。对这3个面进行操作,我们其实就是操纵了所有的6个面。此外,还有上/顶面(U)、下/底面(D)和背面(B)。
4. 魔方的旋转:需要旋转魔方,从而对魔方进行复原。对某个面的旋转有两种方向,即顺时针和逆时针。比如对F面进行顺时针旋转,其操作称为F,进行逆时针旋转,其操作称为F'。同理,L表示对左面进行顺时针旋转,L'表示对左面逆时针旋转;R表示对右面进行顺时针旋转,R'对右面进行逆时针旋转;U表示对上面进行顺时针旋转,U'对上面进行逆时针旋转;D表示对下面进行顺时针旋转,D'对下面进行逆时针旋转;以下教程不会对背面(B)和中间层(M)进行旋转。
5. 魔方有上中下三层。上层称为顶层,第二层称为中间层,下层称为底层。

对三阶魔方的旋转复原过程包含7个步骤:(1)底面十字;(2)底层还原;(3)二层还原;(4)顶部十字;(5)顶层还原;(6)顶角还原;(7)顶棱还原。

1. 底面十字

手持三阶魔方,本教程以白色(当然也可以选其它颜色)作为底面进行参照。首先将白色中心块所在面作为底面。然后将4个白色棱块全部旋转到顶面。然后,同步旋转中间层和底层,使正面的顶层和中间层的色块一致,然后将该正面旋转180度,让第一个白色棱块移到底部。再调整魔方方位,让顶面的一个白色棱块位于正面顶层,同步旋转中间层和底层,使正面的顶层和中间层的色块一致,然后将该正面旋转180度,让第二个白色棱块移到底部。同样的方式,将所有4个白色棱块全部移动底面。

此时,底面出现白色十字色块,同时每个白色棱块相邻侧面的底层棱块和中心块颜色一致。

2. 底层还原

经过上一个步骤后,还有4个白色角块可能没位于底面。此时查看4个白色角块位置。若某个白色角块位于顶层侧面,再查看该白色角块紧邻的另外一个顶层侧面角块的颜色,比如为绿色。我们需要将这两个角块所在的魔方颗粒(该颗粒包含3个角块)移动到最下层。此时,白色角块和绿色角块一个在左一个在右,往这两个角块中白色所在的方向旋转顶层,直到绿色角块和绿色中心块位于同一个侧面时,再继续旋转顶层90度。然后旋转绿色中心块所在的侧面90度,并使底面的白色棱块靠近目标白色角块。再反方向旋转顶层90度,此时白色棱块和目标白色角块挨到一起了,再反方向旋转绿色中心块所在的面,让白色棱块再次旋转到底面。此时,白色角块还原到底面,相邻的绿色角块还原到绿色中心块所在面的底层。

采用同样的方式将所有4个白色角块还原到底面,则底面9个色块的颜色都成了白色。此时,和4个白色相邻的底层侧面角块也和其中心块颜色一直。在第一个步骤中,底层侧面棱块和中心块颜色一致。因此,底层侧面的3个色块颜色都和其侧面中心块颜色一致。实现了底层(包含底面)还原。

若发现某个白色角块不在顶层侧面,则通过简单的旋转可以将白色角块挪到顶层侧面。这个是很简单的。然后按照上面的方法将4个白色角块还原到底面。

3. 中层还原

经过以上两个步骤后,4个侧面中的中心块和底层色块一致。此时,需要将侧面中间层的棱块还原。一个侧面中间层的棱块所在的魔方颗粒包含2个棱块,且其棱块的颜色是红、绿、蓝和橙。需要将包含这4种颜色(不能包含黄色和白色,其实主要不能包含黄色,因为白色已经全部在底面了)的魔方颗粒还原到其正确的位置。这些魔方颗粒位于两个位置:位置1,两个侧面连接处的棱块上;位置2,侧面和顶面连接处的棱块上。

将位置2处的棱块移到位置1处且还原颜色:在位置2处找到目标魔方颗粒,该颗粒上的2个棱块颜色不能包含黄色。旋转顶层,使目标颗粒侧面的棱块颜色和所在面(侧面1)的中心块颜色一致,称该位置为“位置2标准位”。再查看目标颗粒顶面的棱块颜色,该颜色必然和侧面1紧邻的侧面2(中心块代表该面的颜色)颜色相同。此时,旋转顶层90度,使目标颗粒远离侧面2,再将侧面2旋转90度,使3个白色块转到侧面且紧挨侧面1。然后,反方向旋转顶层90度,使目标颗粒回到“位置2标准位”,继续反方向旋转侧面2,使2个白色块回到底面。此时,最后一个白色角块位于顶层侧面,按照底层还原方法将白色块还原到底面,则目标颗粒有“位置2标准位”变换到位置1且进行了颜色还原。对所有位置2处的颗粒进行还原,直到中层还原为止。

当在位置2处找不到目标魔方颗粒,且中层没有完全还原。是因为未还原的目标颗粒位于位置1上。此时需要将目标颗粒由位置1挪动到位置2后,再执行上面的操作,还原它。将目标颗粒由位置1挪动到位置2的方法:先找到目标颗粒,查看其所在的两个侧面,然后旋转其中一个侧面(侧面1)90度,并使目标颗粒挪动到顶层,此时3个白色块移到了一个侧面。再旋转顶层90度,并让顶层白色角块远离侧面1。然后对侧面1反向旋转,使2个白色块还原到底面,此时1个白色角块位于顶层侧面。再按照底层还原的方法将白色角块还原到底面,此时目标魔方颗粒即可由位置1变换到位置2。

4. 顶面十字

5. 顶面还原

当顶面还原出黄色十字和仅一个黄色角块。此时变换魔方的方位,让该角块位于右下角,再看正面的顶层黄色角块位置。若该黄色角块靠近左手侧,则使用左手小鱼公式( L’ U’ L U’ L’ U’ U’ L )旋转魔方;若该黄色角块靠近右手侧,则使用右手小鱼公式( R U R’ U R U U R’ )旋转魔方。以上两个方法都可以直接还原出顶面。对小鱼公式的理解如下:

1. 其旋转方法是对顶面(Up面)旋转了4次,对一侧的左面或右面交互进行顺时针和逆时针旋转。其效果不会改变底层和下面两层的色块,能对顶面的角块进行转换,对顶面的棱块不会改变。由于主要是顶层旋转4次,且旋转方向一致,于是称为Up公式,强行翻译到中文且好听点,很多人称为小鱼公式。
2. 以右手小鱼为例:对右手面进行旋转时,先R后R',先R'后R都时可以的;对顶层旋转时,进行U和U'两个旋转方向都行;于是有4种旋转方法,但对顶层色块的改变效果是不一致的。但是为了教学和快速入门需要,规定了其中最简单的一种作为咱们的教程。为什么上面的小鱼公式是四种种最简单的一种,多练习练习和想一想,应该可以明白这4种方法的异同。

6. 顶角还原

在顶面还原后,旋转顶层,一般能让一面的顶层角块还原;然后,让之前的黄色顶面朝向自己切换为正面,让两个顶角已被还原的一面作右手面,使用公式( R’ R’ D D R’ U’ R D’ D’ R’ U R’ )旋转魔方后,再根据需要旋转顶层,即可还原4面的顶层角块。若开始时没有任何一面的顶角被还原,则执行公式一次,能让某一面的顶角还原,再执行一次,则能还原4个顶角。

7. 顶棱还原

在顶角还原后,一般情况下,有一面的顶棱和顶角都还原了;将该完全还原的一面切换为背面,将黄色面切换为顶面,将白色面切换为底面;查看正面,左面和右面的3个棱块颜色,查看这3个需要调整的棱块顺序;若是需要按顺时针方向调整顶层的3个棱块,则先执行右手小鱼公式旋转魔方,再调整魔方方向(魔方整体往左旋转90度),切换到左手小鱼起始位置(顶面出现黄色十字和一个黄色角块,黄色角块位于右下角,正面顶层一个黄色角块位于左边),执行左手小鱼公式旋转魔方,则魔方能恢复到完全还原状态;若是需要按逆时针方向调整顶层的3个棱块,则先执行左手小鱼公式旋转魔方,再调整魔方方向(魔方整体往右旋转90度),切换到右手小鱼起始位置(顶面出现黄色十字和一个黄色角块,该黄色角块位于左下角,正面顶层一个黄色角块位于右边),执行右手小鱼公式旋转魔方,则魔方能恢复到完全还原状态;此外,若顶角还原后,没有任何一面是完全还原的,则按以上方操作一遍(先左手小鱼后右手小鱼,或先右手小鱼后左手小鱼,两种方法都可以)后,则会出现一面完全还原的状态,再按以上方法操作一遍,从而实现魔方的完全还原。

CentOS8系统禁止IP访问和网络重启

CentOS8系统不再支持使用tcp_wrappers方法来禁止IP访问。tcp_wrappers方法能通过编辑/etc/hosts.allow和/etc/hosts.deny配置文件对IP禁止访问。此时,需要使用firewall-cmd命令来设置对IP的禁止访问。

1. firewall-cmd的常用方法

列出Zones,查看被激活的Zone。firewall-cmd支持配置多种不同的Zones,对应不同的网络环境。使用者能更具需求激活相应的Zone。默认设置下,被激活的Zone是public,即计算机处于public环境,防火墙非常严格。

firewall-cmd --list-all-zones
firewall-cmd --get-default-zone

查看防火墙被允许通过的服务、端口和规则。系统安装完毕后,默认仅开放了ssh服务。

firewall-cmd --list-services
firewall-cmd --list-ports
firewall-cmd --list-rich-rules

添加或删除防火墙端口。以先添加80端口,用于搭建的网站对外提供访问;添加5901-5910端口区域,用于VNCviewer远程桌面访问。

firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=5901-5910/tcp --permanent
firewall-cmd --remove-port=5901-5910/tcp --permanent
# --permanent参数让配置永久修改

firewall-cmd --reload
# --reload重载防火墙,让修改立即生效。此时不会中断用户的现有连接。

systemctl restart firewalld.service
# 也可以重启防火墙,让修改生效。但是会中断用户的现有连接。

添加或删除rules,增加或解除对IP的禁止访问。

firewall-cmd --add-rich-rule='rule family="ipv4" source address="122.205.95.116/24" reject' --permanent
firewall-cmd --add-rich-rule='rule family="ipv4" source address="122.205.95.116/24" drop' --permanent

firewall-cmd --remove-rich-rule='rule family="ipv4" source address="122.205.95.116/24" reject' --permanent
firewall-cmd --remove-rich-rule='rule family="ipv4" source address="122.205.95.116/24" drop' --permanent

firewall-cmd --reload

2. 重启网络

修改防火墙配置后,有可能有需要重启网络。

nmcli con show
# 检测当前连网的网卡

nmcli c reload eth0
# 重新载入eth0网卡

nmcli c up eth0
# 重启eth0网卡

也可以使用NetworkManager重启网络

systemctl restart NetworkManager

ifdown eth0 && ifup eth0

nmcli con down eth0 && nmcli con up eth0

安装network-scripts后,使用老版方法重启网络

dnf -y install network-scripts

systemctl restart network
/etc/init.d/network restart

对Protein序列进行InterPro注释

使用EBI的InterPro数据库,能对蛋白序列通过结构域方法进行基因家族分类注释。InterPro数据库整合了13个基因家族、结构域和功能位点的数据库,包括Pfam和CDD等。此外,InterPro也整合了跨膜区和信号肽等结构分析方法。

1. 使用EBI提供的InterPro网页工具对少量蛋白序列进行注释。

在网页工具中可以输入多条序列进行InterPro注释,但要求一次提交蛋白序列的氨基酸总数量不超过40,000。按正常一个蛋白序列的氨基酸长度约为500aa算,一次性提交最大的蛋白序列数量约为80条。因此,要对基因组层面约上万个基因进行InterPro注释,则采用命令行的方式进行计算。

2. 使用EBI提供的InterProScan 5网页API服务进行批量化InterPro注释

EBI官网提供了iprscan5.pliprscan5.py程序,可以用于将本地计算机上的fasta序列文件提交到InterProScan 5网页API服务,进行注释后,将结果返回给本地。此时,不需要在本地计算机上进行计算,只需要联网提交数据,接受结果即可。然后,可以自己编写程序对全基因组的蛋白序列进行分割,再并行化化调用iprscan5.pl程序将数据上传并进行注释。需要值得注意的是,并行化提交的任务数量要少于30。

需要注意的是,iprscan5.pl或iprscan5.py程序进行分析不再能得到svg和html结果了。若需要这两种结果,则需要本地化部署InterPro数据库和InterProScan软件进行分析。

3. 本地化部署InterPro数据库和InterProScan软件进行InterPro注释

下载InterPro数据库和InterProScan软件。当前最新版本为InterProScan 5.51-85.0,即InterProScan软件版本为5.51,数据库版本为85.0。

lftp -e 'pget -n 20 http://ftp.ebi.ac.uk/pub/software/unix/iprscan/5/5.51-85.0/interproscan-5.51-85.0-64-bit.tar.gz; exit'

使用InterProScan对全基因组蛋白序列进行注释分析:

使用Intel的mkl软件计算CPU的浮点数计算性能

Intel的mkl软件能使用linpack计算CPU浮点数性能。

wget https://software.intel.com/content/dam/develop/external/us/en/documents/l_mklb_p_2021.1.1.001.tgz
tar zxf l_mklb_p_2021.1.1.001.tgz
cd l_mklb_p_2021.1.1.001/benchmarks_2021.1.1/linux/mkl/benchmarks/linpack
./runme_xeon64

以上操作,程序会其实是调用了linpack-xtreme计算FLOPS。对一些服务器的FLOPS测试结果如下:

服务器型号         CPU型号数量        整体FLOPS           系统
惠普DL580G9       E7-8890 V3 * 4    1084.3483 GFlops    CentOS7
华为RH5885H V3    E7-4890 V2 * 4    838.5290 GFlops     CentOS7
华为RH5885H V3    E7-4890 V2 * 4    514.2317 GFlops     CentOS7
华为RH5885H V3    E7-4890 V2 * 4    281.1997 GFlops     CentOS8
戴尔R910          E7-8870 * 4       304.9025 GFlops     CentOS8
惠普DL980G7       E7-4870 * 8       586.0235 GFlops     CentOS8
戴尔T620          E5-2620 * 2       190.9405 GFlops     CentOS7

使用HPL软件测试服务器浮点数计算性能

HPL(High-Performance Linpack)软件使用Linpack算法来测试计算机双精度浮点数计算性能。

安装HPL软件

# 安装mpich
wget http://www.mpich.org/static/downloads/3.3/mpich-3.3.tar.gz -P ~/software/
tar zxf ~/software/mpich-3.3.tar.gz
cd mpich-3.3
./configure --prefix=/opt/sysoft/mpich-3.3 && make -j 4 && make install
cd .. && rm -rf mpich-3.3
echo 'export PKG_CONFIG_PATH=/opt/sysoft/mpich-3.3/lib/pkgconfig:$PKG_CONFIG_PATH' > ~/.bashrc.mpich
echo 'export LD_LIBRARY_PATH=/opt/sysoft/mpich-3.3/lib:$LD_LIBRARY_PATH' >> ~/.bashrc.mpich
echo 'export C_INCLUDE_PATH=/opt/sysoft/mpich-3.3/include:$C_INCLUDE_PATH' >> ~/.bashrc.mpich
echo 'export PATH=/opt/sysoft/mpich-3.3/bin/:$PATH' >> ~/.bashrc.mpich
source ~/.bashrc.mpich

# 安装openblas
sudo yum -y install openblas openblas-devel
# 若是CentOS8系统
sudo dnf --enablerepo=PowerTools install gcc-fortran openblas openblas-devel

# 安装hpl
wget http://www.netlib.org/benchmark/hpl/hpl-2.3.tar.gz
tar zxf hpl-2.3.tar.gz
cd hpl-2.3/
source ~/.bashrc.mpich
./configure --prefix=/opt/sysoft/hpl-2.3
make -j 8
make install
cd ../ && rm -rf hpl-2.3

在当前目录下生成HPL的配置文件HPL.dat,该配置文件适合72核心的单节点服务器。

HPLinpack benchmark input file
Innovative Computing Laboratory, University of Tennessee
HPL.out      output file name (if any)
6            device out (6=stdout,7=stderr,file)
1            # of problems sizes (N)
82944        Ns
1            # of NBs
144          NBs
0            PMAP process mapping (0=Row-,1=Column-major)
1            # of process grids (P x Q)
8            Ps
9            Qs
16.0         threshold
2            # of panel fact
2 1 0        PFACTs (0=left, 1=Crout, 2=Right)
1            # of recursive stopping criterium
2 4          NBMINs (>= 1)
1            # of panels in recursion
2            NDIVs
1            # of recursive panel fact.
1 0 2        RFACTs (0=left, 1=Crout, 2=Right)
1            # of broadcast
0            BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM)
1            # of lookahead depth
0            DEPTHs (>=0)
2            SWAP (0=bin-exch,1=long,2=mix)
64           swapping threshold
0            L1 in (0=transposed,1=no-transposed) form
0            U  in (0=transposed,1=no-transposed) form
1            Equilibration (0=no,1=yes)
8            memory alignment in double (> 0)

配置文件中的重要参数如下:

1        # of problems sizes (N)
    设置程序运行时使用的 N 值的个数。
82944    Ns
    设置程序运行时使用的 N 值。上一个参数的值有多大,此处则输入对应个数的 N 值。N 值为Linpack进行浮点运算的问题规模。求解问题规模为N时,Linpack浮点运算次数 = 2 / 3 * N^3 - 2 * N^2。再测得系统计算所消耗的时间T,即可算出浮点运算每秒次数FLOPS值。需注意内存和计算时间消耗随该值增大呈指数级增加,内存消耗=N*N*8。比如该参数值为20000时消耗3.2GB内存,设置为30000时消耗约7.2GB内存。在HPL软件进行计算时,该值设置越大,有效计算所占的比例也越大,其结果FLOPS值越大。此外,该值推荐设置为 P * Q * NB 的整数倍。
1        # of NBs
    设置程序运行时使用的 NB 值的个数。
144      NBs
    设置数据分块数量,有利于并行化计算。上一个参数的值有多大,此处则输入对应个数的 NB 值。推荐设置为 P * Q 的整数倍。要计算的问题规模比较大,将这些计算均匀分配给各个CPU核心。
1        # of process grids (P x Q)
    设置程序运行时使用的 P x Q 的个数。
8        Ps
9        Qs
    设置并行化和多线程的CPU使用个数。尽可能让P和Q相等,并使两者的乘积为服务器的CPU总核心数,使P <= Q,也最好使P值为2的n次方。上一个参数设置有多大,则此处输入对应个数的P和Q值。
2       # of panel fact
2 1 0 PFACTs (0=left, 1=Crout, 2=Right)
    设置panel fact的值个数。上面设置了使用2种panel fact参数,下一个参数虽然有3个值,于是HPL运行时选取使用前两个值。
    后面还有几个这样的参数设置。但是对结果影响不大。只有前面的N, NB, P 和 Q 对结果影响较大。特别是 N 值影响最大。

运行HPL程序进行FLOPS计算

/opt/sysoft/mpich-3.3/bin/mpirun -np 72 /opt/sysoft/hpl-2.3/bin/xhpl

    程序运行需要当前目录下存在HPL.date配置文件。

程序运行的注意事项:

(1)mpirun的-np参数值是服务器的CPU总核心数。对应着参数文件种 P * Q 的值。要求 -np 参数的值 >= P * Q,否则程序报错。
(2)HPL若使用超线程后总CPU线程数来进行计算,其FLOPS值更低,比用总核心数低约20%。
(3)若可以的话,设置不同的参数来让HPL程序运行多次,取其最高值(峰值)作为服务的FLOPS计算性能。
(4)配置以 # 开始的参数用于设置多个值,程序有7个参数可以设置不同的多个值,于是排列组合后可以运行很多次,选择最大值作为FLOPS计算峰值。
(5)当设置多种参数值,会很消耗计算时间,且其结果都相差不大,则可以考虑节约时间,不用设置太多的参数值。
(6)程序第一个运行种CPU刚唤醒,导致其有效计算所占的比例要小些,其结果会差些,特别是N值设置不够大时更明显,推荐至少有2次运行。
(7)设置稍大的 N 值,让每次Linpack程序运行时间长度超过200秒,则获得的结果更准确些。若运行时间太长,则感觉很费时间。

程序结果如下。按上面的配置文件,设置了2个不同的参数运行。第一次运行的结果一般较低,直接看第二次的结果作为服务器的计算性能:1297 Gflops。

================================================================================
T/V                N    NB     P     Q               Time                 Gflops
--------------------------------------------------------------------------------
WR00C2R2       82944   144     8     9             311.44             1.2215e+03
HPL_pdgesv() start time Sat Apr 10 06:32:55 2021

HPL_pdgesv() end time   Sat Apr 10 06:38:06 2021

--------------------------------------------------------------------------------
||Ax-b||_oo/(eps*(||A||_oo*||x||_oo+||b||_oo)*N)=   1.11497782e-03 ...... PASSED
================================================================================
T/V                N    NB     P     Q               Time                 Gflops
--------------------------------------------------------------------------------
WR00C2C2       82944   144     8     9             293.31             1.2970e+03
HPL_pdgesv() start time Sat Apr 10 06:38:15 2021

HPL_pdgesv() end time   Sat Apr 10 06:43:09 2021

--------------------------------------------------------------------------------
||Ax-b||_oo/(eps*(||A||_oo*||x||_oo+||b||_oo)*N)=   1.07067674e-03 ...... PASSED
================================================================================

使用HPL对一些服务器的FLOPS测试结果如下:

服务器型号        CPU型号数量        整体FLOPS          系统
惠普DL580G9      E7-8890 V3 * 4    1297.0 GFlops      CentOS7
华为RH5885H V3   E7-4890 V2 * 4    904.68 GFlops      CentOS7
华为RH5885H V3   E7-4890 V2 * 4    614.23 GFlops      CentOS8
惠普DL980G7      E7-4870 * 4       339.53 GFlops      CentOS8

使用linpack-xtreme-1.1.5软件测试CPU的浮点数计算性能

对服务器或电脑的计算性能进行时描述,一般使用FLOPS或MIPS为单位进行量化。MIPS表示每秒执行的百万级的机器语言指令数。CPU的主频越高,MIPS线性增加。由于不同时代的CPU主频可能一致,但执行指令的速度差异极大,因此MIPS无法衡量CPU实际的计算性能。FLOPS表示每秒的浮点数运算次数,能准备表述计算机的性能。

Linpack(Liner system package)是目前最流行的用于测试高性能计算机系统浮点性能的方法。它通过高斯消元法求解N元一次稠密线性代数方程组的测试,评价高性能计算机的浮点性能。

使用linpack-xtreme-1.1.5软件可以在Linux或Windows系统下测试CPU的FLOPS。在Linux系统中,解压缩linpack-xtreme-1.1.5软件后,使用其中的AuthenticAMD命令即可测试服务器的FLOPS。

直接运行AuthenticAMD,会使用全部的线程进行计算,其测试的结果会偏小。推荐使用1个线程运行单个AuthenticAMD命令,并行化运行与CPU核心数相同个数的AuthenticAMD命令,从而获得服务器整体的FLOPS性能。

于是编写程序test_FLOPS_by_linpack-xtreme.pl来并行化调用AuthenticAMD测试服务器的FLOPS性能。

使用linpack-xtreme-1.1.5软件对4颗E7-4890 V2 CPU (60核心120线程)的服务器进行测试,结果为:

CPU型号:Intel(R) Xeon(R) CPU E7-4890 v2 @ 2.80GHz

时间消耗:当使用60个CPU线程并行计算时,单个线程消耗的时间为 67.765 ~ 70.942, 68.279 (均值) / 68.245 68.279 (中位数)。
CPU性能:当使用60个CPU线程并行计算时,单个线程性能为 9.4002 ~ 9.8409, 9.767 (均值) / 9.7717 (中位数)。
CPU性能:当使用60个CPU线程并行计算时,所有线程总性能为 586.0235 GFlops。

时间消耗:当使用1个CPU线程并行计算时,单个线程消耗的时间为 29.587 ~ 29.587, 29.587 (均值) / 29.587 29.587 (中位数)。
CPU性能:当使用1个CPU线程并行计算时,单个线程性能为 22.5389 ~ 22.5389, 22.5389 (均值) / 22.5389 (中位数)。
CPU性能:当使用1个CPU线程并行计算时,所有线程总性能为 22.5389 GFlops。

时间消耗:当使用120个CPU线程并行计算时,单个线程消耗的时间为 189.257 ~ 278.805, 236.683 (均值) / 230.219 236.683 (中位数)。
CPU性能:当使用120个CPU线程并行计算时,单个线程性能为 2.3919 ~ 3.5236, 2.847 (均值) / 2.8967 (中位数)。
CPU性能:当使用120个CPU线程并行计算时,所有线程总性能为 341.6415 GFlops。

使用linpack-xtreme-1.1.5软件进行FLOPS计算的结果在一定程度上准确。在CPU最大核心数内进行测试时,使用的核心数越多,FLOPS结果越大,基本呈线性增加。此外,也在一定程度上不太准确。表现在:(1)服务器开启超线程,并行化数为CPU核心数的FLOPS值最大,而并行化为CPU线程数的FLOPS结果降低太多。(2)当使用单线程单任务进行测试时,FLOPS值非常高,是满负荷的两倍还多。我个人觉得单线程时CPU超频性能不会强这么多。(3)我使用8路服务器DL980G7(4颗E7-4870)进行测试时,其整体FLOPS值比4路服务器DL580G7(4颗E7-4870)的FLOPS值还低。这是很不正常的。所以,linpack-xtreme-1.1.5软件进行测试时,多物理CPU同时进行测试,会极大影响测试结果。linpack-xtreme-1.1.5软件可能仅适合单颗CPU的FLOPS计算。(4)在不同版本的CentOS系统下,或在相同系统相同型号而不同物理机器上测试结果差异较大。

最后,使用linpack-xtreme-1.1.5软件对一些服务器的FLOPS测试结果如下:

服务器型号         CPU型号数量        整体FLOPS           系统
惠普DL580G9       E7-8890 V3 * 4    1329.6549 GFlops    CentOS7
华为RH5885H V3    E7-4890 V2 * 4    1076.3384 GFlops    CentOS7
华为RH5885H V3    E7-4890 V2 * 4    814.6641 GFlops     CentOS7
华为RH5885H V3    E7-4890 V2 * 4    586.0235 GFlops     CentOS8
戴尔R910          E7-8870 * 4       346.8207 GFlops     CentOS8
惠普DL980G7       E7-4870 * 8       252.3831 GFlops     CentOS8
戴尔T620          E5-2620 * 2       198.8307 GFlops     CentOS7

从诺和致源云交付平台下载数据

诺和致源构建了自己的云交付平台,在Linux服务器中直接使用其公司提供的下载程序直接下载文件。

首先,下载并安装软件lnd

wget http://data-deliver.novogene.com/linuxnd.zip -P /media/software_packages/
unzip /media/software_packages/linuxnd.zip -d /opt/biosoft/
chmod 755 /opt/biosoft/linuxnd/lnd

根据邮件中的用户名、密码和文件路径下载数据

# 首先,使用用户名和密码登陆到云交付平台
/opt/biosoft/linuxnd/lnd login -u X101SC20110715-Z01-J002 -p fe3eg21z

# 列出根目录信息
/opt/biosoft/linuxnd/lnd list
/opt/biosoft/linuxnd/lnd list oss://CP2018091209442

# 下载文件夹
/opt/biosoft/linuxnd/lnd cp -d oss://CP2018091209442/H101SC20110715/RSCD0408/X101SC20110715-Z01/X101SC20110715-Z01-J002 ./

武汉带娃游玩长见识的地方

‌1. 武汉科学技术馆。

门票免费。

开馆时间: 周三至周日 9:00—16:30 。闭馆时间: 周一至周二(国家法定节假日期间另行通告)。

2. 湖北省博物馆

实行预约免费参观,进入其网上预约系统,填写姓名、身份证号码和联系人手机号进行预约。

开放时间:周二至周日09:00-17:00(16:00后停止入馆);周一闭馆(法定节假日除外)。

镇馆之宝:曾侯乙编钟、越王勾践剑、曾侯乙尊盘、云梦睡虎地秦简、虎座鸟架鼓、郧县人头骨化石。

3. 武汉博物馆

通过二维码关注“武汉博物馆”微信公众号,进入武汉博物馆微信公众号后,点击右下角“参观预约”,填写游客信息,预约后免费参观。

开馆时间:周二至周日09:00-17:00(16:00后停止入馆);周一闭馆(法定节假日除外)。

镇馆之宝:凤纹方罍(读作“léi”)、青花“四爱图”梅瓶、《江汉揽胜图》和“乾隆”款青玉双凤交颈壶。

4. 长江文明馆

免费参观。收费项目如下:体验厅《梦幻长江》、引进外单位文物的临时展览、展陈内容讲解、语音导览租用。

开馆时间:每周二至周日09:00-17:00(16:30后停止入馆);每周一闭馆。

5. 武汉市中山舰博物馆

通过官方微信公众号实名预约免费参观,未办理实体身份证儿童填写户口本上的身份证号码进行预约。已预约观众务必携带本人二代身份证,未携带证件谢绝入馆。一名成人限带一名1.4米以下已预约儿童,未办理实体身份证的儿童凭预约订单经工作人员核验,与家长一同入馆。

开放时间:周二至周日 09:00-17:00(16:00后停止入馆),周一闭馆(国家法定节假日除外)。

6. 武汉大禹文化博物馆

武汉大禹文化博物馆常年向观众免费开放。观众至大门口登记入场参观。

开放时间9:00-17:00(16:30停止入场),每周一闭馆,每周四15:00闭馆展厅维护(逢国家法定节假日全天开放),每年除夕闭馆一天。

7. 盘龙城遗址博物馆

关注盘龙城遗址博物院官方微信公众号, 在微信号下方点击“服务”栏,选择“预约服务”,按照提示预约即可。预约成功后,系统会生成预约二维码,游客到博物馆门口出示预约二维码即可参观。

开馆时间:周二至周日09:00-17:00(16:00后停止入馆);周一闭馆(法定节假日除外)。

8. 湖北警察史博物馆

湖北警察史博物馆的所有展览免费向公众开放。酗酒者、衣冠不整者以及无民事行为能力或限制民事行为能力者无监护人陪伴的,谢绝入馆。

开馆时间:周一到周五上午8:30-11:30;下午2:30-4:30(下午4点以后停止入馆)。除工作日外,节假日及双休日均需预约参观。

9. 武汉美术馆

武汉美术馆的展览及活动均免费向观众开放。

开馆时间:周二至周日09:00-17:00(16:00后停止入馆);周一闭馆(法定节假日除外)。

10. 中国地质大学逸夫博物馆

门票成人40元/人/次。

开馆时间:冬季(10月-4月) 上午8:00-12:00 下午14:00-17:00;夏季(5月-9月) 上午8:00-12:00 下午14:30-17:30;双休节假日 9:00-17:00。

11. 湖北经济学院博物馆钱币陈列馆

门票免费。可以添加微信公众号“湖北经济学院博物馆”。

开放时间周一、三、五14:00-16:20。

12. ‌中华360行雕塑博物馆

在武汉昙华林101号,有一家中华三百六十行雕塑博物馆,陈列着“中华三百六十行”大型群雕,生动复原了清末民初各行各业呈现的市井众象。这是一幢3层小楼,一楼是雕塑的主创团队三汉雕塑工作室,二、三楼则专门用来展览。