DISK Write Test

time (dd if=/dev/zero of=test bs=1024 count=3MB;sync)

600GB * 4 RAID0

3000MB 6.967s 6.837s 7.748s speed=428MBps

6TB * 12 RAID0

3000MB 6.235s 5.550s 6.334s speed=500MBps

4TB * 12 RAID10

3000MB 15s 16s 16s speed = 200MBps

3.1 编写内核模块测试硬盘的写速率 步骤 24 正确编写满足功能的源文件,包括 write_to_disk.c 源文件和 Makefile 文件。 源代码如下: #include <linux/module.h> #include <linux/fs.h> #include <linux/rtc.h> #define buf_size 1024 #define write_times 524288 MODULE_LICENSE("GPL"); struct timeval tv; static int __init write_disk_init(void) { struct file *fp_write; char buf[buf_size]; int i; int write_start_time; int write_start_time_u; int write_end_time; int write_end_time_u; int write_time; loff_t pos; printk("Start write_to_disk module...\n"); for(i = 0; i < buf_size; i++) { buf[i] = i + '0'; }fp_write = filp_open("/home/tmp_file", O_RDWR | O_CREAT,0644); if (IS_ERR(fp_write)) { printk("Failed to open file...\n"); return -1; }pos = 0; do_gettimeofday(&tv); write_start_time = (int)tv.tv_sec; write_start_time_u = (int)tv.tv_usec; for(i = 0; i < write_times; i++) { kernel_write(fp_write, buf, buf_size, &pos); }do_gettimeofday(&tv); write_end_time = (int)tv.tv_sec; write_end_time_u = (int)tv.tv_usec; filp_close(fp_write, NULL); write_time = (write_end_time - write_start_time) * 1000000 + (write_end_time_u - write_start_time_u); printk(KERN_ALERT "Writing to file costs %d us\n", write_time); printk("Writing speed is %d M/s\n", buf_size * write_times / write_time); return 0; }static void __exit write_disk_exit(void) { printk("Exit write_to_disk module...\n"); }module_init(write_disk_init); module_exit(write_disk_exit); [root@openEuler ~]# cd tasks_k/6/write_disk/ [root@openEuler write_disk]# ls Makefile write_to_disk.c 步骤 25 编译源文件。 [root@openEuler write_disk]# make make -C /root/kernel M=/root/tasks_k/6/write_disk modules make[1]: Entering directory '/root/kernel' CC [M] /root/tasks_k/6/write_disk/write_to_disk.o Building modules, stage 2. MODPOST 1 modules CC /root/tasks_k/6/write_disk/write_to_disk.mod.o LD [M] /root/tasks_k/6/write_disk/write_to_disk.ko make[1]: Leaving directory '/root/kernel' 步骤 26 加载编译完成的内核模块,并查看加载结果。 [root@openEuler write_disk]# insmod write_to_disk.ko [root@openEuler write_disk]# dmesg | tail -n3 [104186.675791] Start write_to_disk module... [104187.685460] Writing to file costs 1009173 us [104187.685732] Writing speed is 531 M/s [root@openEuler read_disk]# ll /home/tmp_file -rw-------. 1 root root 512M Nov 12 14:52 /home/tmp_file 步骤 27 卸载内核模块,并查看结果。 [root@openEuler write_disk]# rmmod write_to_disk [root@openEuler write_disk]# dmesg | tail -n4 [104186.675791] Start write_to_disk module... [104187.685460] Writing to file costs 1009173 us [104187.685732] Writing speed is 531 M/s [104237.777141] Exit write_to_disk module...
07-03
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值