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就不一 ...
随机推荐
- ABP示例程序-使用AngularJs,ASP.NET MVC,Web API和EntityFramework创建N层的单页面Web应用
本片文章翻译自ABP在CodeProject上的一个简单示例程序,网站上的程序是用ABP之前的版本创建的,模板创建界面及工程文档有所改变,本文基于最新的模板创建.通过这个简单的示例可以对ABP有个更深 ...
- ABP官方文档翻译 5.2 动态We API层
动态Web APID层 创建动态Web API控制器 ForAll方法 重写ForAll ForMethods Http动词 WithVerb方法 HTTP特性 命名约定 API管理器 RemoteS ...
- js中splice()的用法
实例 移除数组的第三个元素,并在数组第三个位置添加新元素: var fruits = ["Banana", "Orange", "Apple" ...
- BZOJ 2733: [HNOI2012]永无乡 [splay启发式合并]
2733: [HNOI2012]永无乡 题意:加边,询问一个连通块中k小值 终于写了一下splay启发式合并 本题直接splay上一个节点对应图上一个点就可以了 并查集维护连通性 合并的时候,把siz ...
- PHP实现session对象封装
<?php class Session { private $db; // 设置数据库变量 private $expiry = 3600; // 设置Session失效时间 public fun ...
- mysqldump 备份导出数据排除某张表
就用 --ignore-table=dbname.tablename参数就行,可以忽略多个. /usr/bin/mysqldump -- -uroot -p123456 dbname --ignore ...
- 使用VNC+SSH建立安全的远程桌面访问WINDOWS服务器
用了一段时间的MONO,现在MONO也支持了ENTITY FRAMEWORK 6.但是实际上在LINUX环境里用MYSQL还是会有很多坑.并且之前在网络游戏服务端SCUT上扩展一些功能时候也遇到了一些 ...
- css渲染(一) 字体和文本
一.字体属性 1.默认字体系列 chrome/opera:"宋体" firefox:"微软雅黑" safari/IE:Times,"宋体" ...
- Nginx限流办法
Nginx 限流 电商平台营销时候,经常会碰到的大流量问题,除了做流量分流处理,可能还要做用户黑白名单.信誉分析,进而根据用户ip信誉权重做相应的流量拦截.限制流量.Nginx自身有的请求限制模块ng ...
- Nginx和php是怎么通信的?
先来看一下搭建好PHP运行环境的Nginx配置文件. 非常重要的就是 fastcgi_pass 指令了,这个指令用于指定 fpm 进程监听的地址,Nginx 会把所有的 php 请求翻译成 fastc ...