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就不一 ...
随机推荐
- 济南清北学堂游记 Day 0.
(摄于千佛山山顶,济南城区风光) 看似稳得一比,实则慌如老狗= = 我可能是报到最早的且实力最弱的一只. 早晨六点二十被从床上拉起来,然后在火车站附近匆忙吃了点东西就坐火车去济南了. 路途不算远,大概 ...
- 一个开源的强类型客户端(.NET 中的 Open Fegin)— Rabbit Go
在做RabbitCloud(之前是一个RPC,现在是一个微服务框架)的时候往往避不开客户端代理,之前把这些客户端代理都算作服务框架不可缺少的一部分,随着后期的深入发现这些客户端代理其实可以互通,类似s ...
- R语言-选择样本数量
功效分析:可以帮助在给定置信度的情况下,判断检测到给定效应值时所需的样本量,也可以在给定置信水平的情况下,计算某样本量内可以检测到的给定效应值的概率 1.t检验 案例:使用手机和司机反应时间的实验 l ...
- Selenium_chromedriver与chrome版本映射表(更新至v2)
chromedriver.exe下载地址:http://chromedriver.storage.googleapis.com/index.html chromedriver版本 支持的Chrome版 ...
- 七、Selenium与phantomJS----------动态页面模拟点击、网站模拟登录
每天一个小实例1(动态页面模拟点击,并爬取你想搜索的职位信息) from selenium import webdriver from bs4 import BeautifulSoup # 调用环境变 ...
- shell实现centos7双网卡修改网卡名eth0,eth1,并设置网络
#!/bin/bash interface1=`ls /sys/class/net|grep en|awk 'NR==1{print}'` interface2=`ls /sys/class/net| ...
- Inspinia_admin-V2.3原版(英文)
Inspinia_admin-V2.3原版(英文) Inspinia_admin-V2.3 BootStrap原版(英文) 原版是老外开发的,结果 国内某人翻译成中文版进行二次开发 卖998 演示地址 ...
- Linux 环境下程序不间断运行
一.背景 在linux命令行中执行程序,程序通常会占用当前终端,如果不启动新的终端就没法执行其他操作.简单可以通过'&'将程序放到后台执行,但是这种方法有个问题就是,一旦连接远程服务器 ...
- 剑指offer第七天
30.连续子数组的最大和 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决 ...
- AES-256加密解密
/// <summary> /// AES-256加密 /// </summary> /// <param name="toEncrypt">& ...