代码:

#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. c# 程序结构

    最近工作中需要用到c#,所以从今天开始博客不定期更新c#学习笔记 c#程序结构大体分为, 命名空间 类 Main 方法   命名空间 相当于一个仓库 通过 using 引入命名空间 比如 using ...

  2. Spring常用注解简析

    1. Autowired 自动装配,其作用是为了消除代码Java代码里面的getter/setter与bean属性中的property.当然,getter看个人需求,如果私有属性需要对外提供的话,应当 ...

  3. 07_SSH免登录配置

    占位占位占位占位占位占位占位占位

  4. 浅谈大型web系统架构(一)

    目录 Web前端系统 负载均衡系统 数据库集群系统 缓存系统 分布式存储系统 分布式服务器管理系统 代码发布系统   动态应用,是相对于网站静态内容而言,是指以c/c++.php.Java.perl. ...

  5. JMeter生成HTML性能报告

    有时候我们写性能报告的时候需要一些性能分布图,JMeter是可以生成HTML性能报告的 一.准备工作 1:jmeter3.0版本之后开始支持动态生成测试报表 2:jdk版本1.7以上 3:需要jmx脚 ...

  6. 为Ghost博客扩展代码高亮、数学公式、页面统计、评论

    前几天捣鼓了一下博客首页,接下来再丰富一下博客页面的功能与内容.由于我所使用的Ghost博客专注于轻量简洁,因此标题中提到的功能在Ghost中默认均不支持.下面将逐个介绍一下如何为Ghost扩展这些功 ...

  7. Django之wagtail安装及配置

    安装指引原文地址:Http://docs.wagtail.io/en/v1.13.1 需要注意的几点: 指定端口启动服务:在项目根目录下 ,运行 python manage.py runserver ...

  8. vue中钩子函数的用法

    这么多钩子函数,我们怎么用呢,我想大家可能有这样的疑问吧,我也有,哈哈哈. beforecreate : 举个栗子:可以在这加个loading事件 created :在这结束loading,还做一些初 ...

  9. AGC017 F - Zigzag

    传送门 Time limit : 4sec / Memory limit : 256MB Score : 1600 points Problem Statement There are N(N+1)⁄ ...

  10. python函数4种类型及函数生成帮助文档

    Pyouthon中函数参数是引用传递(注意不是值传递). 对于不可变类型,因变量不能修改,所以运算不会影响到变量自身: 而对于可变类型来说,函数体中的运算有可能会更改传入的参数变量. a += a   ...