前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >海思板卡SATA最佳读写块大小测试

海思板卡SATA最佳读写块大小测试

作者头像
jianghaibobo
发布2019-08-02 16:19:37
9900
发布2019-08-02 16:19:37
举报

1 引言

应需求,在海思板子上测试SATA读写速度,用dd指令,每次分别读/写不同大小的块 (bs),同时检测运行dd命令CPU占比,记录读/写速度和CPU占比。

2 实验过程

2.1 用dd指令对SATA分区进行多次文件写入,写入总大小分别为320M, 640M, 1280M, 2560M,单次写入块大小分别为512B, 1K, 2K, 4K, 8k, 16K, 32K, 64K, 128K, 256K, 512K, 1024K, 2M, 4M, 8M, 16M, 32M,每个块大小写入测试n (n=3)次;

2.2 在写入过程中计算得到该进程占用CPU百分比的平均值,写入结束后记录此次写入平均速度;

2.3 将实验结果画图展示;

2.4 将文件写入改为分区读出,重复2.1和2.2过程,得到读出文件速度和CPU占比,画图展示。

3 实验结果

3.1 文件写入

图1-4分别为对SATA分区1(sda1)进行文件写入得到的相关数据:

图 1

图 2

图 3

图 4

结合写入速度和CPU占比,为获得最佳写入块大小,取最大写入速度和较低的CPU占比的共同点。由图1-4可以分别看出,符合条件的块大小分别为32K,16K,32K,16K。

3.2 文件读出

图5-8分别为对SATA分区1(sda1)进行文件读出得到的相关数据:

图 5

图 6

图 7

图 8

结合读出速度和CPU占比,为获得最佳读出块大小,取最大读出速度和较低的CPU占比的共同点。由图1-4可以分别看出,符合条件的块大小分别为64K,16K,64K,16K。

附加实验:测试320M, 640M, 1280M, 2560M下以16K和64K为读取块大小的读出速度和CPU占比,结果如下表所示:

表 1 读取块为16K与64K的速度和CPU占比

16K

64K

Speed (Mb/s)

320M

63.46

62.09

320M

58.12

62.81

640M

74.07

75.56

640M

73.41

71.57

1280M

79.84

79.28

1280M

80.62

78.55

2560M

87.77

84.12

2560M

83.87

84.20

平均

75.77

平均

74.14

CPU (%)

320M

29

29

320M

18

27

640M

27

26

640M

26

34

1280M

33

33

1280M

36

31

2560M

40

37

2560M

38

36

平均

32

平均

31

由上表格中16K和64K对应的读取速度和CPU占比平均值对比可看出,在CPU占比相差较小的情况下,较大读取速度的文件读块大小为16K。

4 实验结论

由3.1得出,比较理想的单次写入块大小为16K和32K,但根据图1中16K的写入速度低于32K的写入速度约20Mb/s,因此最佳的单次写入块大小为16K,其次为32K。

由3.2中的实验结果可知16K和64K的读取速度均较佳,结合附加实验结果可得出,最佳的单次读取块大小为16K,其次为64K。

结合已上两个实验结论,针对该海思板卡的SATA读写,以16K作为单次块读写可获得较快的速度且较低的CPU占比。

shell笔记

01. shell 当中#!/bin/sh 后面跟-x可以逐步显示出执行过程和结果,便于调试。

02.

代码语言:javascript
复制
while read line;do  
    eval "$line"  

done < $conffile

  使用类似如上导入文件的方法后,部分指令的&后台运行功能失效。原因未知。

03. 像dd等指令直接重定向 ">" 到文件中不会将显示在屏幕上的内容写入文件,应写 "2>" 将"2"也就是标准错误定向到文件。

04. sed的用法之找到匹配的行,并删除或者整行替换:

代码语言:javascript
复制
#方法一:
line=`sed -i '/$str/=' $filename`
for i in $line 
do
    sed -i "${i}d" $filename  #删除
    sed -i "$i i${str}" $filename   #在删除的那行加字符串str
done

#方法二:
#匹配到xxxx的行整行替换为str,几乎是万能的行替换,同样适用于匹配的字符串不是行首的情况。
sed -i "/xxxxx/s/^.*/$str/g" $filename 

  方法二的效率明显高于一。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-11-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 引言
    • 2 实验过程
      • 3 实验结果
        • 图 1
        • 图 2
        • 图 3
        • 图 4
        • 图 5
        • 图 6
        • 图 7
        • 图 8
        • 表 1 读取块为16K与64K的速度和CPU占比
      • 4 实验结论
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档