linux下ssd电子盘速度检测
代码:
#include<stdio.h>
#include<sys/time.h>
#include <fcntl.h>
#include <pthread.h>
unsigned char pbuffer[1024*1024*8];//共用缓冲
void testssd1(int *ch )//写测试
{
int i=0;
int fd;
if(*ch==0)
fd = open("/ssd1/test.dat", O_RDWR|O_CREAT);
if(*ch==1)
fd = open("/ssd2/test.dat", O_RDWR|O_CREAT);
if(*ch==2)
fd = open("/ssd3/test.dat", O_RDWR|O_CREAT);
if(*ch==3)
fd = open("/ssd4/test.dat", O_RDWR|O_CREAT);
if(*ch==4)
fd = open("/ssd5/test.dat", O_RDWR|O_CREAT);
if(*ch==5)
fd = open("/ssd6/test.dat", O_RDWR|O_CREAT);
if(*ch==6)
fd = open("/ssd7/test.dat", O_RDWR|O_CREAT);
if(*ch==7)
fd = open("/ssd8/test.dat", O_RDWR|O_CREAT);
if(fd<0)
{
printf("%d open error!\n",*ch);
return ;
}
for(i=0;i<32;i++)
write(fd,pbuffer,1024*1024*8);//每次8M,共计256MB
close(fd);
printf("SSD%d test over!\n",*ch);
return ;
}
void testssd2(int *ch )//读测试
{
int i=0;
int fd;
if(*ch==0)
fd = open("/ssd1/test.dat", O_RDWR|O_CREAT);
if(*ch==1)
fd = open("/ssd2/test.dat", O_RDWR|O_CREAT);
if(*ch==2)
fd = open("/ssd3/test.dat", O_RDWR|O_CREAT);
if(*ch==3)
fd = open("/ssd4/test.dat", O_RDWR|O_CREAT);
if(*ch==4)
fd = open("/ssd5/test.dat", O_RDWR|O_CREAT);
if(*ch==5)
fd = open("/ssd6/test.dat", O_RDWR|O_CREAT);
if(*ch==6)
fd = open("/ssd7/test.dat", O_RDWR|O_CREAT);
if(*ch==7)
fd = open("/ssd8/test.dat", O_RDWR|O_CREAT);
if(fd<0)
{
printf("%d open error!\n",*ch);
return ;
}
for(i=0;i<32;i++)
read(fd,pbuffer,1024*1024*8);
close(fd);
printf("SSD%d test over!\n",*ch);
return ;
}
int main()
{
printf("this is SSD Speed test begin!\n\n");
pthread_t _id[8];
int ret,i,ch[8];
struct timeval start;
struct timeval end;
float speed;
for(i=0;i<1024*1024*8;i++)//初始化缓冲区
pbuffer[i] = i&0xff;
gettimeofday(&start,NULL);//开始计时------------
for(i=0;i<8;i++)
{
ch[i] = i;//启动8个线程
ret=pthread_create(_id+i,NULL,(void *)testssd1,ch+i);
if(ret!=0)
{
printf("Create pthread error!\n");
return -1;
}
}
pthread_join(_id[0],NULL); //等待各自到线程结束
pthread_join(_id[1],NULL);
pthread_join(_id[2],NULL);
pthread_join(_id[3],NULL);
pthread_join(_id[4],NULL);
pthread_join(_id[5],NULL);
pthread_join(_id[6],NULL);
pthread_join(_id[7],NULL);
gettimeofday(&end, NULL);//停止计时-------------
speed = 1.0*(end.tv_sec-start.tv_sec)+(end.tv_usec-start.tv_usec)/1000000.0;//时间
printf("ssd write speed:%6.5fMB/S(%6.5fsec)\n",256.0*8/speed,speed); //速度
printf("this is SSD Speed test over!\n\n");
return 0;
}
写测试运行结果:
# ./test
# gcc ssd_test.c -o test -lpthread
# ./test
SSD Speed test begin!
SSD4 test over!
SSD0 test over!
SSD6 test over!
SSD1 test over!
SSD5 test over!
SSD7 test over!
SSD2 test over!
SSD3 test over!
ssd write speed:1563.73594MB/S(1.30968sec)
SSD Speed test over!
读测试运行结果:
# ./test
SSD Speed test begin!
SSD1 test over!
SSD7 test over!
SSD3 test over!
SSD2 test over!
SSD4 test over!
SSD5 test over!
SSD6 test over!
SSD0 test over!
ssd read speed:2315.16042MB/S(0.34623sec)
SSD Speed test over!
linux下ssd电子盘速度检测的更多相关文章
- 实现Linux下的U盘(USB Mass Storage)驱动
如何实现Linux下的U盘(USB Mass Storage)驱动 版本:v0.7 How to Write Linux USB MSC (Mass Storage Class) Driver Cri ...
- 如何实现Linux下的U盘(USB Mass Storage)驱动
如何实现Linux下的U盘(USB Mass Storage)驱动 版本:v0.7 How to Write Linux USB MSC (Mass Storage Class) Driver Cri ...
- linux下挂载U盘
转:http://www.cnblogs.com/yeahgis/archive/2012/04/05/2432779.html linux下挂载U盘 一.Linux挂载U盘: 1.插入u盘到计算机, ...
- linux下开发板网络速度测试记录
由于做的项目对于网络和USB的读写速度有很高的要求,因此新拿回来的板子要测试网络和usb的最佳传输速度.要考虑不少因素,先把我能想到的记录下来. 测试的环境是开发板和ubuntu虚拟机 ...
- LINUX下的U盘挂载
linux下如果没有图形界面的情况下就要我们自己熟悉命令来挂载U盘,下面给大家详细描述下U盘的挂载过程. 1. 插入U盘 2. #sudo fdisk –l 查看所挂载盘符名称如下图,假设盘符名称为s ...
- 怎样在linux下对U盘进行格式化和分区
说明,为了不做无用功,首先必须卸载要分区的设备,分区才能执行成功.通过命令umount /media/?? 或者umount /mnt/??? 看你的实际情况,这一步必不可少.1.首先通过命令fdis ...
- Linux下C程序内存泄露检测
在linux下些C语言程序,最大的问题就是没有一个好的编程IDE,当然想kdevelop等工具都相当的强大,但我还是习惯使用kdevelop工具,由于没有一个习惯的编程IDE,内存检测也就成了在lin ...
- linux下简单限制网卡速度
Linux下限制网卡的带宽,可用来模拟服务器带宽耗尽,从而测试服务器在此时的访问效果. 1.安装iproute yum -y install iproute 2.限制eth0网卡的带宽为50kbit: ...
- Linux下的二进制兼容性的检测
都知道Linux的二进制兼容与windows相比简直是天差地别,windows的二进制兼容做得特别好,很老的游戏都能在windows 10上跑,写的好的程序,在XP上也不是不可以.但是Linux就不一 ...
随机推荐
- python中的time模块
time模块--时间获取和转换 time模块提供各种时间相关的功能 与时间相关的模块有:time,datetime,calendar 必要说明: 这个模块的功能不是适用于所有的平台 这个模块中定义的大 ...
- yum安装centos系统依赖库
安装centos系统依赖库,安装软件过程中,经常需要的一些库,可以在编译安装软件前执行如下命令: 首先更新系统(这步可以不执行) yum -y update 这种更新是全部更新,但是有时一些软件不想更 ...
- python爬虫(1)——urllib包
人生苦短,我用python! 一.关于爬虫 鉴于我的windos环境使用命令行感觉非常不便,也懒得折腾虚拟机,于是我选择了一个折中的办法--Cmder.它的下载地址是:cmder.net Cmder是 ...
- php与web页面交互
一.web表单 web表单的功能是让浏览者和网站有一个互动的平台.web表单主要用来在网页中发送数据到服务器. 1.1 表单的创建 使用form标记,并在其中插入相关的表单元素,即可创建一个表单. & ...
- PHP中常用操作文件的方法
文件夹的创建: mkdir系统函数,第一个参数是路径,第二个参数是权限,第三个参数是是否递归创建,默认权限是0777最大权限,在windows下没有所谓的权限,在linux下可以设置权限,如果目录存在 ...
- 异步请求时有时会让js不起作用,那么重新加载js
function reloadSmartMenu() { var jsElem = document.createElement('script'); jsElem.src= path+'/syste ...
- iOS通知传值的使用
通知 是在跳转控制器之间常用的传值代理方式,除了代理模式,通知更方便.便捷,一个简单的Demo实现通知的跳转传值. 输入所要发送的信息 ,同时将label的值通过button方法调用传递, - (IB ...
- Redis 实践1- redis介绍和安装
redis是一个key-value存储系统,官方站点 http://redis.io 和memcached类似,但支持数据持久化 支持更多value类型,除了和string外,还支持hash.li ...
- 设为首页/加入收藏JS代码
传统网站常用的设为首页/加入收藏js代码 <a href="javascript:void(0)" onclick="sethome(this,window.loc ...
- Js比较对Object类型进行排序
<script> var data=[{name:"121",age:"18",year:"2018"},{name:" ...