当前位置: 首页 > news >正文

Linux系统I/O调优实例

文章目录

    • 一 、资源限制
    • 二、测试硬盘速度:


一 、资源限制

限制用户资源配置文件:/etc/security/limits.conf
[root@xuegod63 ~]# vim /etc/security/limits.conf
每行的格式:
用户名/@用户组名 类型(软限制/硬限制) 选项 值

通常我们在服务器上需要开放的内容:

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

vim /etc/security/limits.conf   #在最添加:*           soft   nofile            1024000
*               hard   nofile           1024000

注:soft是一个警告值,而hard则是一个真正意义的阀值,超过就会报错。soft一定要比hard小。
最大打开的文件数(以文件描叙符,file descripter计数)

2 、启动系统:
reboot #永久生效的缺点,必须重启系统
3、检查:

root@xuegod63 ~]# ulimit -n
1024000
[root@xuegod63 ~]# useradd kill   #以普通用户登录,测试
[root@xuegod63 ~]# su - kill
[mkkk@xuegod63 ~]$ ulimit -n
1024000

实例2:临时修改一个进程可以打开的最大文件数

[root@xuegod63 ~]# ulimit -n  10000   
[root@xuegod63 ~]# ulimit -n
10000

说明:/etc/security/limits.conf 是模块pam_limits.so的配置文件。
pam相关配置文件:
/lib64/security/ #pam模块所在目录
/etc/security/ #pam每个模块的配置文件
/etc/pam.d/ #使用pam功能的服务和应用程序的配置文件

说明:查看系统中哪些应用程序和服务使用了:pam_limits.so 模块

[root@xuegod63 ~]# grep pam_limits.so /etc/pam.d/ -R
/etc/pam.d/system-auth:session     required      pam_limits.so

实例3:nproc #用户可以打开的最大进程数
[root@xuegod63 ~]# vim /etc/security/limits.d/90-nproc.conf #RHEL6 必须这个文件中配置

改:
*          soft    nproc     10240
为:
*          soft    nproc     66666
*          hard    nproc     66666 [root@xuegod63 ~]# reboot    #最好重启一下
[root@xuegod63 ~]# ulimit -u
66666

或:
再打一个终端,直接查看

[root@xuegod63 ~]# ulimit -u
66666

临时:

[root@xuegod63 ~]# ulimit -u 60000
[root@xuegod63 ~]# ulimit -u
60000

注:默认用户可用的最大进程数量1024.这样以apache用户启动的进程就数就不能大于1024了。

[root@apache ~]# 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   

二、测试硬盘速度:

安装:

[root@xuegod64 ~]# yum -y install hdparm
[root@xuegod64 ~]# hdparm -T -t /dev/sda
/dev/sda:

Timing cached reads: 3850 MB in 2.00 seconds = 1926.60 MB/sec
#2秒中直接从内存的 cache读取数据的速度读 3850 MB。 平均1926.60 MB/sec
Timing buffered disk reads: 50 MB in seconds = 13.17 MB/sec
#3.80秒中从硬盘缓存中读 50 MB。 seconds = 13.17 MB/sec

参数:
-t perform device read timings #不使用预先的数据缓冲, 标示了Linux下没有任何文件系统开销时磁盘可以支持多快的连续数据读取.
-T perform cache read timings #直接从内存的 cache读取数据的速度。实际上显示出被测系统的处理器缓存和内存的吞吐量.

测试硬盘写命令: dd
在使用前首先了解两个特殊设备
  /dev/null 伪设备,回收站.写该文件不会产生IO开销
  /dev/zero 伪设备,会产生空字符流,读该文件不会产生IO开销
测试方法:
a.测试磁盘的IO写速度

[root@xuegod64 ~]# dd if=/dev/zero of=/test.dbf bs=8k count=3000
3000+0 records in
3000+0 records out
24576000 bytes (25 MB) copied, 1.04913 s, 23.4 MB/s

可以看到,在1.1秒的时间里,生成25M的一个文件,IO写的速度约为122.6MB/sec;
当然这个速度可以多测试几遍取一个平均值,符合概率统计.

time 命令: 执行命令并计时

[root@xuegod64 ~]# time dd if=/dev/zero of=/test.dbf bs=8k count=3000
3000+0 records in
3000+0 records out
24576000 bytes (25 MB) copied, 1.04913 s, 23.4 MB/s
real	0m1.061s  12:00 出去吃饭
user	0m0.002s  路上 20分
sys	0m0.770s  吃10分钟

注释:
1)实际时间(real time): 从command命令行开始执行到运行终止的消逝时间;
2)用户CPU时间(user CPU time): 命令执行完成花费的用户CPU时间,即命令在用户态中执行时间总和;
3)系统CPU时间(system CPU time): 命令执行完成花费的系统CPU时间,即命令在核心态中执行时间总和。

其中,用户CPU时间和系统CPU时间之和为CPU时间,即命令占用CPU执行的时间总和。实际时间要大于CPU时间,因为Linux是多任务操作系统,往往在执行一条命令时,系统还要处理其它任务。排队时间没有算在里面。
另一个需要注意的问题是即使每次执行相同命令,但所花费的时间也是不一样,其花费时间是与系统运行相关的。

http://www.lryc.cn/news/478301.html

相关文章:

  • 记录Ubuntu OS的异常
  • Vue 3 单元测试与E2E测试
  • 猫用空气净化器哪个牌子好?求除毛好、噪音小的宠物空气净化器!
  • 第十九课 Vue组件中的方法
  • 【JavaScript】V8,Nodejs 与浏览器
  • 内存马浅析
  • 聊一聊Elasticsearch的基本原理与形成机制
  • 应急救援无人车:用科技守护安全!
  • 详解Java之Spring MVC篇二
  • flutter鸿蒙next 使用 InheritedWidget 实现跨 Widget 传递状态
  • 计算机的错误计算(一百四十六)
  • 国标GB28181视频平台EasyCVR私有化视频平台工地防盗视频监控系统方案
  • CUDA系统学习之一软件堆栈架构
  • SpringBoot项目中替换指定版本的tomcat
  • 【5.10】指针算法-快慢指针将有序链表转二叉搜索树
  • 机器学习—前向传播的一般实现
  • 极狐GitLab 签约足下科技,加速国产智驾操作系统的发展与普及
  • 20241102在荣品PRO-RK3566开发板的预置Android13下适配宸芯的数传模块CX6603N
  • 力扣(leetcode)题目总结——哈希表篇
  • AWS RDS Oracle hit ORA-39405
  • Dinky中配置Flink集群
  • 通讯录(C 语言)
  • 对比Java和TypeScript中的服务注册和查找机制
  • Flutter 主流常用第三方库、插件收集
  • 【在Linux世界中追寻伟大的One Piece】多路转接select
  • 补一下 二维 平面直角坐标系 到三维
  • 如何学习Python编程?
  • 使用EasyExcel实现导出excel文件时生成多级下拉选
  • 微信小程序 高校教材征订系统
  • 从0开始的STM32 定时器(I):聊一聊基本定时器