(1).查看I/O运行状态相关工具

 1)查看文件系统块大小

  对于ext4文件系统,查看文件系统块大小

[root@CentOS6 ~]# tune2fs -l /dev/sda1 | grep size
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Block size: 1024  //1024字节,为1KB
Fragment size: 1024
Flex block group size: 16
Inode size: 128

  对于xfs文件系统,查看文件系统块大小

[root@youxi1 ~]# xfs_growfs -l /dev/sda1 | grep bsize
log size unchanged, skipping
data = bsize=4096 blocks=262144, imaxpct=25  //4KB
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2

 2)iostat

  这个命令需要安装,直接yum安装就好

[root@youxi1 ~]# yum -y install sysstat
[root@youxi1 ~]# iostat -d -k -p /dev/sda  //-d仅显示磁盘统计信息;-k以K为单位显示每秒磁盘请求数,默认单位块;-p device|ALL 用于显示块设备及系统分区的统计信息
Linux 3.10.0-862.el7.x86_64 (youxi1) 2019年07月31日 _x86_64_ (4 CPU) Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 1.91 43.02 3.14 158377 11574
sda1 0.50 1.54 0.56 5662 2048
sda2 1.41 41.20 2.59 151667 9526

  说明如下:

kB_read/s 每秒从磁盘读入的数据量,单位为K
kB_wrtn/s 每秒向磁盘写入的数据量,单位为K
kB_read 读入的数据总量,单位为K
kB_wrtn 写入的数据总量,单位为K

  测试:

[root@youxi1 ~]# dd if=/dev/zero of=a.txt bs=10M count=1000; sync  //sync同步到硬盘上,方便看到效果
//另外打开一个窗口
[root@youxi1 ~]# iostat -p sda -dk  //选了一个最接近巅峰的,可以看到每秒写入的数据量
Linux 3.10.0-862.el7.x86_64 (youxi1) 2019年07月31日 _x86_64_ (4 CPU) Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 3.47 20.39 1298.81 160925 10252872
sda1 0.23 0.72 0.26 5662 2048
sda2 3.23 19.54 1298.55 154215 10250824

 3)iotop

  iotop也需要安装

[root@youxi1 ~]# yum -y install iotop

  打开两个窗口,其中一个窗口先运行iotop -o -d 1命令,另一个窗口运行“dd if=/dev/zero of=a.txt bs=10M count=1000; sync”命令,这时候运行iotop命令的窗口可以看到如下情况。

  iotop常用参数:-o,--only只显示在读写磁盘的程序

         -d SEC,--delay=SEC设置刷新时间

  iotop常用交互命令:左右方向键,改变排序方式,默认IO排序

           r改变排序顺序

           o只显示有IO输出的进程

           p进程/线程的显示方式的切换

           a显示累计使用量

           q退出

 4)测试硬盘速度:hdparm和dd

  一般使用hdparm来测试硬盘顺序读的速度,dd来测试硬盘顺序写的速度。

  hdparm需要自行安装,测试。

[root@youxi1 ~]# yum -y install hdparm
[root@youxi1 ~]# hdparm -t --direct /dev/sda  //-t不使用预先的数据缓冲,标示了Liunx下没有任何文件系统开销时磁盘可以支持多快的连续数据读取
//--direct直接绕过缓存进行统计数据
/dev/sda:
Timing O_DIRECT disk reads: 1226 MB in 3.03 seconds = 404.72 MB/sec

  dd是自带的命令。但需要先了解两个特殊设备:/dev/null伪设备,回收站,写该文件不会产生IO开销;/dev/zero伪设备,会产生空字符流,读该文件不会产生IO开销。

[root@youxi1 ~]# dd if=/dev/zero of=/test.dbf bs=1M count=2000 oflag=direct,nonblock
记录了2000+0 的读入
记录了2000+0 的写出
2097152000字节(2.1 GB)已复制,14.5182 秒,144 MB/秒

  可以看到,在14.5182秒的时间里,生成2000M的一个文件,IO写的速度约为144MB/秒,这就是我的硬盘顺序写速度了。当然这个速度可以多测试几遍取一个平均值。

  说明:oflag=direct,nonblock中的direct表示读写数据采用直接IO方式;nonblock表示读写数据采用非阻塞IO方式,这样绕开缓存,测试的更准确。

(2).磁盘I/O的简单调优

 1)ulimit资源限制

  查看所有的资源限制信息

[root@youxi1 ~]# ulimit -a
core file size (blocks, -c) 0  //kdump转储功能打开后产生的core file大小限制
data seg size (kbytes, -d) unlimited  //数据段大小限制
scheduling priority (-e) 0
file size (blocks, -f) unlimited  //文件大小限制
pending signals (-i) 15640
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024  //打开的文件个数限制
pipe size (512 bytes, -p) 8  //管道大小限制
POSIX message queues (bytes, -q) 819200  //消息队列大小限制
real-time priority (-r) 0
stack size (kbytes, -s) 8192  //栈大小限制
cpu time (seconds, -t) unlimited  //CPU使用时间限制
max user processes (-u) 15640  //最大用户进程数限制
virtual memory (kbytes, -v) unlimited  //虚拟内存限制
file locks (-x) unlimited

  临时修改资源限制,例如文件打开的个数

[root@youxi1 ~]# ulimit -n  //查看
1024
[root@youxi1 ~]# ulimit -n 2048  //修改
[root@youxi1 ~]# ulimit -n  //再次查看
2048

  永久修改资源限制需要前往配置文件/etc/security/limits.conf,然后重启系统。每行格式:<范围> <类型> <项目> <数值>。<范围>可以是用户名、@组名、*(所有),还有一个%组名用于maxlogin限制(最大登录数目)。<类型>只有soft和hard,soft是软限制,可以理解为警告值,hard是真正意义上的最大值,超过会报错,所以soft的值不能大于hard的值。<项目>的值就比较多了,可以具体查看文件里的注释。

  这里演示修改打开的文件最大数

[root@youxi1 ~]# vim /etc/security/limits.conf
* soft nofile 4096
* hard nofile 4096
[root@youxi1 ~]# ulimit -n  //重启之前查看一下
2048
[root@youxi1 ~]# init 6
[root@youxi1 ~]# ulimit -n  //重启之后再查看
4096

  另外还有一个目录/etc/security/limits.d/下面也会有一些配置文件,例如我下面的20-nproc.conf文件,这是一个进程限制配置文件

[root@youxi1 ~]# vim /etc/security/limits.d/20-nproc.conf  //我这里自带了两个
* soft nproc 4096
root soft nproc 10240  //这里原本是unlimited,现在改为10240
[root@youxi1 ~]# ulimit -u  //重启之前查看一下
15640
[root@youxi1 ~]# init 6
[root@youxi1 ~]# ulimit -u  //重启之后再查看
10240

  

追加:linux IO 内核参数调优 之 原理和参数介绍

Linux系统调优——磁盘I/O(三)的更多相关文章

  1. Linux系统调优1

    Linux在进行系统调优的时候,首先要考虑整个操作系统的结构,然后针对各个部分进行优化,下面展示一个Linux系统的各个组成部分: 有上图可以看出,我们可以调整的有应用程序,库文件,内核,驱动,还有硬 ...

  2. Linux系统调优——CPU(一)

    (1).系统调优思路 性能优化就是找到系统处理中的瓶颈以及去除这些的过程,性能优化其实是对OS 各子系统达到一种平衡的定义.具体步骤如下: 1. 系统的运行状况:  CPU -> MEM  -& ...

  3. Linux系统调优相关工具

    一.系统调优概述 系统的运行状况: CPU -> MEM -> DISK*-> NETWORK -> 应用程序调优 分析是否有瓶颈(依据当前应用需求) 调优(把错误的调正确) ...

  4. linux系统调优工具

    系统调优思路 性能优化就是找到系统处理中的瓶颈以及去除这些的过程,性能优化其实是对 OS 各子系统达到一种平衡的定义.具体步骤如下: 1. 系统的运行状况: CPU -> MEM -> D ...

  5. [Linux性能调优] 磁盘I/O队列调度策略

    这两天的一个小任务是MongoDB服务器的调优,恰好这段时间对Linux的各种性能诊断.调优感兴趣,就顺着这个任务多翻了些书和文章. 新学到的一个东西是 Linux磁盘的I/O队列调度策略,至少MyS ...

  6. Linux系统调优——内核相关参数(五)

    修改内核参数有3种办法:一种临时修改,两种永久修改. 临时修改是使用sysctl [选项] [参数名=值]命令:永久修改是修改/etc/sysctl.conf文件或修改/proc/sys/目录下的对应 ...

  7. Linux系统调优——网络(四)

    (1).查看网络(Network)运行状态相关工具 1)nload监控总体带宽使用情况 nload需要自己安装,而且在安装前需要安装epel-release [root@youxi1 ~]# yum ...

  8. 1.linux系统调优

    首先来说调优是一门黑色艺术,使用来满足人的感知,通过人的感觉来进行配置,达到让人感觉操作系统速度很块的感觉. 操作系统拥有四个瓶颈:cpu,内存,网络,磁盘.调优主要是对上述四个子系统进行配置优化,其 ...

  9. Linux系统调优

    Linux核心参数都是放置在/proc下面:系统的参数都是放置在/proc/sys swap最好放置在运行最快的硬盘上面,但是swap并能取代ram,因为并有I/O上面的损耗,所以优先考虑检验内存没有 ...

随机推荐

  1. 结构型模式(三) 装饰模式(Decorator)

    一.动机(Motivate) 在房子装修的过程中,各种功能可以相互组合,来增加房子的功用.类似的,如果我们在软件系统中,要给某个类型或者对象增加功能,如果使用"继承"的方案来写代码 ...

  2. css cursor效果图

    效果图: <!DOCTYPE html> <html lang="zh-cmn-Hans"> <head> <meta charset=& ...

  3. tensorflow API _ 2 (tf.app.flags.FLAGS)

    tf.app.flags.FLAGS 的使用,主要是在用命令行执行程序时,需要传些参数,代码如下:新建一个名为:app_flags.py 的文件. #coding:utf-8  import tens ...

  4. UVa 1671 语言的历史——判断两个DFA是否等价

    题意 一个DFA可以用一个5元组  $((Q, \sum , \delta , q_0, F))$ 表示,其中 $Q$ 为状态集,$\sum$ 为字母表,$\delta$ 为转移函数,$q_0$ 为起 ...

  5. js模拟滚动条滚动

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  6. MYSQL安装报错需要.NET4.0

    MySQL安装,提示需要.NET4.0 解决:下载安装.NET4.0即可 链接:https://pan.baidu.com/s/1u0e0lafBbR0QYEcXFsv9sQ 提取码:q6rr 复制这 ...

  7. Tkinter 之ProgressBar进度条标签

    一.参数说明 参数 作用 cursor 鼠标位于进度条内时的形状 length 进度条长度 maximum 进度条最大刻度值 mode  进度条的模式.有两种:‘determinate’和’indet ...

  8. Tkinter 之记事本项目实战

    一.效果图 二.文件 链接:https://pan.baidu.com/s/1CUkfWpfH8t2GSJyy5hYv-A 提取码:5yvn 后续可能做一些功能扩展,有需要源码的可以评论联系我!!!

  9. Java通过JDBC连接MySQL数据库(一)

    JDBC JAVA Database Connectivity java 数据库连接 为什么会出现JDBC SUN公司提供的一种数据库访问规则.规范, 由于数据库种类较多,并且java语言使用比较广泛 ...

  10. Kestrel: System.Exception: Error -4092 EACCES permission denied

    字面理解:  权限问题.. 这种情况往往是因为运行的端口被占用.. 可能是iis上有些站点使用了这个端口.. 也可能是其他原因.. 但大部分是端口问题..