美文网首页
I/O优化(上)

I/O优化(上)

作者: 陈萍儿Candy | 来源:发表于2020-11-02 08:39 被阅读0次
image.png

你可以看到整个文件 I/O 操作由应用程序、文件系统和磁盘共同完成。首先应用程序将 I/O 命令发送给文件系统,然后文件系统会在合适的时机把 I/O 操作发给磁盘。
CPU 和内存相比磁盘是高速设备,整个流程的瓶颈在于磁盘 I/O 的性能。所以很多时候,文件系统性能比磁盘性能更加重要,为了降低磁盘对应用程序的影响,文件系统需要通过各种各样的手段进行优化

一,I/O 有时候为什么会突然很慢?
手机厂商的数据通常都是出厂数据,我们在使用 Android 手机的时候也会发现,刚买的时候“如丝般顺滑”的手机,在使用一年之后就会变得卡顿无比。
可能有下面几个原因
1.内存不足。当手机内存不足的时候,系统会回收 Page Cache 和 Buffer Cache 的内存,大部分的写操作会直接落盘,导致性能低下。
2.写入放大。上面我说到闪存重复写入需要先进行擦除操作,但这个擦除操作的基本单元是 block 块,一个 page 页的写入操作将会引起整个块数据的迁移,这就是典型的写入放大现象。低端机或者使用比较久的设备,由于磁盘碎片多、剩余空间少,非常容易出现写入放大的现象。
3.由于低端机的 CPU 和闪存的性能相对也较差,在高负载的情况下容易出现瓶颈。例如 eMMC 闪存不支持读写并发,当出现写入放大现象时,读操作也会受影响。
二,
总的来说文件读写受到 I/O 性能瓶颈的影响,在到达一定速度后整体性能就会受到明显的影响,过多的线程反而会导致应用整体性能的明显下降。
案例一:当系统空闲(36% idle)时,如果没有其他线程需要调度,这个时候才会出现 I/O 等待(60.2% iowait)。案例二:如果我们的系统繁忙起来,这个时候 CPU 不会“无所事事”,它会去看有没有其他线程需要调度,这个时候 I/O 等待会降低(14.2% iowait)。但是太多的线程阻塞会导致线程切换频繁,增大系统上下文切换的开销。

相关文章

  • I/O优化(上)

    你可以看到整个文件 I/O 操作由应用程序、文件系统和磁盘共同完成。首先应用程序将 I/O 命令发送给文件系统,然...

  • I/O优化

    I/O基本知识 整个I/O操作由应用程序、文件系统和磁盘共同完成,应用程序将I/O命令发送到文件系统,文件系统在合...

  • I/O 性能问题定位与优化

    I/O问题定位 I/O性能优化 应用程序优化 使用 mmap 代替 read/write,减少内存拷贝次数 需要同...

  • I/O优化原则

    通常I/O操作,需要经过CPU处理,从网络、内存、磁盘读取数据,最终都会影响电量的消耗。所以,在一般应用开发中,合...

  • 启动优化(下)

    I/O 优化 在负载过高的时候,I/O 性能下降得会比较快。特别是对于低端机,同样的 I/O 操作耗时可能是高端机...

  • Android性能优化——I/O优化

    Bitmap decode BitmapFactory.java提供多个decode Bitmap的API,有de...

  • 网络优化

    网络性能排查工具 网络性能优化 应用程序优化 优化I/O模型 套接字 net.core.optmem_max增大每...

  • Linux 磁盘I/O优化

    文件系统优化 ** 动态调整请求队列数来提高效率,默认请求队列数为:128, 可配置512 **[root@c37...

  • 2018-12-18服务器性能优化基础

    第1个优化点: DNS第2个优化点:TCP --> I/O第3个优化点:请求,响应第4个优化点:Processin...

  • Java NIO - Unix网络模型

    1,常用的I/O模型 1)阻塞I/O(blocking I/O)recvfrom:从socket上获取数据,并捕获...

网友评论

      本文标题:I/O优化(上)

      本文链接:https://www.haomeiwen.com/subject/pfulvktx.html