zoukankan      html  css  js  c++  java
  • [Linux] 磁盘IO性能查看和优化以及iostat命令

    今天听到看部门同事有遇到IO过高的问题 , 简单的查询了下

     iostat命令:

    %user:CPU处在用户模式下的时间百分比。

    %nice:CPU处在带NICE值的用户模式下的时间百分比。

    %system:CPU处在系统模式下的时间百分比。

    %iowait:CPU等待输入输出完成时间的百分比。

    %steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。

    %idle:CPU空闲时间百分比。

    如果%iowait的值过高,表示硬盘存在I/O瓶颈

    如果%idle值高,表示CPU较空闲

    如果%idle值高但系统响应慢时,可能是CPU等待分配内存,应加大内存容量。

    如果%idle值持续低于10,表明CPU处理能力相对较低,系统中最需要解决的资源是CPU。

    工作机制

    当应用程序需要读取文件中的数据时,操作系统先分配一些内存,将数据从存储设备读入到这些内存中,然后再将数据分发给应用程序;当需要往文件中写数据时,操作系统先分配内存接收用户数据,然后再将数据从内存写到磁盘上。
    对于每个文件的第一个读请求,系统读入所请求的页面并读入紧随其后的少数几个页面(不少于一个页面,通常是三个页面),这时的预读称为同步预读。
    如果应用程序接下来是顺序读取的话,那么文件 cache 命中,OS 会加大同步预读的范围,增强缓存效率,此时的预读被称为异步预读
    如果接下来 cache 没命中,那么 OS 会继续使用同步预读。

    因此基本思路就是:

    尽量避免磁盘的随机IO , 尽量利用磁盘预读缓存 , 利用局部性原理
    尽可能地顺序读写一个文件
    单进程读写硬盘
    避免对大目录操作
    把小文件的读写转换为大文件的写

  • 相关阅读:
    XSS练习小游戏和答案参考
    nxlog以syslog方式发送日志
    Hydra—密码爆破神器
    syslog服务器配置笔记
    信息安全工具汇总整理
    nmap使用指南
    Cleaner, more elegant, and harder to recognize (msdn blog)
    Golang 中的坑 一
    Concurrency Is Not Parallelism (Rob pike)
    golang sql database drivers
  • 原文地址:https://www.cnblogs.com/taoshihan/p/14119321.html
Copyright © 2011-2022 走看看