磁盘文件读性能测试

简介: .pdf   未缓存前: time ./x bin.tar  file size is 816322560 816322560 bytes read now real    0m3.

img_e25d4fb2f8de1caf41a735ec53088516.png.pdf
 

未缓存前:

time ./x bin.tar 

file size is 816322560

816322560 bytes read now

real    0m3.378s

user    0m0.000s

sys     0m0.996s

 

被缓存后:

time ./x bin.tar 

file size is 816322560

816322560 bytes read now

real    0m0.770s

user    0m0.000s

sys     0m0.768s

 

硬盘读取性能:

hdparm -t /dev/sdb 

/dev/sdb:

 Timing buffered disk reads: 2454 MB in  3.00 seconds = 817.84 MB/sec

 

10块物理磁盘,做了Raid10,因此读性能高,达每秒817.84MB

 

测试程序:

// 非优化方式编译:g++ -g -o x x.cpp

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include 

 

// 带一个参数,为被读取文件的大小

int main(int argc, char* argv[])

{

        int fd = open(argv[1], O_RDONLY);

        if (-1 == fd)

        {

                perror(strerror(errno));

                exit(1);

        }

 

        struct stat st;

        if (0 == fstat(fd, &st))

        {

                // 输出文件大小,单位为字节

                printf("file size is %d\n", st.st_size);

 

                // 一次性将整个文件读到内存中

                char* bytes = new char[st.st_size];

                int bytes_read = read(fd, bytes, st.st_size);

 

                // 显示实际成功读取的字节数

                printf("%d bytes read now\n", bytes_read);

                delete []bytes;

        }

 

        close(fd);

        return 0;

}

 

清缓存:

使用free命令观察下列操作的变化,以root用户执行:先执行下sync命令,以将数据更新到磁盘,再执行echo 3 > /proc/sys/vm/drop_caches,以清除系统的cached

 

文件内存的缓存会反应出free命令输出的cached值的变化,实际就是Page cache,文件内容的读取会缓存在这里。如果读取一个大文件,可以看到cached的值明显增涨,并且增涨大小差不多就是文件的大小,buffers相当于cached的元信息,比如文件的inode

 

cached影响文件的读取性能,而buffers影响到文件的打开性能。

 

drop_caches使用汇总:

echo 0 > /proc/sys/vm/drop_caches

不做释放

echo 1 > /proc/sys/vm/drop_caches

释放Page Cache

echo 2 > /proc/sys/vm/drop_caches

释放Dentries/inodes Cache(其中,Dentry是目录信息,inode是文件信息)

echo 3 > /proc/sys/vm/drop_caches

释放PageDentries/inodes Cache

 

这个特性由2.6.16内核开始提供,参考资料:

1) /proc/sys/vm/drop_caches

http://linux-mm.org/Drop_Caches

2) Linux Buffer vs Cache explained

http://random-techbits.blogspot.com/2012/06/linux-buffer-vs-cache-explained.html

相关文章
|
10月前
|
Java 测试技术 数据安全/隐私保护
通过yaml文件配置自动化测试程序
通过yaml文件可以将自动化测试环境,测试数据和测试行为分开,请看一下案例
388 4
|
算法 数据安全/隐私保护 计算机视觉
基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
本项目展示了256×256图像通过双线性插值放大至512×512的效果,无水印展示。使用Matlab 2022a和Vivado 2019.2开发,提供完整代码及详细中文注释、操作视频。核心程序实现图像缩放,并在Matlab中验证效果。双线性插值算法通过FPGA高效实现图像缩放,确保质量。
|
测试技术 语音技术
FunASR英文离线文件转写软件包问题之性能测试详细结果查看如何解决
FunASR英文离线文件转写软件包问题之性能测试详细结果查看如何解决
527 0
|
运维
【运维基础知识】用dos批处理批量替换文件中的某个字符串(本地单元测试通过,部分功能有待优化,欢迎指正)
该脚本用于将C盘test目录下所有以t开头的txt文件中的字符串“123”批量替换为“abc”。通过创建批处理文件并运行,可实现自动化文本替换,适合初学者学习批处理脚本的基础操作与逻辑控制。
1413 56
|
安全 关系型数据库 MySQL
MySQL8使用物理文件恢复MyISAM表测试
MySQL8使用物理文件恢复MyISAM表测试
310 0
|
安全 Linux 网络安全
Kali渗透测试:自动播放文件攻击
Kali渗透测试:自动播放文件攻击
397 0
|
安全 Linux 网络安全
Kali 渗透测试:利用HTA文件进行渗透攻击
Kali 渗透测试:利用HTA文件进行渗透攻击
354 1
|
Java C++
代码文件间重复性测试
本文介绍了如何使用代码相似性检测工具simian来找出代码文件中的重复行,并通过示例指令展示了如何将检测结果输出到指定的文本文件中。
399 2
|
算法 计算机视觉 异构计算
基于FPGA的图像一维FFT变换IFFT逆变换verilog实现,包含tb测试文件和MATLAB辅助验证
```markdown ## FPGA 仿真与 MATLAB 显示 - 图像处理的 FFT/IFFT FPGA 实现在 Vivado 2019.2 中仿真,结果通过 MATLAB 2022a 展示 - 核心代码片段:`Ddddddddddddddd` - 理论:FPGA 实现的一维 FFT/IFFT,加速数字信号处理,适用于高计算需求的图像应用,如压缩、滤波和识别 ```