有关磁盘I/O的调优(二)

简介: 【4月更文挑战第5天】有关磁盘I/O的调优的命令,

一、  ulimit资源限制

限制用户资源配置文件/etc/security/limits.conf

[root@xucccc ~]# vim /etc/security/limits.conf

每行的格式:用户名/@用户组    类型(软限制/硬限制)   选项     值

 

1、永久修改一个进程可以打开的最大文件数

[root@xucccc ~]# vim /etc/security/limits.conf  #在文件的最后追加以下内容

*               soft   nofile            1024000

*               hard   nofile           1024000

注:soft是一个警告值,而hard则是一个真正意义的阀值,超过就会报错。一般把soft和hard都配置成一样的值。 最大打开的文件数以文件描叙符file descripter计数)

 

2、启动系统

[root@xucccc ~]# ulimit  -n   #查看一个进程可以打开的文件数,默认是1024

1024

[root@xucccc ~]# reboot   #想要刚修改的limits.conf中配置永久生效,必须重启系统

 

3、系统重启成功后,登录系统上检查:

[root@xucccc ~]# ulimit  -n

1024000

 

方法二:#临时修改

[root@xucccc ~]# ulimit -n  10000   #不用重启系统。

[root@xucccc ~]# ulimit -n  

10000

 

例2:nproc  #配置一个用户可以打开的最大进程数

[root@xucccc ~]# vim /etc/security/limits.d/20-nproc.conf  

改:

5 *          soft    nproc     4096

为:

5 *          soft     nproc     65535

6 *          hard    nproc     65535

[root@xucccc ~]# ulimit -u   #重启前先查看一下,默认是31789。

31789

[root@xucccc ~]# reboot     #重启一下。

[root@xucccc ~]# ulimit  -u

65535

或:

再打一个终端,直接查看

[root@xucccc ~]# ulimit -u

66666

 

临时修改:

[root@xucccc ~]# ulimit -u 60000

[root@xucccc ~]# ulimit -u

60000

注:如果默认一个用户可用的最大进程数是1024.那么apache用户启动的进程就数就不能大于1024了。

二、查看所有的资源限制信息

[root@ xuccc ~]# 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) 27955

max locked memory       (kbytes, -l) 32

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) 10240  栈大小

cpu time               (seconds, -t) unlimited  CPU时间使用限制

max user processes              (-u) 27955   最大的用户进程数限制

virtual memory          (kbytes, -v) unlimited    虚拟内存限制

   file locks                      (-x) unlimited  

image.png

三、  测试硬盘速度


一般情况下使用hdparm来测试磁盘顺序读的速度。dd命令用来测试磁盘顺序写的速度。

1、hdparm命令常用参数

参数:

-t   perform device read timings   #不使用预先的数据缓冲, 标示了Linux下没有任何文件系统开销时磁盘可以支持多快的连续数据读取.   perform [pəˈfɔ:m] #执行

--direct  Use O_DIRECT to bypass page cache for timings  #直接绕过缓存进行统计数据

2、测试硬盘读速度

[root@xucccc ~]#  hdparm  -t --direct  /dev/sda

/dev/sda:

Timing O_DIRECT disk reads: 258 MB in  3.02 seconds =  85.32 MB/sec

注: 弹出的含意是3.02秒中从硬盘缓存中读258M,平均每秒读85.32MB。Timing  [ˈtaɪmɪŋ] 计时,

3、使用dd命令测试磁盘IO的顺序写和读速度

在使用前首先了解两个特殊设备/dev/null 伪设备,回收站.写该文件不会产生IO开销;/dev/zero 伪设备,会产生空字符流,读该文件不会产生IO开销

4、使用dd测试磁盘的IO顺序写速度

[root@xucccc ~]# dd if=/dev/zero of=/test.dbf bs=1M count=2000 oflag=direct,nonblock

记录了2000+0 的读入

记录了2000+0 的写出

2097152000字节(2.1 GB)已复制,46.335 秒,45.3 MB/秒

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

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

总结:在生产环境下,建议使用hdparm来测试磁盘读,使用dd来测试磁盘写速度


四、  time命令测试进程运行时间

     time  命令: 执行命令并计时  

例1: 测试dd 命令使用时间和开销

[root@xucccc ~]# time dd if=/dev/zero of=/test.dbf bs=1M count=200

记录了200+0 的读入

记录了200+0 的写出

209715200字节(210 MB)已复制,3.79592 秒,55.2 MB/秒

real 0m4.225s  

user 0m0.002s

sys 0m2.624s

注释:

1)实际时间(real time): 从command命令行开始执行到运行终止的消逝时间;

2)用户CPU时间(user CPU time): 命令执行完成花费的用户CPU时间,即命令在用户态中执行时间总和;

3)系统CPU时间(system CPU time): 命令执行完成花费的系统CPU时间,即命令在核心态中执行时间总和。

其中,用户CPU时间和系统CPU时间之和为CPU时间,即命令占用CPU执行的时间总和。实际时间要大于CPU时间,因为Linux是多任务操作系统,往往在执行一条命令时,系统还要处理其它任务。排队时间没有算在里面。

另一个需要注意的问题是即使每次执行相同命令,但所花费的时间也是不一样,其花费时间是与系统运行相关的。


目录
相关文章
|
6月前
|
消息中间件 存储 Java
jvm性能调优实战 - 47超大数据量处理系统是如何OOM的
jvm性能调优实战 - 47超大数据量处理系统是如何OOM的
76 0
|
1月前
|
缓存 监控 固态存储
如何优化磁盘性能?
【10月更文挑战第4天】如何优化磁盘性能?
55 4
|
1月前
|
存储 监控 关系型数据库
磁盘I/O性能
磁盘I/O性能
40 3
|
5月前
|
存储 分布式计算 资源调度
如何优化Hadoop集群的内存使用?
【6月更文挑战第18天】如何优化Hadoop集群的内存使用?
142 6
|
6月前
|
弹性计算 运维 Shell
检查磁盘利用率
【4月更文挑战第30天】
57 3
|
6月前
|
存储 弹性计算 运维
磁盘使用分析
【4月更文挑战第30天】
46 0
|
存储 弹性计算 固态存储
三分钟磁盘存储性能IOPS、I/O及吞吐量指标详解
磁盘存储性能指标IOPS是什么?磁盘I/O和吞吐量是指什么?详细说下磁盘存储性能指标I/O、吞吐量和IOPS之间的关系及意义,以阿里云服务器为例,来详细说下高IO磁盘性能使用场景及ECS云服务器实例规格选择:
|
存储 缓存 固态存储
Linux性能调优之内存负载调优的一些笔记
+ 整理一些Linux内存调优的笔记,分享给小伙伴,博文没有涉及的Demo,理论方法偏多,可以用作内存调优入门 博文内容涉及: Linux内存管理的基本理论 寻找内存泄露的进程 内存交换空间调优 不同方式的内存回收 食用方式 需了解Linux基础知识 理解不足小伙伴帮忙指正
418 1
Linux性能调优之内存负载调优的一些笔记
|
安全 Linux 网络安全
查看 cpu、内存、磁盘相关指标
查看 cpu、内存、磁盘相关指标
|
缓存 算法 固态存储
磁盘算法
磁盘算法
253 0