文章目录
- Pre
- Linux 的 /proc/sys/vm 简述
- 什么是 /proc/sys/vm?
- 主要的配置文件及其用途
- 参数调整对系统的影响
- dirty_background_ratio 和 dirty_ratio
- swappiness
- overcommit_memory 和 overcommit_ratio
- min_free_kbytes
- 实例与使用建议
- 调整 swappiness
- 设置 min_free_kbytes
- 设置 overcommit_memory
- 总结
Pre
Linux - 记一次某Java程序启动报错(申请内存失败)
Linux 的 /proc/sys/vm 简述
在 Linux 操作系统中,内核管理着许多复杂的任务,其中包括内存管理。作为用户和管理员,我们可以通过配置内核参数来优化系统性能。而 /proc/sys/vm
目录正是提供了这样的接口。
什么是 /proc/sys/vm?
/proc/sys/vm
是 Linux 系统中的一个虚拟目录,属于 /proc
文件系统的一部分。/proc
文件系统提供了一种与内核交互的方式,其中的许多文件允许我们查看和调整内核的行为。/proc/sys/vm
目录专门用于内核的虚拟内存(Virtual Memory)管理相关的参数设置。
主要的配置文件及其用途
在 /proc/sys/vm
目录下,有多个文件,每个文件对应一个特定的内存管理参数。以下是一些常见且重要的配置文件及其用途:
- dirty_background_ratio 和 dirty_ratio
- dirty_background_ratio:定义了后台进程开始将脏数据(未写入磁盘的数据)写回磁盘的阈值,表示为可用内存的百分比。
- dirty_ratio:定义了任何进程在写入新的脏数据之前,必须先将现有的脏数据写回磁盘的阈值,同样表示为可用内存的百分比。
- swappiness
- swappiness:控制系统倾向于使用交换空间的程度。值范围是 0 到 100,值越高,系统越倾向于将内存中的数据换出到交换空间。
- overcommit_memory 和 overcommit_ratio
- overcommit_memory:定义内存过度分配的策略。0 表示启用启发式过度分配,1 表示允许任何分配请求,2 表示根据 overcommit_ratio 限制分配。
- overcommit_ratio:在 overcommit_memory 设置为 2 时使用,定义可分配内存总量的百分比。
- min_free_kbytes
- min_free_kbytes:定义系统尝试保持的最小空闲内存量,以避免内存不足导致的性能问题。
参数调整对系统的影响
dirty_background_ratio 和 dirty_ratio
调节这两个参数可以影响系统的 I/O 性能。将这些值设置得较低,可以减少系统内存中脏数据的数量,从而提高数据一致性,但可能增加磁盘 I/O 操作的频率。设置得较高,可以减少磁盘 I/O 操作,但可能导致较长的写操作延迟。
swappiness
调节 swappiness 可以平衡内存和交换空间的使用。将 swappiness 设置得较低(如 10),系统会更倾向于使用物理内存,从而提高性能。将 swappiness 设置得较高(如 60),系统会更频繁地使用交换空间,可能在内存紧张时提高系统的稳定性。
overcommit_memory 和 overcommit_ratio
调整这些参数可以控制内存分配策略。启用内存过度分配可以提高系统灵活性,但可能导致 OOM(Out Of Memory)错误。限制过度分配可以提高系统稳定性,但可能会拒绝一些内存分配请求。
min_free_kbytes
设置这个参数可以确保系统有足够的空闲内存来应对突发的内存需求。过低的值可能导致性能问题,而过高的值可能浪费内存资源。
实例与使用建议
调整 swappiness
假设我们希望减少交换空间的使用,可以通过以下命令调整 swappiness:
echo 10 > /proc/sys/vm/swappiness
设置 min_free_kbytes
为了确保有足够的空闲内存,可以调整 min_free_kbytes:
echo 65536 > /proc/sys/vm/min_free_kbytes
设置 overcommit_memory
点这里
总结
/proc/sys/vm
目录提供了丰富的内存管理参数,允许用户根据具体需求优化系统性能。理解并合理配置这些参数,可以显著提高 Linux 系统的效率和稳定性。