主板硬件性能测试

项目需要使用的主板有很多性能需要经过测试之后才能用于开发使用,因此将Linux上一些常用的tools移植进板子进行测试。

主要有 : CPU、DDR、NAND FLASH、SATA、网络。

  最后顺便记录一下写bash shell脚本遇到的小问题。

01. CPU

   查看CPU用如下命令(多少个核,频率,特性等):

  cat /proc/cpuinfo

  查看内存用如下命令:(只有当前内存大小,已用空间等等,不能看到内存频率)

  cat /proc/meminfo

1.1 memtester 可以捕获内存错误和一直处于很高或很低的坏位。

1.1.1 安装

下载http://www.linuxidc.com/Linux/2012-09/71014.htm

#tar...

修改: vi conf-cc : cc改为交叉编译工具(arm-none-linux-gnueabi-gcc)

vi conf-ld 同上

#make

#make install

1.1.2 测试

./memtester [-p physaddrbase] <mem>[B|K|M|G] [loops]

其中:

Physaddrbase: 需要测试的物理地址;

<mem>[B|K|M|G]:测试内存的大小;

[loops]:测试次数

1.1.3 实例

测试10M内存1次:

1.2 stress

stress 可以进行系统压力测试

1.2.1 安装

下载http://down1.chinaunix.net/distfiles/stress-0.18.1.tar.gz

#tar...

# CC=arm-none-linux-gnueabi-gcc ./configure --host=arm-linux (需要交叉编译)

#make

#sudo make install

1.2.2 测试

-c 产生n个进程 每个进程都反复不停的计算随机数的平方根

-i 产生n个进程 每个进程反复调用sync(),sync()用于将内存上的内容写到硬盘上

-v

--verbose 显示详细运行信息

-q

--quiet 不显示运行信息

1.2.3 实例

产生13个cpu进程4个io进程1分钟后停止运行

./stress -c 13 -i 4 --verbose --timeout 1m

产生1024个进程,仅显示出错信息

./stress --quiet --cpu 1k --timeout 10m

02. NAND FLASH

2.1 dd 从磁盘读:time if=/dev/mmcblk0 of=/dev/null bs=8k count=131072(总1G)

通过 bs 选项 设置不同的读写块大小测试(bs=1M),dd 的测出的速度与读写块的大小有一定关系,也可能受到系统中有IO读写的进程的影响。

2.2 hdparm 测试硬盘性能,同dd一样采用顺序读写。

2.2.1 下载:https://sourceforge.net/projects/hdparm/

改Makefile 中CC为arm-none-linux-gnueabi-gcc。编译移植。

2.2.2 测试

显示硬盘的相关设置:hdparm /dev/sda

/dev/sda:

IO_support = 0 (default 16-bit)

readonly = 0 (off)

readahead = 256 (on)

geometry = 19929[柱面数]/255[磁头数]/63[扇区数], sectors = 320173056[总扇区数], start = 0[起始扇区数]

评估硬盘的读取效率:hdparm -t /dev/sda

2.2.3 实例

fdisk –l 查看磁盘驱动号

./hdparm -t /dev/mmcblk0 可以得到磁盘读取速率。

2.3 fio FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证。

2.3.1 安装

下载:https://github.com/axboe/fio/

#tar

# CC=arm-none-linux-gnueabi-gcc ./configure --host=arm-linux (需要交叉编译)(具体看--help)

#make

#sudo make install

2.3.2 测试

FIO分顺序读,随机读,顺序写,随机写,混合随机读写模式。

2.3.3 实例

顺序读:200M

./fio -filename=/dev/mmcblk0 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=200M -numjobs=30 -runtime=100 -group_reporting -name=mytest

随机读:200M

./fio -filename=/dev/mmcblk0 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=16k -size=200M -numjobs=30 -runtime=100 -group_reporting -name=mytest

随机写:10G

./fio -filename=/dev/mmcblk0 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=10G -numjobs=20 -runtime=1000 -group_reporting -name=mytes

混合随机读写:200G

./fio -filename=/dev/mmcblk0 -iodepth 1 -thread -rw=randrw –rwmixread=70 -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=500 -group_reporting -name=mytest

我只用了

./fio -filename=$dev -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=64k -size=40M -numjobs=20 -runtime=20 -group_reporting -name=mytest1

来测写速度。

-direct=1 去除缓存影响。

上述dd和hdparm 也是避开缓存影响的结果。

结果分析:

IOPS (Input/Output Per Second)即每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一。决定IOPS的主要取决与阵列的算法,cache命中率,以及磁盘个数。

IOPS和数据吞吐量适用于不同的场合: 读取10000个1KB文件,用时10秒 Throught(吞吐量)=1MB/s ,IOPS=1000 追求IOPS。 读取1个10MB文件,用时0.2秒 Throught(吞吐量)=50MB/s, IOPS=5 追求吞吐量。

03. 网络测试

主要用iperf工具,有些板子可能需要移植, configure的时候除了设置CC外还需要CXX,以及--host=arm-linux,出了undefined reference to `rpl_malloc' 之类的错误的话在config.h中找到

#define malloc rpl_malloc

注释掉就行了。

./iperf -u -c $ip -i 1 -w 1M -t 15 -b 50M -d

用于测试50M带宽上下行(需要虚拟机iperf -su 开启一个服务器端。)

04. shell 小结

4.1 \ 转义

   "" 软转义 中间含有$时

  ''  硬转义 需要重定向时

4.2 break n 表示退出n层循环

4.3 有些板子会在判断时出现不识别情况,可以采用这种形式避免

  "$goon" = "N"

4.4 检测输入的ip地址是否合法

echo $ip|grep "^[0-9]\{1,3\}\.\([0-9]\{1,3\}\.\)\{2\}[0-9]\{1,3\}$" > /dev/null;
    #^  $:从开始到结束是数字才满足条件
    if [ $? -ne 0 ] #上一条指令正常则返回0,否则返回1
    then 
            echo "IP format error,Please enter the IP again." 
            # exit 1;
            continue;
    fi 
    ipaddr=$ip 
    a=`echo $ipaddr|awk -F . '{print $1}'`  #以"."分隔,取出每个列的值 
    b=`echo $ipaddr|awk -F . '{print $2}'` 
    c=`echo $ipaddr|awk -F . '{print $3}'` 
    d=`echo $ipaddr|awk -F . '{print $4}'` 
            if [ $a -gt 255 ] || [ $a -lt 0 ]    
            then 
                    echo "IP format error,Please enter the IP again." 
                    # exit 1;
                    continue;
            elif [ $b -gt 255 ] || [ $b -lt 0 ]
            then 
                    echo "IP format error,Please enter the IP again." 
                    # exit 1;
                    continue;
            elif [ $c -gt 255 ] || [ $c -lt 0 ]
            then 
                    echo "IP format error,Please enter the IP again." 
                    # exit 1;
                    continue;
            elif [ $d -gt 255 ] || [ $d -lt 0 ]
            then 
                    echo "IP format error,Please enter the IP again." 
                    # exit 1;
                    continue;
            else
                break ;
            fi 

放进一个循环里即可。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏悠风的采坑日记

Linux 下通过命令行连接 WiFi

Kali Linux 默认使用 Gnome 桌面环境,而在 Gnome 的顶部菜单栏中是可以直接选择无线网络并建立连接的,这就像在 Window...

97310
来自专栏腾讯云IoT

【IOT迷你赛】智慧照明

很荣幸参加这次的TencentTiny内测,切身体会了IOT的魅力认识到其市场价值,在月初收到腾讯工作人员寄来的开发板感觉特别的荣幸--能与腾讯近距...

20440
来自专栏WalkingCloud

使用pam_tally2锁定和解锁SSH失败的登录尝试

pam_tally2模块可于用于在对系统进行一定次数的失败ssh登录尝试后锁定用户

52310
来自专栏云端漫步

使用vim打造go语言IDE

在网上看到了一篇不错的关于vim的文章,参考网上给出的资料,花了些时间,将自己的vim打造成一块go语言的IDE。中间因为网路的问题,踩了很多的坑,就在此简单的...

36930
来自专栏WalkingCloud

CentOS6下使用pv+nc命令传输文件

由于有时Linux服务器可能网络等等其它原因没法通过rsync 或者scp的方式传输文件,那有没有更简洁的方式来进行文件传输呢

16520
来自专栏悠风的采坑日记

推荐 | Linux 玩家必备优秀软件

所谓工欲善其事,必先利其器,好的软件或工具,能够在很大程度上提升你的工作效率。对于像我这样把 Linux 直接安装在物理机上当作日常操作系统来使用的人来...

1.1K40
来自专栏悠风的采坑日记

Kali Linux 采坑汇总(续篇)

Kali Linux 是个坑特别多的操作系统,尤其是对于我这样的初学者来说,这也难怪会有那句名言:Kali 学得好,监狱进得早!这两天在定制自己的 Ka...

42330
来自专栏悠风的采坑日记

Kali Linux 初装采坑汇总

每次初装Kali Linux 时,总是要被一些坑困扰。为了便于日后查阅,我将一些常见的坑以及必要的配置操作,收集汇总写在这篇推文里。有兴趣的伙伴也可以参...

25710
来自专栏mall学习教程

10分钟搭建自己的Git仓库

首先我们需要创建一个组织,然后在这个组织下分别创建用户和项目,这样同组织的用户就可以使用该组织下的项目了。

19740
来自专栏悠风的采坑日记

Linux 下安装 Gnome 和卸载 Unity

Gnome 和 Unity 是 Linux 系统的两大桌面主题。Ubuntu 自11版开始就抛弃了 Gnome 界面而选择了 Unity,而后自1...

32820

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励