代码:

#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电子盘速度检测的更多相关文章

  1. 实现Linux下的U盘(USB Mass Storage)驱动

    如何实现Linux下的U盘(USB Mass Storage)驱动 版本:v0.7 How to Write Linux USB MSC (Mass Storage Class) Driver Cri ...

  2. 如何实现Linux下的U盘(USB Mass Storage)驱动

    如何实现Linux下的U盘(USB Mass Storage)驱动 版本:v0.7 How to Write Linux USB MSC (Mass Storage Class) Driver Cri ...

  3. linux下挂载U盘

    转:http://www.cnblogs.com/yeahgis/archive/2012/04/05/2432779.html linux下挂载U盘 一.Linux挂载U盘: 1.插入u盘到计算机, ...

  4. linux下开发板网络速度测试记录

        由于做的项目对于网络和USB的读写速度有很高的要求,因此新拿回来的板子要测试网络和usb的最佳传输速度.要考虑不少因素,先把我能想到的记录下来.     测试的环境是开发板和ubuntu虚拟机 ...

  5. LINUX下的U盘挂载

    linux下如果没有图形界面的情况下就要我们自己熟悉命令来挂载U盘,下面给大家详细描述下U盘的挂载过程. 1. 插入U盘 2. #sudo fdisk –l 查看所挂载盘符名称如下图,假设盘符名称为s ...

  6. 怎样在linux下对U盘进行格式化和分区

    说明,为了不做无用功,首先必须卸载要分区的设备,分区才能执行成功.通过命令umount /media/?? 或者umount /mnt/??? 看你的实际情况,这一步必不可少.1.首先通过命令fdis ...

  7. Linux下C程序内存泄露检测

    在linux下些C语言程序,最大的问题就是没有一个好的编程IDE,当然想kdevelop等工具都相当的强大,但我还是习惯使用kdevelop工具,由于没有一个习惯的编程IDE,内存检测也就成了在lin ...

  8. linux下简单限制网卡速度

    Linux下限制网卡的带宽,可用来模拟服务器带宽耗尽,从而测试服务器在此时的访问效果. 1.安装iproute yum -y install iproute 2.限制eth0网卡的带宽为50kbit: ...

  9. Linux下的二进制兼容性的检测

    都知道Linux的二进制兼容与windows相比简直是天差地别,windows的二进制兼容做得特别好,很老的游戏都能在windows 10上跑,写的好的程序,在XP上也不是不可以.但是Linux就不一 ...

随机推荐

  1. linux下硬盘uuid查看及修改设置

    查看硬盘UUID 方法一:ls -l /dev/disk/by-uuid方法二:blkid /dev/sdb1 修改硬盘UUID: uuidgen 会返回一个合法的 uuid,结合 tune2fs 可 ...

  2. iOS-FMDB事务【批量更新数据】

    打开数据库(sqlite) ///打开数据库 + (BOOL)openDataBase{ _TYDatabase = [[FMDatabase alloc]initWithPath:[self dat ...

  3. iOS-时间戳(或date)转字符串

    1.时间戳转字符串 ///时间戳转化为字符转0000-00-00 00:00 + (NSString *)time_timestampToString:(NSInteger)timestamp{ NS ...

  4. 分离Webpack开发环境与生产环境的配置

    这是Webpack+React系列配置过程记录的第五篇.其他内容请参考: 第一篇:使用webpack.babel.react.antdesign配置单页面应用开发环境 第二篇:使用react-rout ...

  5. 对把JDK源码的一些注解,笔记

    //对treeMap的红黑树理解注解. 2017.02.16 by 何锦彬 JDK,1.7.51 /** From CLR */ private void fixAfterInsertion(Entr ...

  6. Hadoop学习笔记二

    一.设置无密码sudo权限,不用在普通用户和root用户间来回切换 chmod u+w /etc/sudoers vim /etc/sudoers #首行添加如下的内容: hadoop ALL=(ro ...

  7. 洛谷 [P2766] 最长不下降子序列问题

    啊啊啊,再把MAXN和MAXM搞反我就退役 层次图求不相交路径数 第一问简单DP 第二问想办法把每一个不上升子序列转化成DAG上的一条路径,就转换成了求不相交路径数 因为每一个数只能用一次,所以要拆点 ...

  8. BZOJ 3295: [Cqoi2011]动态逆序对 [CDQ分治]

    RT 传送门 首先可以看成倒着插入,求逆序对数 每个数分配时间(注意每个数都要一个时间)$t$,$x$位置,$y$数值 $CDQ(l,r)$时归并排序$x$ 然后用$[l,mid]$的加入更新$[mi ...

  9. POJ2891 Strange Way to Express Integers [中国剩余定理]

    不互质情况的模板题 注意多组数据不要一发现不合法就退出 #include <iostream> #include <cstdio> #include <cstring&g ...

  10. zabbix安装步骤

    第一步:安装环境 Zabbix要求的环境 组件 版本要求 Apache版本 1 .3.1 2 MySQL版本 5.0.3 PHP版本 5.4.0 本次安装的环境 组件 版本要求 操作系统 CentOS ...