设为首页 加入收藏

TOP

Linux系统调优介绍(五)
2023-07-23 13:39:31 】 浏览:122
Tags:Linux
he # 4. 应用程序或脚本中的文件路径修改为挂载点目录下的路径 # 5. 当文件读取或写入完成后,可以通过rsync等工具将缓存中的文件同步到硬盘上,从而避免数据的丢失。 rsync -a /mnt/cache/ /path/to/files/

内存缓存适用的场景:

(1)Web服务器:在Web服务器中,通常会缓存静态文件(如CSS、java script、图片等),以提高网站的性能和响应速度。使用tmpfs作为内存缓存,可以将这些静态文件缓存到内存中,提高数据读取速度,减轻磁盘负载。

(2)数据库服务器:在数据库服务器中,经常需要将一些数据放在内存中进行缓存,以提高查询性能。使用tmpfs作为内存缓存,可以将这些数据缓存到内存中,避免频繁的磁盘IO操作,提高查询性能。

(3)虚拟机:在虚拟机环境中,可以使用tmpfs作为内存缓存,以提高虚拟机的磁盘IO性能。例如,可以将虚拟机的磁盘镜像文件(如vmdk、qcow2等)缓存到tmpfs中,避免频繁的磁盘IO操作。

5、配置大页

大页是一种特殊的内存页,它的大小通常是默认页大小的几倍,比如 2MB 或者 1GB。

在内存充足的情况下,可以提高 Linux 系统的性能。使用大页可以减少内存页表的大小,从而提高内存访问的效率。对于一些需要频繁访问内存的应用程序(比如数据库),启用大页可以显著提高性能。

例如:运行虚拟机的时候配置大页能显著提升性能。

如果内存小配置大页会降低系统的性能。

配置实现流程:

# 1. 查看是否开启大页功 默认情况下,已经开启了透明大页功能:
root@ubuntu:~# cat /sys/kernel/mm/transparent_hugepage/enabled 
always [madvise] never

# 2. 查看大页的数目 默认为0
root@ubuntu:~# cat /proc/sys/vm/nr_hugepages
0

# 也可以通过下面的方法查看
root@ubuntu:~# cat /proc/meminfo  | grep -i Hugep
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
FileHugePages:         0 kB
HugePages_Total:       0    # 大页的总数为0
HugePages_Free:        0    # 前可用的大页数
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

# 3. 设置大页的数量  表示使用2000个2M大小的大页
echo 2000 > /proc/sys/vm/nr_hugepages

# 挂载大页
mount -t hugetlbfs nodev /PATH

# 查看是否正常挂载
 cat /proc/mounts | grep hugetlbfs

6、脏数据的回收

脏数据就是对内存中已被修改但尚未写入磁盘的数据进行回收。

脏数据自动回收:

通过修改vm.dirty_expire_centisecsvm.dirty_writeback_centisecs的值来调整脏数据回收的时间间隔。

# 脏数据在内存中存留的时间,单位为1/100秒
ehigh@master-1:~$ cat /proc/sys/vm/dirty_expire_centisecs 
3000

# 脏数据的写入间隔时间,单位为1/100秒
ehigh@master-1:~$ cat /proc/sys/vm/dirty_writeback_centisecs
500

脏数据手动回收:

使用sync命令将内存中的所有脏数据写回磁盘,以减少数据丢失或损坏的风险。

sync命令会强制将文件系统中所有修改过的数据缓存写回磁盘,包括脏数据和元数据。

如何调整脏数据回收的时间:

  • 如果追求系统的性能,可以把vm.dirty_expire_centisecsvm.dirty_writeback_centisecs的值改大,减少磁盘IO的操做。
  • 如果追求数据的安全性,可以把vm.dirty_expire_centisecsvm.dirty_writeback_centisecs的值改小,防止数据丢失。

7、清理缓存

只有在应用程序出现崩溃或无响应的情况,系统出现“内存不足”或“无法为应用程序分配足够的内存”中各种情况可以考虑清理缓存,以确保系统的正常运行。

注意:清空缓存可能会导致系统性能下降,因为需要重新从磁盘读取数据。因此,在清空缓存之前,需要仔细考虑清空缓存的必要性,并确保系统有足够的内存来重新缓存数据。

例如:free非常小,而available比较大,说明系统正在使用大量的缓存来提高性能,并且这些缓存可以被重新分配给新的进程或应用程序,这种情况清理缓存会影响性能。
image

清空文件系统缓存:

ehigh@ubuntu:~$ sudo sync && echo 3 > /proc/sys/vm/drop_caches

清空内存缓存:

ehigh@ubuntu:~$ sudo echo 1 > /proc/sys/vm/drop_caches

三:磁盘的优化方法:

1、挂载参数优化

在挂载硬盘时,使用noatime选项可以避免在每次读取文件时更新文件的访问时间,减少磁盘IO操作,提高硬盘性能。在/etc/fstab文件中添加noatime选项即可。

2、文件系统优化

对于大量小文件的读写,使用 ext4 文件系统可能比使用 XFS 文件系统更适合。

Linux中一个文件的组成:

Linux上的一个文件 ≈ 一个Inode + 若干Block

image

Inode:存放文件的属性信息,每个Inode有一个唯一的Inode号,Inode的节点号是一个32位无符号的整型数,因此每个文件系统上的inode节点总数最多为2^32个(约42亿个)。

Block:存放文件真正的数据部分,一个Block的大小默认是4KB。

image

# nodes per group:表示每个块组中 inode 的数量
# Blocks per group:表示每个块组block的数量

Inode的默认分配策略:

一般系统会将1%的磁盘空间分配为inode区域,如果默认每个block的大小是4KB,Inode的默认大小是256Byte,那么一个block可以存放16个Inode。

Inode数量对硬盘的影响:

硬盘在格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。

Inode数量多:能存储更多的文件,可能会造成增加磁盘碎片的概率,影响文件系统的性能,还会使得文件系统的检查变慢,导致开机变慢。

Inode数量少:存储的文件数量变少,但是最大可存储文件数量也大大减少

调整Inode的数量:

如果硬盘上存放有很多小文件,会导致Inode的数量快速被用完,造成inode 节点不足的问题。

例如:创建文件系统时手动设置 inode 数量:

# 将 inode 数量设置为 2000000
mkfs.ext4 -N 2000000 /dev/sdb1

3、根据不同的场景选择磁盘调度算法

在Linux系统中,磁盘的三种调度算法分别为 CFQ、Deadline 和 NOOP

CFQ调度算法

Linux系统默认的磁盘调度算法,

首页 上一页 2 3 4 5 6 7 下一页 尾页 5/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇ssh 远程连接方式总结 下一篇centos8-x86_64安装kylinv10-arrc..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目