禁用服务器虚拟内存

文章讲述了在项目实施中需要禁用swap内存以减少磁盘IO负担,介绍了如何通过`free-h`检查swap使用,以及使用`swapon-s`,`swapoff`和`swapoff-a`来管理虚拟内存,提及了一个关闭8GB虚拟内存的例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这次项目实施,要求禁用swap内存。这部分是虚拟内存,虽然增大了内存使用量,但是消耗了磁盘IO的性能(当然,根据实际情况判断是否使用)。

检查内存
free -h
查看当前swap的使用情况
swapon -s
关闭对应的虚拟内存
swapoff swap_name
关闭所有虚拟内存
swapoff -a

下述操作关闭了8G的虚拟内存
在这里插入图片描述

目录 第一章 Linux底层分段分页机制 5 1.1 基于x86的Linux分段机制 5 1.2 基于x86的Linux分页机制 7 1.2.1 页全局目录和页表 8 1.2.2 线性地址到物理地址 10 1.2.3 线性地址字段处理 13 1.2.4 页表处理 15 1.3 扩展分页与联想存储器 20 1.4 Linux内存布局 21 1.5 内核空间和用户空间 23 1.5.1 初始化临时内核页表 24 1.5.2 永久内核页表的初始化 32 1.5.3 第一次进入用户空间 41 1.5.4 内核映射机制实例 44 1.6 固定映射的线性地址 48 1.7 高端内存内核映射 50 1.8.1 永久内存映射 50 1.8.2 临时内核映射 55 第二章 内核级内存管理系统 58 2.1 Linux页面管理 58 2.1.1 NUMA架构 61 2.1.2 内存管理区 62 2.2 伙伴系统算法 65 2.2.1 数据结构 66 2.2.2 块分配 67 2.2.3 块释放 69 2.3 Linux页面级内存管理 72 2.3.1 分配一组页面 73 2.3.2 释放一组页面 80 2.4 每CPU页面高速缓存 81 2.4.1 数据结构 81 2.4.2 通过每CPU 页高速缓存分配页面 82 2.4.3 释放页面到每CPU 页面高速缓存 83 2.5 slab分配器 85 2.5.1 数据结构 86 2.5.2 分配/释放slab页面 92 2.5.3 增加slab数据结构 93 2.5.4 高速缓存内存布局 94 2.5.5 slab着色 95 2.5.6 分配slab对象 96 2.5.7 释放Slab对象 100 2.5.8 通用对象 102 2.5.9 内存池 103 2.6 非连续内存区 104 2.6.1 高端内存区回顾 105 2.6.2 非连续内存区的描述符 106 2.6.3 分配非连续内存区 109 2.6.4 释放非连续内存区 113 第三章 进程的地址空间 117 3.1 用户态内存分配 117 3.1.1 mm_struct数据结构 118 3.1.2 内核线程的内存描述符 122 3.2 线性区的数据结构 123 3.2.1 线性区数据结构 123 3.2.2 红-黑树算法 126 3.2.3 线性区访问权限 128 3.3 线性区的底层处理 130 3.3.1 查找给定地址的最邻近区 131 3.3.2 查找一个与给定的地址区间相重叠的线性区 135 3.3.3 查找一个空闲的地址区间 135 3.3.4 向内存描述符链表中插入一个线性区 137 3.4 分配线性地址区间 141 3.5 释放线性地址区间 151 3.5.1 do_munmap()函数 151 3.5.2 split_vma()函数 153 3.5.3 unmap_region()函数 155 3.6 创建和删除进程的地址空间 156 3.6.1 创建进程的地址空间 156 3.6.2 删除进程的地址空间 175 3.6.3 内核线程1号的地址空间 176 3.7 堆的管理 178 第四章 磁盘文件内存映射 182 4.1 内存映射的数据结构 182 4.2 内存映射的创建 184 4.3 内存映射的请求调页 194 4.4 刷新内存映射的脏页 203 4.5 非线性内存映射 210 第五章 页面的回收 215 5.1 页框回收概念 215 5.1.1 选择目标页 216 5.1.2 PFRA设计 217 5.2 反向映射技术 218 5.2.1 匿名页的反向映射 220 5.2.2 优先搜索树 226 5.2.3 映射页的反向映射 231 5.3 PFRA实现 235 5.3.1 最近最少使用(LRU)链表 236 5.3.2 内存紧缺回收 242 5.3.3 回收磁盘高速缓存的页 267 5.3.4 周期回收 273 5.3.5 内存不足删除程序 283 第六章 交换机制 289 6.1 交换区数据结构 289 6.1.1 创建交换区 290 6.1.2 交换区描述符 291 6.1.3 换出页标识符 293 6.2 激活和禁用交换区 295 6.2.1 sys_swapon()系统调用 296 6.2.2 sys_swapoff()系统调用 304 6.2.3 try_to_unuse()函数 308 6.3 分配和释放页槽 313 6.3.1 scan_swap_map()函数 313 6.3.2 get_swap_page()函数 316 6.3.3 swap_free()函数 318 6.4 页面的换入换出 320 6.4.1 交换高速缓存 320 6.4.2 换出页 323 6.4.3 换入页 329 第七章 缺页异常处理程序 335 7.1 总体流程 335 7.2 vma以外的错误地址 341 7.3 vma内的错误地址 346 7.3.1 handle_mm_fault()函数 348 7.3.2 请求调页 352 7.3.3 写时复制 358 7.4 处理非连续内存区访问 364
### 如何在 Linux 系统中配置和调整虚拟内存 #### 创建并启用新的 Swap 文件 可以通过创建一个新的文件来扩展系统的虚拟内存。以下是具体方法: 1. **创建一个用于 Swap 的文件** 使用 `dd` 命令创建一个大小固定的文件,例如 2GB 大小的文件: ```bash sudo dd if=/dev/zero of=/swapfile bs=1G count=2 ``` 2. **更改权限以保护安全** 设置该文件仅允许 root 用户访问,防止其他用户读取其内容: ```bash sudo chmod 600 /swapfile ``` 3. **格式化为 Swap 类型** 将新创建的文件标记为 Swap 空间: ```bash sudo mkswap /swapfile [^3] ``` 4. **激活 Swap 文件** 启用刚刚创建的 Swap 文件使其生效: ```bash sudo swapon /swapfile ``` 5. **验证 Swap 是否已成功加载** 查看当前系统中的 Swap 配置情况: ```bash free -h ``` 或者查看 `/proc/swaps` 文件确认。 --- #### 修改 Swappiness 参数优化性能 Swappiness 是控制内核使用 Swap 空间的倾向程度的一个参数。较低的值意味着更倾向于使用 RAM 而不是 Swap,而较高的值则会更多地依赖于 Swap 空间。 1. **临时修改 Swappiness 值** 如果希望立即测试不同的 Swappiness 数值而不重启系统,可以执行以下命令: ```bash sudo sysctl vm.swappiness=10 ``` 2. **永久保存 Swappiness 设置** 编辑 `/etc/sysctl.conf` 文件,在其中添加或更新如下行: ```bash vm.swappiness=10 ``` 完成编辑后重新加载配置使更改生效: ```bash sudo sysctl -p ``` 此操作有助于减少磁盘 I/O 并提高整体系统响应速度[^1]。 --- #### 关闭现有的 Swap 分区或文件 如果需要禁用某些特定的 Swap 设备或者完全停止使用 Swap 功能,则可按照下面的方法操作: 1. **停用单个 Swap 分区或文件** 对应目标设备运行下列指令即可将其移除掉: ```bash sudo swapoff /path/to/swapdevice_or_file ``` 2. **全局关闭所有 Swap** 若要一次性关闭整个系统的全部 Swap 支持,只需简单输入: ```bash sudo swapoff -a [^4] ``` 注意:完成上述动作之后记得再次检查状态确保已经正常卸载完毕。 --- #### 自动挂载 Swap 文件 为了让新增加的 Swap 文件能够在每次开机时自动被识别到,还需要对其进行持久化的设置。 打开 fstab 文件进行编辑: ```bash sudo nano /etc/fstab ``` 然后追加一行记录描述刚才建立的那个 Swap 文件路径及其属性: ``` /swapfile none swap defaults 0 0 ``` 最后保存退出,并通过 reboot 测试效果。 --- ### 总结 以上就是在 Linux 中管理和调节虚拟内存 (Swap) 的基本流程,包括新建、启动以及优化等方面的内容介绍。合理规划好这些环节能够有效提升服务器的工作效率和服务质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值