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!

时间: 2024-11-01 11:49:23

linux下ssd电子盘速度检测的相关文章

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

摘要 本文主要介绍了USB Mass Storage的相关的各种协议之间的关系,以及如何在Linux的USB驱动框架下实现U盘驱动 本文提供多种格式供: 在线阅读 HTML HTMLs PDF CHM TXT RTF 下载(7zip压缩包) HTML HTMLs PDF CHM TXT RTF HTML版本的在线地址为: http://www.crifan.com/files/doc/docbook/usb_disk_driver/release/html/usb_disk_driver.htm

教你在Linux下挂载U盘

环境 Red Hat Linux 9 + Windows 7 Ultimate 问题 Linux下如何挂载U盘 解决 1.Linux下挂载U盘需要启动 Vmware的USB服务(VMware USBArbitration Service): 2.鼠标点进 Linux内: 3.桌面---------->新建终端---------->执行fdisk -l 命令查找U盘设备: 4.找到U盘设备名称,执行挂载命令: mount -t vfat/dev/sdb1 /mnt/cdrom 5.进入/mnt/

Linux下删除U盘病毒的方法

  在Linux下使用U盘时,每次都看到一个什么auto之类的文件,怀疑是一个病毒. 但输入ls -l命令发现,属性竟然全不是? 结果是删不掉了. 经过多方查询得知原因是linux不能处理以"."结尾的文件.所以在这个地方不能删除. 不过解决的办法是有的. 方法如下: 如果你是系统自动挂载U盘,请先umount 然后,输入如下: sudo mount -t msDos /dev/sd* /media/disk 这里和默认不同的是 -t参数从vfat 变成msdos.因为vfat是针对f

Linux下清除U盘病毒的方法

  在Linux下使用U盘时,每次都看到一个什么auto之类的文件,怀疑是一个病毒. 但输入ls -l命令发现,属性竟然全不是? 结果是删不掉了. 经过多方查询得知原因是linux不能处理以"."结尾的文件.所以在这个地方不能删除. 不过解决的办法是有的. 方法如下: 如果你是系统自动挂载U盘,请先umount 然后,输入如下: sudo mount -t msDos /dev/sd* /media/disk 这里和默认不同的是 -t参数从vfat 变成msdos.因为vfat是针对f

Linux下清除U盘病毒小技巧

  在Linux下使用U盘时,每次都看到一个什么auto之类的文件,怀疑是一个病毒. 但输入ls -l命令发现,属性竟然全不是? 结果是删不掉了. 经过多方查询得知原因是linux不能处理以"."结尾的文件.所以在这个地方不能删除. 不过解决的办法是有的. 方法如下: 如果你是系统自动挂载U盘,请先umount 然后,输入如下: sudo mount -t msDos /dev/sd* /media/disk 这里和默认不同的是 -t参数从vfat 变成msdos.因为vfat是针对f

小技巧在Linux下删除U盘病毒

  在Linux下使用U盘时,每次都看到一个什么auto之类的文件,怀疑是一个病毒. 但输入ls -l命令发现,属性竟然全不是? 结果是删不掉了. 经过多方查询得知原因是linux不能处理以"."结尾的文件.所以在这个地方不能删除. 不过解决的办法是有的. 方法如下: 如果你是系统自动挂载U盘,请先umount 然后,输入如下: sudo mount -t msDos /dev/sd* /media/disk 这里和默认不同的是 -t参数从vfat 变成msdos.因为vfat是针对f

Linux下c++程序内存泄漏检测代码范例

Linux下对于程序内存泄漏检测的方法很多,最常用的的莫过于使用valgrind工具.但是valgrind相当于让程序在虚拟机中运行,会带 来较大的系统资源开销,还会对程序的运行效率产生较大影响,对于那种资源占用大的程序,如果需要长时间运行才能暴露的泄漏问题,它就显得不太好用. linux下的c++程序中自己实现一个轻量级的泄漏检测代码其实是比较方便的,下面我就给出一个简单的范例,并作简单的说明.当然,我们还是应该提倡使用共享指针,用共享指针自动管理内存可以避免内存泄漏这样的不必要的麻烦. 基本

linux下powerpath对盘与更改盘符名的教程

现网的几套oracle rac环境下经常会有EMC存储扩盘动作,而EMC的powerpath软件本身也会存在软件版本升级的问题.每次操作时都会担心盘符变动和一套rac下的几个节点盘符名一致的问题.通过EMC的powerpath内的emcpadm 与powermt 命令可以快速的解决该问题.本篇就针对该问题的维护经验做一个小结. 一.powerpath盘符信息的导出.导入与检查  1.查看当前的路径聚合信息 先看输出结果: # powermt display dev=all|more Pseudo

linux下check_logs日志轮询检测异常脚本

文件目录结构如下   contacts_list文件 里面是填写你的邮件地址的 global_profile  代码如下 复制代码 #!/bin/bash PRG="$0" while [ -h "$PRG" ] ; do   ls=`ls -ld "$PRG"`   link=`expr "$ls" : '.*-> \(.*\)$'`   if expr "$link" : '/.*' > /