您当前的位置: 首页 >  linux

qianbo_insist

暂无认证

  • 0浏览

    0关注

    399博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

linux 高级文件IO

qianbo_insist 发布时间:2021-08-08 09:17:29 ,浏览量:0

1、I/O 概念

首先明确概念:I/O 的意思是:输入 输出,任何流程也都是输入输出。任何流也是输入输出,如内存,文件,网络 注意在linux里面大部分设备都可以称为文件,所以这里叫做文件I/O.

1.1 分散 聚集 I/O

允许一次调用同时从多个缓冲区读取数据或者写入多个缓冲区。 **适用场景:**聚集多个不同的数据结构变量,完成每次的I/O事务。 和我们普通的读写文件程序不一样,分散聚集I/O称为向量 读写, 一次可以写入多个缓冲区,这个对于存入不同内存区域的缓冲区写入文件来说非常方便 函数:

writev
#include 
#include 
#include 
#include 
#include 
#include 

int main()
{
    struct iovec iov[3];
    ssize_t nr;
    int fd,i;
    char *buf[] ={
        "钱波测试\n",
        "ab测试\n",
        "test\n"
    };
    fd =open("/test.yml",O_WRONLY|O_CREAT|O_TRUNC);
    if(fd==-1)
    {
        perror("open");
        return 1;
    }
    for(int i =0;i /sys/block/hda/queue/scheduler 解释: 选择cfq 调度器 -->为hda设备,当然这个一定需要root权限 

3、优化I/O性能

优化I/O 性能: 1、 选择合适的调度器 2 、在应用程序的写法中,尽量自己合并写和读操作 3 、减少内存的拷贝 减少,memset memcpy操作 4 、网络流的队列尽量减少,甚至可以去除 5 、尽量理解操作系统,理解机制,周密思考 6、研究合适的I/O 选择,合并线程,合并交互 7、磁盘的I/O是最慢的,一定是先决绝瓶颈问题

关注
打赏
1663161521
查看更多评论
0.7590s